[1240] | 1 | package gov.va.med.edp.springframework.security.userdetails.vistalink;
|
---|
| 2 |
|
---|
| 3 | import gov.va.med.edp.vistalink.ConnectionFactoryLocator;
|
---|
| 4 | import gov.va.med.edp.vistalink.VistaLinkTemplate;
|
---|
| 5 | import gov.va.med.edp.springframework.security.userdetails.vistalink.VistaLinkAccessVerifyConnectionSpec;
|
---|
| 6 | import gov.va.med.vistalink.adapter.cci.VistaLinkConnection;
|
---|
| 7 | import gov.va.med.vistalink.adapter.spi.EMAdapterEnvironment;
|
---|
| 8 | import gov.va.med.vistalink.adapter.spi.VistaLinkManagedConnectionFactory;
|
---|
| 9 | import gov.va.med.vistalink.rpc.RpcRequest;
|
---|
| 10 | import gov.va.med.vistalink.rpc.RpcRequestFactory;
|
---|
| 11 | import gov.va.med.vistalink.rpc.RpcResponse;
|
---|
| 12 | import org.springframework.dao.DataAccessException;
|
---|
| 13 | import org.springframework.dao.DataAccessResourceFailureException;
|
---|
| 14 | import org.springframework.jca.cci.core.CciTemplate;
|
---|
| 15 | import org.springframework.jca.cci.core.ConnectionCallback;
|
---|
| 16 | import org.springframework.jca.support.LocalConnectionFactoryBean;
|
---|
| 17 | import org.springframework.util.Assert;
|
---|
| 18 |
|
---|
| 19 | import javax.resource.ResourceException;
|
---|
| 20 | import javax.resource.cci.Connection;
|
---|
| 21 | import javax.resource.cci.ConnectionFactory;
|
---|
| 22 | import java.net.InetAddress;
|
---|
| 23 | import java.sql.SQLException;
|
---|
| 24 | import java.util.ArrayList;
|
---|
| 25 | import java.util.List;
|
---|
| 26 |
|
---|
| 27 | public class Foo {
|
---|
| 28 | private static final String RPC_CONTEXT = "XUS KAAJEE WEB LOGON";
|
---|
| 29 | private static final String GET_USER_INFO_RPC = "XUS KAAJEE GET USER INFO";
|
---|
| 30 | private static final String LOGOUT_RPC_NAME = "XUS KAAJEE LOGOUT";
|
---|
| 31 |
|
---|
| 32 | public static void main(String[] args) throws Exception {
|
---|
| 33 | VistaLinkManagedConnectionFactory mcf = new VistaLinkManagedConnectionFactory() {
|
---|
| 34 | protected String getPrimaryStation() {
|
---|
| 35 | return "442";
|
---|
| 36 | }
|
---|
| 37 | };
|
---|
| 38 | mcf.setNonManagedHostIPAddress("vhaislbll2.vha.med.va.gov");
|
---|
| 39 | mcf.setNonManagedHostPort(8014);
|
---|
| 40 | mcf.setNonManagedAccessCode("7eGAcrar");
|
---|
| 41 | mcf.setNonManagedVerifyCode("wU67YUhe.");
|
---|
| 42 | mcf.setAdapterEnvironment(EMAdapterEnvironment.J2EE);
|
---|
| 43 |
|
---|
| 44 | LocalConnectionFactoryBean cfb = new LocalConnectionFactoryBean();
|
---|
| 45 | cfb.setManagedConnectionFactory(mcf);
|
---|
| 46 | cfb.afterPropertiesSet();
|
---|
| 47 |
|
---|
| 48 | final ConnectionFactory cf = (ConnectionFactory) cfb.getObject();
|
---|
| 49 |
|
---|
| 50 | // login
|
---|
| 51 | CciTemplate t = new CciTemplate(cf, new VistaLinkAccessVerifyConnectionSpec("442", "10VEHU", "VEHU20", InetAddress.getLocalHost().getHostAddress()));
|
---|
| 52 | RpcResponse response = (RpcResponse) t.execute(new ConnectionCallback() {
|
---|
| 53 | public Object doInConnection(Connection connection, ConnectionFactory connectionFactory) throws ResourceException, SQLException, DataAccessException {
|
---|
| 54 | Assert.isInstanceOf(VistaLinkConnection.class, connection);
|
---|
| 55 | VistaLinkConnection conn = (VistaLinkConnection) connection;
|
---|
| 56 |
|
---|
| 57 | try {
|
---|
| 58 | RpcRequest vReq = RpcRequestFactory.getRpcRequest();
|
---|
| 59 | vReq.setRpcContext(RPC_CONTEXT);
|
---|
| 60 | vReq.setRpcClientTimeOut(600);
|
---|
| 61 | vReq.setUseProprietaryMessageFormat(true);
|
---|
| 62 | vReq.setRpcName(GET_USER_INFO_RPC);
|
---|
| 63 | vReq.getParams().setParam(1, "string", InetAddress.getLocalHost().getHostAddress());
|
---|
| 64 | vReq.getParams().setParam(2, "string,", "EDIS Tracking Board");
|
---|
| 65 | return conn.executeRPC(vReq);
|
---|
| 66 | } catch (Exception e) {
|
---|
| 67 | e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
|
---|
| 68 | return null;
|
---|
| 69 | }
|
---|
| 70 | }
|
---|
| 71 | });
|
---|
| 72 | /*
|
---|
| 73 | * ; Result(0) is the users DUZ.
|
---|
| 74 | * ; Result(1) is the user name from the .01 field.
|
---|
| 75 | * ; Result(2) is the users full name from the name standard file.
|
---|
| 76 | * ; Result(3) is the FAMILY (LAST) NAME (or ^ if null)
|
---|
| 77 | * ; Result(4) is the GIVEN (FIRST) NAME (or ^ if null)
|
---|
| 78 | * ; Result(5) is the MIDDLE NAME (or ^ if null)
|
---|
| 79 | * ; Result(6) is the PREFIX (or ^ if null)
|
---|
| 80 | * ; Result(7) is the SUFFIX (or ^ if null)
|
---|
| 81 | * ; Result(8) is the DEGREE (or ^ if null)
|
---|
| 82 | * ; Result(9) is station # of the division that the user is working in.
|
---|
| 83 | * ; Result(10) is the station # of the parent facility for the login division
|
---|
| 84 | * ; Result(11) is the station # of the computer system "parent" from the KSP file.
|
---|
| 85 | * ; Result(12) is the IEN of the signon log entry
|
---|
| 86 | * ; Result(13) = # of permissible divisions
|
---|
| 87 | * ; Result(14-n) are the permissible divisions for user login, in the format:
|
---|
| 88 | * ; IEN of file 4^Station Name^Station Number^default? (1 or 0)
|
---|
| 89 | */
|
---|
| 90 | System.out.println("<-->");
|
---|
| 91 | System.out.println(response.getRawResponse());
|
---|
| 92 | System.out.println("<-->");
|
---|
| 93 | String result = response.getResults();
|
---|
| 94 | String[] results = result.split("\n");
|
---|
| 95 | System.out.println(results[0] + ":" + results[9] + ":" + results[12]);
|
---|
| 96 |
|
---|
| 97 | // call an RPC
|
---|
| 98 | VistaLinkTemplate t2 = new VistaLinkTemplate(new ConnectionFactoryLocator() {
|
---|
| 99 | public ConnectionFactory getConnectionFactory(String stationNumber) throws DataAccessResourceFailureException {
|
---|
| 100 | return cf;
|
---|
| 101 | }
|
---|
| 102 | });
|
---|
| 103 | // System.out.println(t2.rpcAsUser("442", "20012", "", ""));
|
---|
| 104 |
|
---|
| 105 | // logout
|
---|
| 106 | t2.setTimeOut(600);
|
---|
| 107 | List params = new ArrayList();
|
---|
| 108 | params.add(results[12]);
|
---|
| 109 | t2.rpcAsUser("442", "20012", RPC_CONTEXT, LOGOUT_RPC_NAME, params);
|
---|
| 110 | }
|
---|
| 111 | }
|
---|