Fix problem with unknown services ("forward" compatibility)
[jabaws.git] / webservices / compbio / ws / client / CmdHelper.java
1 /* Copyright (c) 2011 Peter Troshin\r
2  *  \r
3  *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0     \r
4  * \r
5  *  This library is free software; you can redistribute it and/or modify it under the terms of the\r
6  *  Apache License version 2 as published by the Apache Software Foundation\r
7  * \r
8  *  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
9  *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
10  *  License for more details.\r
11  * \r
12  *  A copy of the license is in apache_license.txt. It is also available here:\r
13  * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
14  * \r
15  * Any republication or derived work distributed in source code form\r
16  * must include this copyright and license notice.\r
17  */\r
18 package compbio.ws.client;\r
19 import static compbio.ws.client.Constraints.hostkey;\r
20 import static compbio.ws.client.Constraints.limitList;\r
21 import static compbio.ws.client.Constraints.listServices;\r
22 import static compbio.ws.client.Constraints.listServicesOld;\r
23 import static compbio.ws.client.Constraints.paramList;\r
24 import static compbio.ws.client.Constraints.presetList;\r
25 import static compbio.ws.client.Constraints.presetkey;\r
26 import static compbio.ws.client.Constraints.pseparator;\r
27 import static compbio.ws.client.Constraints.servicekey;\r
28 import static compbio.ws.client.Constraints.testKey;\r
29 \r
30 class CmdHelper {\r
31         /**\r
32          * Check whether presetList is set in the command line\r
33          * \r
34          * @param cmd\r
35          *            command line options\r
36          * @return true if presetList is found, false otherwise\r
37          */\r
38         static boolean listPresets(String[] cmd) {\r
39                 return keyFound(cmd, presetList);\r
40         }\r
41 \r
42         /**\r
43          * Checks whether limitList parameter is in the command line\r
44          * \r
45          * @param cmd\r
46          *            - command line options\r
47          * @return true if it is, false otherwise\r
48          */\r
49         static boolean listLimits(String[] cmd) {\r
50                 return keyFound(cmd, limitList);\r
51         }\r
52 \r
53         /**\r
54          * list available services\r
55          * \r
56          * @param cmd\r
57          * @return\r
58          */\r
59         static boolean listServices(String[] cmd) {\r
60                 return (keyFound(cmd, listServices) || keyFound(cmd, listServicesOld));\r
61         }\r
62 \r
63         /**\r
64          * tests service\r
65          * \r
66          * @param cmd\r
67          * @return\r
68          */\r
69         static boolean testService(String[] cmd) {\r
70                 return keyFound(cmd, testKey);\r
71         }\r
72 \r
73         /**\r
74          * Checks whether the key is in the command line\r
75          * \r
76          * @param cmd\r
77          * @param key\r
78          * @return true if it is, false otherwise\r
79          */\r
80         static boolean keyFound(String[] cmd, String key) {\r
81                 assert cmd != null && cmd.length > 0;\r
82                 assert key != null;\r
83 \r
84                 for (String c : cmd) {\r
85                         if (c.trim().equalsIgnoreCase(key)) {\r
86                                 return true;\r
87                         }\r
88                 }\r
89                 return false;\r
90         }\r
91 \r
92         /**\r
93          * Extracts preset name from the command line is any\r
94          * \r
95          * @param cmd\r
96          *            command line options\r
97          * @return presetName or null if no presets is defined\r
98          */\r
99         static String getPresetName(String[] cmd) {\r
100                 String preset = null;\r
101                 for (String c : cmd) {\r
102                         if (c.trim().toLowerCase().startsWith(presetkey + pseparator)) {\r
103                                 preset = c.substring(c.indexOf(pseparator) + 1);\r
104                                 break;\r
105                         }\r
106                 }\r
107                 return preset;\r
108         }\r
109 \r
110         /**\r
111          * Extracts service name from the command line\r
112          * \r
113          * @param cmd\r
114          *            command line options\r
115          * @return service name or null if it is not defined\r
116          */\r
117         public static String getServiceName(String[] cmd) {\r
118                 for (String c : cmd) {\r
119                         if (c.trim().toLowerCase().startsWith(servicekey + pseparator)) {\r
120                                 return c.substring(c.indexOf(pseparator) + 1);\r
121                         }\r
122                 }\r
123                 return null;\r
124         }\r
125 \r
126         /**\r
127          * Extracts host name from the command line\r
128          * \r
129          * @param cmd\r
130          *            command line options\r
131          * @return host name or null if it is not defined\r
132          */\r
133         public static String getHost(String[] cmd) {\r
134                 for (String c : cmd) {\r
135                         if (c.trim().toLowerCase().startsWith(hostkey + pseparator)) {\r
136                                 return c.substring(c.indexOf(pseparator) + 1);\r
137                         }\r
138                 }\r
139                 return null;\r
140         }\r
141 \r
142         /**\r
143          * Searches the command line keys in the array of parameters\r
144          * \r
145          * @param cmd\r
146          *            command line options\r
147          * @return true is the list of Parameters is requested, false otherwise\r
148          */\r
149         static boolean listParameters(String[] cmd) {\r
150                 return keyFound(cmd, paramList);\r
151         }\r
152 }\r