101 lines
3.8 KiB
Java
101 lines
3.8 KiB
Java
package ca.uhn.fhir.jpa.starter;
|
|
|
|
import ca.uhn.fhir.context.ConfigurationException;
|
|
import ca.uhn.fhir.jpa.config.BaseJavaConfigR4;
|
|
import ca.uhn.fhir.jpa.search.DatabaseBackedPagingProvider;
|
|
import ca.uhn.fhir.jpa.search.lastn.ElasticsearchSvcImpl;
|
|
import ca.uhn.fhir.jpa.starter.annotations.OnR4Condition;
|
|
import ca.uhn.fhir.jpa.starter.cql.StarterCqlR4Config;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
|
import org.springframework.context.annotation.*;
|
|
import org.springframework.core.env.ConfigurableEnvironment;
|
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.persistence.EntityManagerFactory;
|
|
import javax.sql.DataSource;
|
|
|
|
@Configuration
|
|
@Conditional(OnR4Condition.class)
|
|
@Import(StarterCqlR4Config.class)
|
|
public class FhirServerConfigR4 extends BaseJavaConfigR4 {
|
|
|
|
@Autowired
|
|
private DataSource myDataSource;
|
|
|
|
/**
|
|
* We override the paging provider definition so that we can customize
|
|
* the default/max page sizes for search results. You can set these however
|
|
* you want, although very large page sizes will require a lot of RAM.
|
|
*/
|
|
@Autowired
|
|
AppProperties appProperties;
|
|
|
|
@PostConstruct
|
|
public void initSettings() {
|
|
if(appProperties.getSearch_coord_core_pool_size() != null) {
|
|
setSearchCoordCorePoolSize(appProperties.getSearch_coord_core_pool_size());
|
|
}
|
|
if(appProperties.getSearch_coord_max_pool_size() != null) {
|
|
setSearchCoordMaxPoolSize(appProperties.getSearch_coord_max_pool_size());
|
|
}
|
|
if(appProperties.getSearch_coord_queue_capacity() != null) {
|
|
setSearchCoordQueueCapacity(appProperties.getSearch_coord_queue_capacity());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public DatabaseBackedPagingProvider databaseBackedPagingProvider() {
|
|
DatabaseBackedPagingProvider pagingProvider = super.databaseBackedPagingProvider();
|
|
pagingProvider.setDefaultPageSize(appProperties.getDefault_page_size());
|
|
pagingProvider.setMaximumPageSize(appProperties.getMax_page_size());
|
|
return pagingProvider;
|
|
}
|
|
|
|
@Autowired
|
|
private ConfigurableEnvironment configurableEnvironment;
|
|
|
|
@Override
|
|
@Bean()
|
|
public LocalContainerEntityManagerFactoryBean entityManagerFactory(ConfigurableListableBeanFactory theBeanFactory) {
|
|
LocalContainerEntityManagerFactoryBean retVal = super.entityManagerFactory(theBeanFactory);
|
|
retVal.setPersistenceUnitName("HAPI_PU");
|
|
|
|
try {
|
|
retVal.setDataSource(myDataSource);
|
|
} catch (Exception e) {
|
|
throw new ConfigurationException("Could not set the data source due to a configuration issue", e);
|
|
}
|
|
|
|
retVal.setJpaProperties(EnvironmentHelper.getHibernateProperties(configurableEnvironment, theBeanFactory));
|
|
return retVal;
|
|
}
|
|
|
|
@Bean
|
|
@Primary
|
|
public JpaTransactionManager hapiTransactionManager(EntityManagerFactory entityManagerFactory) {
|
|
JpaTransactionManager retVal = new JpaTransactionManager();
|
|
retVal.setEntityManagerFactory(entityManagerFactory);
|
|
return retVal;
|
|
}
|
|
|
|
@Bean()
|
|
public ElasticsearchSvcImpl elasticsearchSvc() {
|
|
if (EnvironmentHelper.isElasticsearchEnabled(configurableEnvironment)) {
|
|
String elasticsearchUrl = EnvironmentHelper.getElasticsearchServerUrl(configurableEnvironment);
|
|
if (elasticsearchUrl.startsWith("http")) {
|
|
elasticsearchUrl =elasticsearchUrl.substring(elasticsearchUrl.indexOf("://") + 3);
|
|
}
|
|
|
|
String elasticsearchUsername = EnvironmentHelper.getElasticsearchServerUsername(configurableEnvironment);
|
|
String elasticsearchPassword = EnvironmentHelper.getElasticsearchServerPassword(configurableEnvironment);
|
|
return new ElasticsearchSvcImpl(elasticsearchUrl, elasticsearchUsername, elasticsearchPassword);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
}
|