diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkBigBoardDao.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkBigBoardDao.java index ce82b39..afe054d 100644 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkBigBoardDao.java +++ b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkBigBoardDao.java @@ -1,7 +1,7 @@ package gov.va.med.edp.dao.rpc; import gov.va.med.edp.dao.TrackingDao; -import gov.va.med.edp.rpc.VistaLinkDaoSupport; +import gov.va.med.edp.vistalink.VistaLinkDaoSupport; import org.springframework.dao.DataAccessException; import java.util.ArrayList; diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkServerPackageVersionDao.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkServerPackageVersionDao.java index 527bc5e..26ca77a 100644 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkServerPackageVersionDao.java +++ b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkServerPackageVersionDao.java @@ -1,6 +1,6 @@ package gov.va.med.edp.dao.rpc; -import gov.va.med.edp.rpc.VistaLinkDaoSupport; +import gov.va.med.edp.vistalink.VistaLinkTemplate; import gov.va.med.edp.vo.BigBoardDebugInfoVO; import gov.va.med.edp.dao.ServerPackageVersionDao; @@ -9,6 +9,7 @@ import java.util.HashMap; import java.io.StringReader; import java.io.IOException; +import gov.va.med.vistalink.adapter.spi.VistaLinkServerInfo; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.InputSource; @@ -34,8 +35,10 @@ public class VistaLinkServerPackageVersionDao extends VistaLinkBigBoardDao imple } public BigBoardDebugInfoVO getVistaLinkConnectionInfo(String stationNumber) throws DataAccessException { - return getRpcTemplate().getVistaLinkConnectionInfo(stationNumber, EDPTRACKING_APPLICATION_USER); - } + VistaLinkServerInfo vistaLinkServerInfo = getRpcTemplate().getConnectionInfo(stationNumber, EDPTRACKING_APPLICATION_USER, VistaLinkTemplate.USER_TYPE_APPLICATION_PROXY); + BigBoardDebugInfoVO bbd = new BigBoardDebugInfoVO(vistaLinkServerInfo.getAddress().toString(), new Integer(vistaLinkServerInfo.getPort()).toString()); + return bbd; + } private String getVersion(String result) { Document doc = buildDocument(result); diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkTrackingDao.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkTrackingDao.java index 826724d..6b48d1f 100644 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkTrackingDao.java +++ b/java/tracking-server-core/src/main/java/gov/va/med/edp/dao/rpc/VistaLinkTrackingDao.java @@ -1,5 +1,6 @@ package gov.va.med.edp.dao.rpc; +import gov.va.med.edp.vistalink.VistaLinkDaoSupport; import org.springframework.dao.DataAccessException; import java.util.List; @@ -7,7 +8,6 @@ import java.util.Map; import java.util.ArrayList; import gov.va.med.edp.dao.TrackingDao; -import gov.va.med.edp.rpc.VistaLinkDaoSupport; public class VistaLinkTrackingDao extends VistaLinkDaoSupport implements TrackingDao { static final String EDPF_TRACKING_SYSTEM_CONTEXT = "EDPF TRACKING SYSTEM"; diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/ConnectionFactoryLocator.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/ConnectionFactoryLocator.java deleted file mode 100644 index 75e5bc5..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/ConnectionFactoryLocator.java +++ /dev/null @@ -1,22 +0,0 @@ -package gov.va.med.edp.rpc; - -import org.springframework.dao.DataAccessResourceFailureException; - -import javax.resource.cci.ConnectionFactory; - -/** - * Implementations of this interface retrieve JCA connection factories for a particular VistA station number. - * - * @see InstitutionMappingConnectionFactoryLocator - */ -public interface ConnectionFactoryLocator { - /** - * Retrieves a connection factory for the specified station number, or throws an exception. Never should return null. - * - * @param stationNumber - * @return the connection factory for the specified station number, or throw a data access resource exception if there is none. - * @throws DataAccessResourceFailureException - * - */ - ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException; -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/InstitutionMappingConnectionFactoryLocator.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/InstitutionMappingConnectionFactoryLocator.java deleted file mode 100644 index d5e410f..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/InstitutionMappingConnectionFactoryLocator.java +++ /dev/null @@ -1,39 +0,0 @@ -package gov.va.med.edp.rpc; - -import gov.va.med.vistalink.adapter.cci.VistaLinkConnectionFactory; -import gov.va.med.vistalink.institution.InstitutionMapNotInitializedException; -import gov.va.med.vistalink.institution.InstitutionMappingDelegate; -import gov.va.med.vistalink.institution.InstitutionMappingNotFoundException; -import org.springframework.dao.DataAccessResourceFailureException; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; -import javax.resource.cci.ConnectionFactory; -import java.text.MessageFormat; - -public class InstitutionMappingConnectionFactoryLocator implements ConnectionFactoryLocator { - private static final String NO_CONNECTION_FACTORY = "Unable to obtain connection factory for station ''{0}''"; - private static final String NO_CONNECTION_FACTORY_JNDI = "Unable to obtain connection factory for station ''{0}'' at JNDI name ''{1}''"; - - public ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException { - try { - String jndiConnectorName = InstitutionMappingDelegate.getJndiConnectorNameForInstitution( - stationNumber); - try { - Context ic = new InitialContext(); - VistaLinkConnectionFactory vistaLinkConnectionFactory = (VistaLinkConnectionFactory) ic.lookup(jndiConnectorName); - if (vistaLinkConnectionFactory == null) - throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY_JNDI, new Object[]{stationNumber, jndiConnectorName})); - return vistaLinkConnectionFactory; - } catch (NamingException e) { - throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY_JNDI, new Object[]{stationNumber, jndiConnectorName}), e); - } - } catch (InstitutionMappingNotFoundException e) { - throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY, new Object[]{stationNumber}), e); - } catch (InstitutionMapNotInitializedException e) { - throw new DataAccessResourceFailureException(MessageFormat.format(NO_CONNECTION_FACTORY, new Object[]{stationNumber}), e); - } - - } -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkDaoSupport.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkDaoSupport.java deleted file mode 100644 index bdbf6ab..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkDaoSupport.java +++ /dev/null @@ -1,34 +0,0 @@ -package gov.va.med.edp.rpc; - -import org.springframework.dao.support.DaoSupport; - -public class VistaLinkDaoSupport extends DaoSupport { - - private VistaLinkRpcTemplate rpcTemplate; - - protected void checkDaoConfig() throws IllegalArgumentException { - if (this.rpcTemplate == null) { - setConnectionFactoryLocator(new InstitutionMappingConnectionFactoryLocator()); - } - } - - protected VistaLinkRpcTemplate createRpcTemplate(ConnectionFactoryLocator connectionFactoryLocator) { - return new VistaLinkRpcTemplate(connectionFactoryLocator); - } - - public ConnectionFactoryLocator getConnectionFactoryLocator() { - return rpcTemplate.getConnectionFactoryLocator(); - } - - public void setConnectionFactoryLocator(ConnectionFactoryLocator connectionFactoryLocator) { - setRpcTemplate(createRpcTemplate(connectionFactoryLocator)); - } - - public VistaLinkRpcTemplate getRpcTemplate() { - return rpcTemplate; - } - - public void setRpcTemplate(VistaLinkRpcTemplate rpcTemplate) { - this.rpcTemplate = rpcTemplate; - } -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcDataRetrievalFailureException.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcDataRetrievalFailureException.java deleted file mode 100644 index cc010e7..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcDataRetrievalFailureException.java +++ /dev/null @@ -1,38 +0,0 @@ -package gov.va.med.edp.rpc; - -import gov.va.med.vistalink.adapter.record.VistaLinkFaultException; -import org.springframework.dao.DataRetrievalFailureException; - -public class VistaLinkRpcDataRetrievalFailureException extends DataRetrievalFailureException { - - private VistaLinkFaultException fault; - - public VistaLinkRpcDataRetrievalFailureException(VistaLinkFaultException fault) { - super(fault.getMessage(), fault); - this.fault = fault; - } - - public String getErrorCode() { - return fault.getErrorCode(); - } - - public String getErrorMessage() { - return fault.getErrorMessage(); - } - - public String getErrorType() { - return fault.getErrorType(); - } - - public String getFaultActor() { - return fault.getFaultActor(); - } - - public String getFaultCode() { - return fault.getFaultCode(); - } - - public String getFaultString() { - return fault.getFaultString(); - } -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcInvalidApiUsageException.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcInvalidApiUsageException.java deleted file mode 100644 index 0580f53..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcInvalidApiUsageException.java +++ /dev/null @@ -1,41 +0,0 @@ -package gov.va.med.edp.rpc; - -import org.springframework.dao.InvalidDataAccessApiUsageException; -import gov.va.med.vistalink.adapter.record.VistaLinkFaultException; - -/** - * TODO: document VistaLinkRpcInvalidApiUsageException - */ -public class VistaLinkRpcInvalidApiUsageException extends InvalidDataAccessApiUsageException { - - private VistaLinkFaultException fault; - - public VistaLinkRpcInvalidApiUsageException(VistaLinkFaultException fault) { - super(fault.getMessage()); - this.fault = fault; - } - - public String getErrorCode() { - return fault.getErrorCode(); - } - - public String getErrorMessage() { - return fault.getErrorMessage(); - } - - public String getErrorType() { - return fault.getErrorType(); - } - - public String getFaultActor() { - return fault.getFaultActor(); - } - - public String getFaultCode() { - return fault.getFaultCode(); - } - - public String getFaultString() { - return fault.getFaultString(); - } -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcPermissionDeniedException.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcPermissionDeniedException.java deleted file mode 100644 index 00bd764..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcPermissionDeniedException.java +++ /dev/null @@ -1,38 +0,0 @@ -package gov.va.med.edp.rpc; - -import gov.va.med.vistalink.adapter.record.VistaLinkFaultException; -import org.springframework.dao.PermissionDeniedDataAccessException; - -public class VistaLinkRpcPermissionDeniedException extends PermissionDeniedDataAccessException { - - private VistaLinkFaultException fault; - - public VistaLinkRpcPermissionDeniedException(VistaLinkFaultException fault) { - super(fault.getMessage(), fault); - this.fault = fault; - } - - public String getErrorCode() { - return fault.getErrorCode(); - } - - public String getErrorMessage() { - return fault.getErrorMessage(); - } - - public String getErrorType() { - return fault.getErrorType(); - } - - public String getFaultActor() { - return fault.getFaultActor(); - } - - public String getFaultCode() { - return fault.getFaultCode(); - } - - public String getFaultString() { - return fault.getFaultString(); - } -} diff --git a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcTemplate.java b/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcTemplate.java deleted file mode 100644 index 708eb65..0000000 --- a/java/tracking-server-core/src/main/java/gov/va/med/edp/rpc/VistaLinkRpcTemplate.java +++ /dev/null @@ -1,169 +0,0 @@ -package gov.va.med.edp.rpc; - -import gov.va.med.edp.vo.BigBoardDebugInfoVO; -import gov.va.med.exception.FoundationsException; -import gov.va.med.vistalink.adapter.cci.VistaLinkAppProxyConnectionSpec; -import gov.va.med.vistalink.adapter.cci.VistaLinkConnection; -import gov.va.med.vistalink.adapter.cci.VistaLinkConnectionSpec; -import gov.va.med.vistalink.adapter.cci.VistaLinkDuzConnectionSpec; -import gov.va.med.vistalink.adapter.record.LoginsDisabledFaultException; -import gov.va.med.vistalink.adapter.record.VistaLinkFaultException; -import gov.va.med.vistalink.adapter.spi.VistaLinkServerInfo; -import gov.va.med.vistalink.rpc.*; -import gov.va.med.vistalink.security.m.SecurityFaultException; -import gov.va.med.vistalink.security.m.SecurityDivisionDeterminationFaultException; -import org.apache.log4j.Logger; -import org.springframework.dao.*; -import org.springframework.jca.cci.core.CciTemplate; -import org.springframework.jca.cci.core.ConnectionCallback; -import org.springframework.util.Assert; - -import javax.resource.ResourceException; -import javax.resource.cci.Connection; -import javax.resource.cci.ConnectionFactory; -import java.sql.SQLException; -import java.text.MessageFormat; -import java.util.List; - -/** - * This is the central class in the rpc package. It simplifies the use of VistaLink RPCs and helps to avoid common errors. - * It executes core RPC workflow, leaving application code to provide RPC names and parameters and extract results. This - * class executes RPCs with VistaLink, initiating iteration over RPC results and catching VistaLink exceptions and - * translating them to the generic data access exception hierarchy defined in the org.springframework.dao package. - */ -public class VistaLinkRpcTemplate { - - private static final int USER_TYPE_DUZ = 1; - private static final int USER_TYPE_APPLICATION_PROXY = 2; - - static final int DEFAULT_TIMEOUT = 10000; - - private static Logger log = Logger.getLogger(VistaLinkRpcTemplate.class); - - private int timeOut = DEFAULT_TIMEOUT; - private String rpcContext; - private ConnectionFactoryLocator connectionFactoryLocator; - - private static final String UNABLE_TO_EXECUTE_RPC = "Unable to execute RPC"; - - public VistaLinkRpcTemplate(ConnectionFactoryLocator connectionFactoryLocator) { - this.connectionFactoryLocator = connectionFactoryLocator; - } - - public String rpcAsUser(final String division, final String duz, final String rpcContext, final String rpcName) throws DataAccessException { - return rpcAsUser(division, duz, rpcContext, rpcName, null); - } - - public String rpcAsUser(final String division, final String duz, final String rpcContext, final String rpcName, final List params) throws DataAccessException { - return rpc(division, duz, rpcContext, rpcName, params, USER_TYPE_DUZ); - } - - public String rpcAsApplication(final String division, final String applicationProxyName, final String rpcContext, final String rpcName) throws DataAccessException { - return rpcAsApplication(division, applicationProxyName, rpcContext, rpcName, null); - } - - public String rpcAsApplication(final String division, final String applicationProxyName, final String rpcContext, final String rpcName, final List params) throws DataAccessException { - return rpc(division, applicationProxyName, rpcContext, rpcName, params, USER_TYPE_APPLICATION_PROXY); - } - - public BigBoardDebugInfoVO getVistaLinkConnectionInfo(final String division, final String user) throws DataAccessException { - return getConnectionInfo(division, user, USER_TYPE_APPLICATION_PROXY); - } - - public String rpc(final String division, final String user, final String rpcContext, final String rpcName, final List params, final int userType) throws DataAccessException { - if (log.isDebugEnabled()) - log.debug(MessageFormat.format("''{0}'' called in context ''{1}'' by ''{2}'' at facility ''{3}'' with params: {4}", new Object[]{rpcName, rpcContext, user, division, params})); - - ConnectionFactory connectionFactory = connectionFactoryLocator.getConnectionFactory(division); - try { - CciTemplate t = new CciTemplate(connectionFactory, createConnectionSpec(division, user, userType)); - RpcResponse response = (RpcResponse) t.execute(new ConnectionCallback() { - public Object doInConnection(Connection connection, ConnectionFactory connectionFactory) throws ResourceException, SQLException, DataAccessException { - try { - Assert.isInstanceOf(VistaLinkConnection.class, connection); - VistaLinkConnection conn = (VistaLinkConnection) connection; - conn.setTimeOut(getTimeOut()); - - RpcRequest request = RpcRequestFactory.getRpcRequest(rpcContext, rpcName); - request.setUseProprietaryMessageFormat(true); - request.setXmlResponse(false); - - if (params != null) { - request.setParams(params); - } - - return conn.executeRPC(request); - } catch (IllegalArgumentException e) { - throw new InvalidDataAccessApiUsageException(UNABLE_TO_EXECUTE_RPC, e); - } catch (NoRpcContextFaultException e) { - throw new VistaLinkRpcInvalidApiUsageException(e); - } catch (RpcNotOkForProxyUseException e) { - throw new VistaLinkRpcInvalidApiUsageException(e); - } catch (RpcNotInContextFaultException e) { - throw new VistaLinkRpcPermissionDeniedException(e); - } catch (LoginsDisabledFaultException e) { - throw new DataAccessResourceFailureException(UNABLE_TO_EXECUTE_RPC, e); - } catch (SecurityDivisionDeterminationFaultException e) { - throw new VistaLinkRpcInvalidApiUsageException(e); - } catch (SecurityFaultException e) { - throw new VistaLinkRpcPermissionDeniedException(e); - } catch (VistaLinkFaultException e) { - throw new DataRetrievalFailureException(UNABLE_TO_EXECUTE_RPC, e); - } catch (FoundationsException e) { - throw new DataRetrievalFailureException(UNABLE_TO_EXECUTE_RPC, e); - } - } - }); - String result = response.getResults(); - if (log.isDebugEnabled()) { - log.debug(MessageFormat.format("''{0}'' returned: {1}", new Object[]{rpcName, result})); - } - return result; - } catch (IllegalArgumentException e) { - throw new InvalidDataAccessApiUsageException(UNABLE_TO_EXECUTE_RPC, e); - } - } - - private BigBoardDebugInfoVO getConnectionInfo(final String division, final String user, final int userType) throws DataAccessException { - VistaLinkConnection conn = null; - ConnectionFactory connectionFactory = connectionFactoryLocator.getConnectionFactory(division); - try { - conn = (VistaLinkConnection)connectionFactory.getConnection(createConnectionSpec(division, user, userType)); - } catch (ResourceException e) { - throw new DataAccessResourceFailureException("error getting connection info", e); - } - VistaLinkServerInfo vistaLinkServerInfo = conn.getConnectionInfo(); - BigBoardDebugInfoVO bbd = new BigBoardDebugInfoVO(vistaLinkServerInfo.getAddress().toString(), new Integer(vistaLinkServerInfo.getPort()).toString()); - return bbd; - } - - private VistaLinkConnectionSpec createConnectionSpec(String division, String user, int userType) { - switch (userType) { - case USER_TYPE_APPLICATION_PROXY: - return new VistaLinkAppProxyConnectionSpec(division, user); - case USER_TYPE_DUZ: - default: - return new VistaLinkDuzConnectionSpec(division, user); - } - } - - public int getTimeOut() { - return timeOut; - } - - public void setTimeOut(int timeOut) { - this.timeOut = timeOut; - } - - public String getRpcContext() { - return rpcContext; - } - - public void setRpcContext(String rpcContext) { - this.rpcContext = rpcContext; - } - - public ConnectionFactoryLocator getConnectionFactoryLocator() { - return connectionFactoryLocator; - } -} diff --git a/java/tracking-server-main/src/main/webapp/WEB-INF/config/data-access-config.xml b/java/tracking-server-main/src/main/webapp/WEB-INF/config/data-access-config.xml index 2f5b94d..4a2803b 100644 --- a/java/tracking-server-main/src/main/webapp/WEB-INF/config/data-access-config.xml +++ b/java/tracking-server-main/src/main/webapp/WEB-INF/config/data-access-config.xml @@ -1,9 +1,16 @@ - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/java/tracking-server-main/src/main/webapp/WEB-INF/config/security-config.xml b/java/tracking-server-main/src/main/webapp/WEB-INF/config/security-config.xml index fb0287a..b774c53 100644 --- a/java/tracking-server-main/src/main/webapp/WEB-INF/config/security-config.xml +++ b/java/tracking-server-main/src/main/webapp/WEB-INF/config/security-config.xml @@ -32,7 +32,7 @@ - + - - - - \ No newline at end of file diff --git a/java/tracking-server-main/src/main/webapp/WEB-INF/config/vistalink-config.xml b/java/tracking-server-main/src/main/webapp/WEB-INF/config/vistalink-config.xml index bf90d1b..00ab000 100644 --- a/java/tracking-server-main/src/main/webapp/WEB-INF/config/vistalink-config.xml +++ b/java/tracking-server-main/src/main/webapp/WEB-INF/config/vistalink-config.xml @@ -4,13 +4,23 @@ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd"> + + + + + + + + - - + + + - - + + diff --git a/java/tracking-server-vista/src/main/java/gov/va/med/edp/vistalink/VistaLinkTemplate.java b/java/tracking-server-vista/src/main/java/gov/va/med/edp/vistalink/VistaLinkTemplate.java index 4845150..ed92d0f 100644 --- a/java/tracking-server-vista/src/main/java/gov/va/med/edp/vistalink/VistaLinkTemplate.java +++ b/java/tracking-server-vista/src/main/java/gov/va/med/edp/vistalink/VistaLinkTemplate.java @@ -3,9 +3,11 @@ package gov.va.med.edp.vistalink; import gov.va.med.exception.FoundationsException; import gov.va.med.vistalink.adapter.cci.VistaLinkAppProxyConnectionSpec; import gov.va.med.vistalink.adapter.cci.VistaLinkConnection; +import gov.va.med.vistalink.adapter.cci.VistaLinkConnectionSpec; import gov.va.med.vistalink.adapter.cci.VistaLinkDuzConnectionSpec; import gov.va.med.vistalink.adapter.record.LoginsDisabledFaultException; import gov.va.med.vistalink.adapter.record.VistaLinkFaultException; +import gov.va.med.vistalink.adapter.spi.VistaLinkServerInfo; import gov.va.med.vistalink.rpc.*; import gov.va.med.vistalink.security.m.SecurityFaultException; import org.springframework.dao.*; @@ -31,6 +33,9 @@ import java.util.List; */ public class VistaLinkTemplate { + public static final int USER_TYPE_DUZ = 1; + public static final int USER_TYPE_APPLICATION_PROXY = 2; + static final int DEFAULT_TIMEOUT = 10000; private static Logger log = LoggerFactory.getLogger(VistaLinkTemplate.class); @@ -141,4 +146,26 @@ public class VistaLinkTemplate { // } // return paramList; // } + + public VistaLinkServerInfo getConnectionInfo(final String division, final String user, final int userType) throws DataAccessException { + VistaLinkConnection conn = null; + ConnectionFactory connectionFactory = connectionFactoryLocator.getConnectionFactory(division); + try { + conn = (VistaLinkConnection) connectionFactory.getConnection(createConnectionSpec(division, user, userType)); + } catch (ResourceException e) { + throw new DataAccessResourceFailureException("error getting connection info", e); + } + VistaLinkServerInfo vistaLinkServerInfo = conn.getConnectionInfo(); + return vistaLinkServerInfo; + } + + private VistaLinkConnectionSpec createConnectionSpec(String division, String user, int userType) { + switch (userType) { + case USER_TYPE_APPLICATION_PROXY: + return new VistaLinkAppProxyConnectionSpec(division, user); + case USER_TYPE_DUZ: + default: + return new VistaLinkDuzConnectionSpec(division, user); + } + } }