source: EDIS/trunk/java/vistalink-tester/src/main/java/gov/va/med/edp/VistaLinkTester.java@ 1262

Last change on this file since 1262 was 1262, checked in by Solomon Blaz, 13 years ago

fleshed out VistALink Tester program

File size: 5.6 KB
Line 
1package gov.va.med.edp;
2
3import gov.va.med.edp.vistalink.VistaLinkTemplate;
4import gov.va.med.edp.vistalink.locator.VistaLinkConnectorConfig;
5import gov.va.med.edp.vistalink.locator.VistaLinkConnectorConfigConnectionFactoryLocator;
6import gov.va.med.vistalink.adapter.cci.VistaLinkResourceException;
7import joptsimple.OptionException;
8import joptsimple.OptionParser;
9import joptsimple.OptionSet;
10import joptsimple.OptionSpec;
11import org.springframework.dao.DataAccessResourceFailureException;
12
13import java.io.Console;
14import java.io.IOException;
15import java.util.ArrayList;
16import java.util.Arrays;
17import java.util.HashSet;
18import java.util.List;
19
20import static java.util.Arrays.asList;
21
22public class VistaLinkTester {
23 public static void main(String[] args) throws IOException {
24 OptionParser parser = new OptionParser();
25 parser.acceptsAll(asList("?", "help"), "Print usage information");
26 OptionSpec<String> hostOption = parser.acceptsAll(asList("S", "server", "host"), "Hostname or IP where VistALink is listening").withRequiredArg().ofType(String.class);
27 OptionSpec<Integer> portOption = parser.acceptsAll(asList("P", "port"), "Port where VistALink is listening").withRequiredArg().ofType(Integer.class);
28 OptionSpec<String> divisionOption = parser.acceptsAll(asList("D", "division", "station-num"), "Station Number").withRequiredArg().ofType(String.class);
29 OptionSpec<String> duzOption = parser.acceptsAll(asList("U", "DUZ")).withRequiredArg().ofType(String.class);
30 OptionSpec<String> rpcContextOption = parser.acceptsAll(asList("C", "context", "rpc-context"), "RPC Context").withRequiredArg().ofType(String.class);
31 OptionSpec<String> rpcNameOption = parser.acceptsAll(asList("N", "name", "rpc-name"), "RPC Name").withRequiredArg().ofType(String.class);
32
33 try {
34 OptionSet options = parser.parse(args);
35
36 if (options.has("?") || options.has("help")) {
37 System.out.println("Usage:");
38 parser.printHelpOn(System.out);
39 System.exit(0);
40 }
41
42 Console console = System.console();
43
44 String host = options.has(hostOption) ? hostOption.value(options) : console.readLine("Host: ");
45 int port = options.has(portOption) ? portOption.value(options) : Integer.parseInt(console.readLine("Port: "));
46 String division = options.has(divisionOption) ? divisionOption.value(options) : console.readLine("Station Number: ");
47
48 char[] accessCodeChars = console.readPassword("Access: ");
49 char[] verifyCodeChars = console.readPassword("Verify: ");
50
51 String accessCode = new String(accessCodeChars);
52 String verifyCode = new String(verifyCodeChars);
53
54 String duz = options.has(duzOption) ? duzOption.value(options) : console.readLine("DUZ: ");
55 String rpcContext = options.has(rpcContextOption) ? rpcContextOption.value(options) : console.readLine("RPC Context: ");
56 String rpcName = options.has(rpcNameOption) ? rpcNameOption.value(options) : console.readLine("RPC Name: ");
57
58 if (rpcContext == null) rpcContext = "";
59
60 VistaLinkTester tester = new VistaLinkTester(host, port, division, accessCode, verifyCode);
61
62 System.out.println("Enter RPC Parameters (^ when finished)");
63
64 List<String> params = new ArrayList<String>();
65 int i = 1;
66 boolean done = false;
67 while (!done) {
68 String param = console.readLine("RPC Param " + i + ": ");
69 if (param.equalsIgnoreCase("^")) {
70 done = true;
71 } else {
72 params.add(param);
73 i++;
74 }
75 }
76
77 System.out.println("Executing vlink://" + division + "@" + host + ":" + port + "/" + rpcContext + "/" + rpcName + formatRpcParams(params));
78
79 System.out.println(tester.execute(duz, rpcContext, rpcName, params));
80 } catch (OptionException e) {
81 System.out.println(e.getLocalizedMessage());
82 System.out.println("Usage:");
83 parser.printHelpOn(System.out);
84 System.exit(1);
85 } catch (gov.va.med.edp.vistalink.VistaLinkDataRetrievalFailureException e) {
86 System.out.println(e.getMessage());
87 } catch (Throwable t) {
88 t.printStackTrace();
89 }
90 }
91
92 private static String formatRpcParams(List params) {
93 StringBuilder b = new StringBuilder();
94 if (!params.isEmpty()) b.append("?");
95 for (int i = 0; i < params.size(); i++) {
96 b.append("[");
97 b.append(i + 1);
98 b.append("]=");
99 b.append(params.get(i).toString());
100 if (i < params.size() - 1) {
101 b.append("&");
102 }
103 }
104 return b.toString();
105 }
106
107 private String division;
108
109 private VistaLinkTemplate t;
110
111 public VistaLinkTester(String host, int port, String division, String accessCode, String verifyCode) {
112 this.division = division;
113
114 HashSet connectors = new HashSet();
115 connectors.add(new VistaLinkConnectorConfig(division, "VISTALINK TESTER", host, port, accessCode, verifyCode));
116
117 VistaLinkConnectorConfigConnectionFactoryLocator l = new VistaLinkConnectorConfigConnectionFactoryLocator();
118 l.setConnectors(connectors);
119
120 t = new VistaLinkTemplate(l);
121 }
122
123 public String execute(String duz, String rpcContext, String rpcName, List params) {
124 if (params.size() > 0)
125 return t.rpcAsUser(this.division, duz, rpcContext, rpcName, params);
126 else
127 return t.rpcAsUser(this.division, duz, rpcContext, rpcName);
128 }
129}
Note: See TracBrowser for help on using the repository browser.