package fr.openwide.core.jpa.config.spring.provider;
import java.util.List;
import javax.persistence.spi.PersistenceProvider;
import javax.sql.DataSource;
import org.apache.lucene.analysis.Analyzer;
import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.cache.spi.RegionFactory;
import org.hibernate.dialect.Dialect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
public class DefaultJpaConfigurationProvider implements IJpaConfigurationProvider {
@Autowired
private List<JpaPackageScanProvider> jpaPackageScanProviders;
@Value("${${db.type}.db.dialect}")
private Class<Dialect> dialect;
@Value("${hibernate.hbm2ddl.auto}")
private String hbm2Ddl;
@Value("${hibernate.hbm2ddl.import_files}")
private String hbm2DdlImportFiles;
@Value("${hibernate.defaultBatchSize}")
private Integer defaultBatchSize;
@Value("${lucene.index.path}")
private String hibernateSearchIndexBase;
@Value("${lucene.index.inRam:false}")
private boolean isHibernateSearchIndexInRam;
@Value("${hibernate.search.analyzer:}") // Defaults to null
private Class<? extends Analyzer> hibernateSearchDefaultAnalyzer;
@Value("${hibernate.search.indexing_strategy:}") // Defaults to an empty string
private String hibernateSearchIndexingStrategy;
@Value("#{dataSource}")
private DataSource dataSource;
@Value("${hibernate.ehCache.configurationLocation}")
private String ehCacheConfiguration;
@Value("${hibernate.ehCache.singleton}")
private boolean ehCacheSingleton;
@Value("${hibernate.ehCache.regionFactory:}")
private Class<? extends RegionFactory> ehCacheRegionFactory;
@Value("${hibernate.queryCache.enabled}")
private boolean queryCacheEnabled;
@Autowired(required=false)
private PersistenceProvider persistenceProvider;
@Value("${javax.persistence.validation.mode}")
private String validationMode;
@Value("${hibernate.implicit_naming_strategy}")
private Class<ImplicitNamingStrategy> implicitNamingStrategy;
@Value("${hibernate.physical_naming_strategy}")
private Class<PhysicalNamingStrategy> physicalNamingStrategy;
@Value("${hibernate.id.new_generator_mappings}")
private Boolean isNewGeneratorMappingsEnabled;
@Value("${hibernate.create_empty_composites.enabled}")
private boolean createEmptyCompositesEnabled;
@Override
public List<JpaPackageScanProvider> getJpaPackageScanProviders() {
return jpaPackageScanProviders;
}
@Override
public Class<Dialect> getDialect() {
return dialect;
}
@Override
public String getHbm2Ddl() {
return hbm2Ddl;
}
@Override
public String getHbm2DdlImportFiles() {
return hbm2DdlImportFiles;
}
@Override
public Integer getDefaultBatchSize() {
return defaultBatchSize;
}
@Override
public String getHibernateSearchIndexBase() {
return hibernateSearchIndexBase;
}
@Override
public boolean isHibernateSearchIndexInRam() {
return isHibernateSearchIndexInRam;
}
@Override
public Class<? extends Analyzer> getHibernateSearchDefaultAnalyzer() {
return hibernateSearchDefaultAnalyzer;
}
@Override
public String getHibernateSearchIndexingStrategy() {
return hibernateSearchIndexingStrategy;
}
@Override
public DataSource getDataSource() {
return dataSource;
}
@Override
public String getEhCacheConfiguration() {
return ehCacheConfiguration;
}
@Override
public boolean isEhCacheSingleton() {
return ehCacheSingleton;
}
@Override
public Class<? extends RegionFactory> getEhCacheRegionFactory() {
return ehCacheRegionFactory;
}
@Override
public boolean isQueryCacheEnabled() {
return queryCacheEnabled;
}
@Override
public PersistenceProvider getPersistenceProvider() {
return persistenceProvider;
}
@Override
public String getValidationMode() {
return validationMode;
}
@Override
public Class<? extends ImplicitNamingStrategy> getImplicitNamingStrategy() {
return implicitNamingStrategy;
}
@Override
public Class<? extends PhysicalNamingStrategy> getPhysicalNamingStrategy() {
return physicalNamingStrategy;
}
@Override
public Boolean isNewGeneratorMappingsEnabled() {
return isNewGeneratorMappingsEnabled;
}
@Override
public boolean isCreateEmptyCompositesEnabled() {
return createEmptyCompositesEnabled;
}
}