1 package eu
.etaxonomy
.cdm
.database
;
4 import java
.util
.HashMap
;
7 import org
.apache
.log4j
.Logger
;
8 import org
.springframework
.beans
.factory
.xml
.XmlBeanFactory
;
9 import org
.springframework
.core
.io
.FileSystemResource
;
10 import org
.springframework
.stereotype
.Component
;
12 import eu
.etaxonomy
.cdm
.common
.CdmUtils
;
15 public class DataSourceBeanLoader
{
17 private static final Logger logger
= Logger
.getLogger(DataSourceBeanLoader
.class);
19 private static final String DATASOURCE_BEANDEF_FILE
= "datasources.xml";
20 private static final String DATASOURCE_BEANDEF_PATH
= CdmUtils
.getCdmHomeDir().getPath();
22 private static String userdefinedBeanDefinitionFile
= null;
24 public void setBeanDefinitionFile(String filename
){
25 userdefinedBeanDefinitionFile
= filename
;
32 public static <T
> Map
<String
, T
> loadDataSources(final Class
<T
> requiredType
) {
34 Map
<String
, T
> dataSources
= new HashMap
<String
, T
>();
35 String path
= DATASOURCE_BEANDEF_PATH
+ (userdefinedBeanDefinitionFile
== null ? DATASOURCE_BEANDEF_FILE
: userdefinedBeanDefinitionFile
);
37 logger
.info("loading DataSourceBeans from: " + path
);
38 FileSystemResource file
= new FileSystemResource(path
);
39 XmlBeanFactory beanFactory
= new XmlBeanFactory(file
);
41 for(String beanName
: beanFactory
.getBeanDefinitionNames()){
42 T datasource
= beanFactory
.getBean(beanName
, requiredType
);
43 dataSources
.put(beanName
, datasource
);
45 return (Map
<String
, T
>) dataSources
;