source: EDIS/trunk/java/tracking-server-vista/src/main/java/gov/va/med/edp/vistalink/locator/VistaLinkConnectorConfigConnectionFactoryLocator.java@ 1227

Last change on this file since 1227 was 1227, checked in by George Lilly, 13 years ago

initial load of EDIS 1.0

File size: 4.2 KB
Line 
1package gov.va.med.edp.vistalink.locator;
2
3import gov.va.med.edp.vistalink.ConnectionFactoryLocator;
4import gov.va.med.edp.vistalink.adapter.spi.VistaLinkManagedConnectionFactory;
5import org.springframework.beans.factory.BeanFactory;
6import org.springframework.beans.factory.config.BeanDefinition;
7import org.springframework.beans.factory.support.BeanDefinitionBuilder;
8import org.springframework.beans.factory.support.DefaultListableBeanFactory;
9import org.springframework.dao.DataAccessResourceFailureException;
10import org.springframework.jca.support.LocalConnectionFactoryBean;
11
12import javax.resource.cci.ConnectionFactory;
13import java.util.HashMap;
14import java.util.Map;
15import java.util.Set;
16import java.util.Iterator;
17
18public class VistaLinkConnectorConfigConnectionFactoryLocator implements ConnectionFactoryLocator {
19
20 private static final String VLJ_CONNECTOR_PREFIX = "vljConnector";
21
22 private Map/*<String, VistaLinkConnectorConfig>*/ connectors = new HashMap/*<String, VistaLinkConnectorConfig>*/();
23 private BeanFactoryConnectionFactoryLocator locator = new BeanFactoryConnectionFactoryLocator();
24
25 public VistaLinkConnectorConfigConnectionFactoryLocator() {
26 locator.setPrefix(VLJ_CONNECTOR_PREFIX);
27 locator.setBeanFactory(createBeanFactory());
28 }
29
30 private BeanFactory createBeanFactory() {
31 DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
32 for (Iterator i = connectors.values().iterator(); i.hasNext(); ) {
33 VistaLinkConnectorConfig connector = (VistaLinkConnectorConfig) i.next();
34 beanFactory.registerBeanDefinition(getManagedConnectionFactoryBeanName(connector), createManagedConnectionFactoryBeanDefinition(connector));
35 beanFactory.registerBeanDefinition(getConnectionFactoryBeanName(connector), createConnectionFactoryBeanDefinition(connector));
36 }
37 return beanFactory;
38 }
39
40 private String getConnectionFactoryBeanName(VistaLinkConnectorConfig connector) {
41 return VLJ_CONNECTOR_PREFIX + connector.getPrimaryStation();
42 }
43
44 private BeanDefinition createManagedConnectionFactoryBeanDefinition(VistaLinkConnectorConfig connector) {
45 BeanDefinitionBuilder managedConnectionFactoryBeanDefBuilder = BeanDefinitionBuilder.rootBeanDefinition(VistaLinkManagedConnectionFactory.class);
46 managedConnectionFactoryBeanDefBuilder.addPropertyValue("stationNumber", connector.getPrimaryStation());
47 managedConnectionFactoryBeanDefBuilder.addPropertyValue("nonManagedHostIPAddress", connector.getHost());
48 managedConnectionFactoryBeanDefBuilder.addPropertyValue("nonManagedHostPort", new Integer(connector.getPort()));
49 managedConnectionFactoryBeanDefBuilder.addPropertyValue("nonManagedAccessCode", connector.getAccessCode());
50 managedConnectionFactoryBeanDefBuilder.addPropertyValue("nonManagedVerifyCode", connector.getVerifyCode());
51 return managedConnectionFactoryBeanDefBuilder.getBeanDefinition();
52 }
53
54 private BeanDefinition createConnectionFactoryBeanDefinition(VistaLinkConnectorConfig connector) {
55 BeanDefinitionBuilder localConnectionFactoryBeanDefBuilder = BeanDefinitionBuilder.rootBeanDefinition(LocalConnectionFactoryBean.class);
56 localConnectionFactoryBeanDefBuilder.addPropertyReference("managedConnectionFactory", getManagedConnectionFactoryBeanName(connector));
57 return localConnectionFactoryBeanDefBuilder.getBeanDefinition();
58 }
59
60 private String getManagedConnectionFactoryBeanName(VistaLinkConnectorConfig connector) {
61 return "vljManagedConnectionFactory" + connector.getPrimaryStation();
62 }
63
64 public ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException {
65 return locator.getConnectionFactory(stationNumber);
66 }
67
68 public void setConnectors(Set/*<VistaLinkConnectorConfig>*/ connectors) {
69 for (Iterator i = connectors.iterator(); i.hasNext(); ) {
70 VistaLinkConnectorConfig connector = (VistaLinkConnectorConfig) i.next();
71 this.connectors.put(connector.getPrimaryStation(), connector);
72 }
73 locator.setBeanFactory(createBeanFactory());
74 }
75}
Note: See TracBrowser for help on using the repository browser.