Mercurial > repos > ganjoo > webservice_toolsuite
comparison WebServiceToolWorkflow/generateClient1.py~ @ 0:e7482c82796e default tip
Migrated tool version 1.0.0 from old tool shed archive to new tool shed repository
author | ganjoo |
---|---|
date | Tue, 07 Jun 2011 17:34:26 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e7482c82796e |
---|---|
1 import warnings | |
2 | |
3 with warnings.catch_warnings(): | |
4 warnings.simplefilter("ignore") | |
5 import platform | |
6 | |
7 from jpype._jpackage import JPackage | |
8 from jpype import * | |
9 import os.path | |
10 import sys | |
11 import string | |
12 from edit_tool_conf1 import * | |
13 | |
14 class ClientGenerator1(object): | |
15 | |
16 #instantiate a client for one time invocation of the selected method of a Web service | |
17 def __init__(self,url,methodName,resourceName,fileName): | |
18 self.methodName = methodName | |
19 self.resourceName=resourceName | |
20 self.Ofile = fileName | |
21 #replace '__tilda__' with '~' | |
22 if(url.find('__tilda__')>-1): | |
23 ulist = url.split('__tilda__') | |
24 url = '~'.join(ulist) | |
25 self.url = url | |
26 | |
27 #replace '**' with ' ' | |
28 def formatString(self,string): | |
29 l = string.split(' ') | |
30 return '**'.join(l) | |
31 | |
32 #generates a xml describing a client capable of invoking a Web service described | |
33 #using a WADL document. Places this xml tool under ./clients/ | |
34 def wadlClient(self): | |
35 ##parse wadl | |
36 #javahome = os.environ.get('JAVA_HOME') | |
37 #galaxyhome=os.environ.get('GALAXY_HOME') | |
38 #classpath= galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/bin' | |
39 #jarpath = galaxyhome + '/tools/WebServiceToolWorkflow/ParserForWADL/lib/' | |
40 #machine = platform.machine() | |
41 | |
42 #if machine == 'x86_64' : | |
43 # print 'a' | |
44 # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
45 #elif machine == 'i686' : | |
46 # print 'b' | |
47 # startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
48 #elif machine == 'sun4u' : | |
49 # startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
50 #else : | |
51 # print 'c' | |
52 # System.exit("Could not identify machine, please specify path to libjvm.so") | |
53 | |
54 | |
55 pkg=JPackage('lsdis') | |
56 urlToPass=java.net.URL(self.url) | |
57 wadlUrl = self.url | |
58 | |
59 webserviceId = self.methodName | |
60 resUrl = self.resourceName | |
61 | |
62 urls = [] | |
63 methods = [] | |
64 params = [] | |
65 docs = [] | |
66 | |
67 WADLParserDriver=pkg.WADLParserDriver | |
68 wPD=WADLParserDriver() | |
69 wPD.parse(urlToPass) | |
70 urls = wPD.getUrl() | |
71 methods = wPD.getCompleteMethodList() | |
72 | |
73 #write into the output file information about the method and Web service to be invoked. | |
74 f=open(self.Ofile,'w') | |
75 f.write(wadlUrl) | |
76 f.write('\n'+ resUrl) | |
77 f.write('\n'+webserviceId) | |
78 | |
79 | |
80 #get parameters for the selected method of the Web service | |
81 i=0 | |
82 for method in methods: | |
83 x = str(method.getId()) | |
84 y = str(urls.get(i)) | |
85 if x == webserviceId : | |
86 f.write('method matched') | |
87 if y == resUrl : | |
88 f.write('res matched') | |
89 params = method.getRequest().getParams() | |
90 break | |
91 i=i+1 | |
92 | |
93 galaxyhome=os.environ.get('GALAXY_HOME') | |
94 | |
95 #./clients/ClientCount.xml keeps the count of the clients/tools currently registered in Galaxy for Web service invocation. | |
96 #read the count and increment it. | |
97 clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') | |
98 clientCountFile.readline() | |
99 clientCountStr = clientCountFile.read(1) | |
100 clientCount=string.atoi(clientCountStr) | |
101 clientCount=clientCount+1 | |
102 clientCountFile.close() | |
103 | |
104 clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') | |
105 | |
106 clientCountFile.write('<count> \n') | |
107 clientCountFile.write(str(clientCount)) | |
108 clientCountFile.write('</count> \n') | |
109 | |
110 #include the count in the tool's name and id to uniquely identify it. | |
111 clientName = 'client_'+ str(clientCount) | |
112 | |
113 #create a new xml file under ./clients/ | |
114 clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') | |
115 clientXml.seek(0,0) | |
116 | |
117 #write the tool id, name and description | |
118 clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +' ">\n') | |
119 clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') | |
120 | |
121 #the one-time invocation tool/client for a REST Web service invokes ./clients/client_1.py to invoke the Web service | |
122 #write the command tag to specify the arguments passed to this client_1.py | |
123 clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) | |
124 | |
125 j=0 | |
126 | |
127 for param in params: | |
128 if param.isRequired(): | |
129 clientXml.write(' '+self.formatString(param.getName())) | |
130 clientXml.write(' $param' + str(j)) | |
131 j=j+1 | |
132 clientXml.write(' #else #client_1.py'+' $output ' +resUrl) | |
133 j=0 | |
134 for param in params: | |
135 if param.isRequired(): | |
136 clientXml.write(' '+self.formatString(param.getName())) | |
137 clientXml.write(' $param' + str(j)) | |
138 j=j+1 | |
139 | |
140 for param in params: | |
141 if not param.isRequired(): | |
142 clientXml.write(' '+self.formatString(param.getName())) | |
143 clientXml.write(' $cond_source.param' + str(j)) | |
144 j=j+1 | |
145 clientXml.write(' #end if \n</command>\n') | |
146 | |
147 #start writing inputs | |
148 clientXml.write(' <inputs>\n') | |
149 | |
150 #create a param for each required parameter described in the WADL. Check if defaults and options are specified in the WADL | |
151 j=0 | |
152 for param in params: | |
153 if param.isRequired(): | |
154 pName = param.getName() | |
155 for doc in param.getDocs(): | |
156 if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": | |
157 pName = doc.getInnerText() | |
158 if param.getOptions().size()==0: | |
159 clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') | |
160 if not param.getDefault1() == None: | |
161 clientXml.write('value="'+param.getDefault1()+'" ') | |
162 clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') | |
163 j=j+1 | |
164 else: | |
165 clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) | |
166 for option in param.getOptions(): | |
167 clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') | |
168 if option.getName() == param.getDefault1(): | |
169 clientXml.write('selected="true"') | |
170 clientXml.write('>'+option.getName()+'</option>\n ') | |
171 clientXml.write(' </param> \n') | |
172 j=j+1 | |
173 | |
174 #create a conditional param for each optional parameter described in the WADL. | |
175 clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Show Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') | |
176 clientXml.write('<when value="no"> \n </when>') | |
177 clientXml.write('<when value="yes"> \n') | |
178 for param in params: | |
179 if not param.isRequired(): | |
180 pName = param.getName() | |
181 for doc in param.getDocs(): | |
182 if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": | |
183 pName = doc.getInnerText() | |
184 if param.getOptions().size()==0: | |
185 clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') | |
186 if not param.getDefault1() == None: | |
187 clientXml.write('value="'+param.getDefault1()+'" ') | |
188 clientXml.write('type="text" label="Enter '+pName+'" help="see tip below" />\n') | |
189 j=j+1 | |
190 else: | |
191 clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+pName+'" help="see tip below">\n' ) | |
192 for option in param.getOptions(): | |
193 clientXml.write(' <option value="'+self.formatString(option.getName())+'" ') | |
194 if option.getName() == param.getDefault1(): | |
195 clientXml.write('selected="true"') | |
196 clientXml.write('>'+option.getName()+'</option>\n ') | |
197 clientXml.write(' </param> \n') | |
198 j=j+1 | |
199 | |
200 | |
201 clientXml.write('</when>\n</conditional>') | |
202 clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') | |
203 | |
204 #write information about each parameter in the help section | |
205 clientXml.write(' <help>\n') | |
206 | |
207 clientXml.write('Replace white space with ** in all parameter values\n') | |
208 | |
209 for param in params: | |
210 if param.isRequired(): | |
211 pName = param.getName() | |
212 for doc in param.getDocs(): | |
213 if doc.getTitle()=="prompt" or doc.getTitle()=="Prompt" or doc.getTitle()=="PROMPT": | |
214 pName = doc.getInnerText() | |
215 clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ pName +' type is ' + param.getType()+'\n') | |
216 | |
217 clientXml.write(' </help>\n</tool>') | |
218 | |
219 #adds the newly created tool to tool_conf.xml in Galaxy under the 'Web Service Tools' section. | |
220 editor = editToolConfig1() | |
221 editor.addTool(clientName) | |
222 | |
223 ##later add help feature | |
224 | |
225 def sawadlClient(self): | |
226 ##parse sawadl | |
227 javahome = os.environ.get('JAVA_HOME') | |
228 galaxyhome=os.environ.get('GALAXY_HOME') | |
229 classpath= galaxyhome + '/tools/WebServiceTool/lib/SAWADLParser/bin' | |
230 jarpath = galaxyhome + '/tools/WebServiceTool/lib/' | |
231 machine = platform.machine() | |
232 | |
233 #if machine == 'x86_64' : | |
234 # print 'a' | |
235 # startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
236 #elif machine == 'i686' : | |
237 # print 'b' | |
238 # startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
239 #elif machine == 'sun4u' : | |
240 # startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
241 #else : | |
242 # print 'c' | |
243 # System.exit("Could not identify machine, please specify path to libjvm.so") | |
244 | |
245 | |
246 pkg=JPackage('edu.uga.cs.lsdis.meteors.wadls') | |
247 pkgModel =JPackage('org.semanticweb.owlapi.model') | |
248 pkgApiBinding =JPackage('org.semanticweb.owlapi.apibinding') | |
249 pkgVocab = JPackage('org.semanticweb.owlapi.vocab') | |
250 | |
251 DOCUMENT_IRI = "http://cs.uga.edu/~ganjoo/galaxy/EDAM.owl" | |
252 | |
253 sawadlUrl = self.url | |
254 | |
255 webserviceId = self.methodName | |
256 resUrl = self.resourceName | |
257 | |
258 urls = [] | |
259 methods = [] | |
260 params = [] | |
261 annotationSet = [] | |
262 | |
263 SAWADLParserDriver=pkg.SAWADLParserDriver | |
264 sawPD=SAWADLParserDriver() | |
265 sawPD.parse(sawadlUrl) | |
266 urls = sawPD.getUrl() | |
267 methods = sawPD.getCompleteMethodList() | |
268 | |
269 IRI = pkgModel.IRI | |
270 OWLRDFVocabulary = pkgVocab.OWLRDFVocabulary | |
271 OWLManager = pkgApiBinding.OWLManager | |
272 OWLLiteral = pkgModel.OWLLiteral | |
273 owlOntManager = OWLManager.createOWLOntologyManager() | |
274 ontology = owlOntManager.loadOntologyFromOntologyDocument(IRI.create(DOCUMENT_IRI)) | |
275 dataFactory = owlOntManager.getOWLDataFactory() | |
276 propertyComment = dataFactory.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_COMMENT.getIRI()) | |
277 | |
278 f=open(self.Ofile,'w') | |
279 f.write(sawadlUrl) | |
280 f.write('\n'+ resUrl) | |
281 f.write('\n'+webserviceId) | |
282 | |
283 | |
284 i=0 | |
285 for method in methods: | |
286 x = str(method.getName()) | |
287 y = str(urls.get(i)) | |
288 if x == webserviceId : | |
289 f.write('method matched') | |
290 if y == resUrl : | |
291 f.write('res matched') | |
292 params = method.getRequest().getParamList() | |
293 break | |
294 i=i+1 | |
295 | |
296 | |
297 | |
298 | |
299 ##generate client's xml | |
300 galaxyhome=os.environ.get('GALAXY_HOME') | |
301 | |
302 clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','r') | |
303 clientCountFile.readline() | |
304 clientCountStr = clientCountFile.read(1) | |
305 clientCount=string.atoi(clientCountStr) | |
306 clientCount=clientCount+1 | |
307 clientCountFile.close() | |
308 | |
309 clientCountFile=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/ClientCount.xml','w') | |
310 clientCountFile.write('<count> \n') | |
311 clientCountFile.write(str(clientCount)) | |
312 clientCountFile.write('</count> \n') | |
313 | |
314 clientName = 'client_'+ str(clientCount) | |
315 | |
316 clientXml=open(galaxyhome+'/tools/WebServiceToolWorkflow/clients/'+clientName+'.xml','w') | |
317 clientXml.seek(0,0) | |
318 | |
319 clientXml.write('<tool id="' + clientName+'1" name="' + self.methodName +'">\n') | |
320 clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') | |
321 | |
322 | |
323 clientXml.write(' <command interpreter="python">\n #if $cond_source.optional_param_source=="no" #client_1.py'+' $output ' +resUrl) | |
324 ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop | |
325 | |
326 | |
327 j=0 | |
328 for param in params: | |
329 if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': | |
330 clientXml.write(' '+self.formatString(param.getName())+'\n') | |
331 clientXml.write(' $param' + str(j)+'\n') | |
332 j=j+1 | |
333 | |
334 clientXml.write(' #else #client_1.py'+' $output ' +resUrl) | |
335 j=0 | |
336 for param in params: | |
337 if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': | |
338 clientXml.write(' '+self.formatString(param.getName())) | |
339 clientXml.write(' $param' + str(j)) | |
340 j=j+1 | |
341 | |
342 for param in params: | |
343 if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': | |
344 clientXml.write(' '+self.formatString(param.getName())) | |
345 clientXml.write(' $cond_source.param' + str(j)) | |
346 j=j+1 | |
347 | |
348 clientXml.write('#end if \n </command>\n') | |
349 | |
350 ##write inputs depending on required or not. if not required den dont display | |
351 ##if required- den check default value, and if options exist.Depending on that | |
352 ##decide the type of parameter and options | |
353 clientXml.write(' <inputs>\n') | |
354 | |
355 j=0 | |
356 for param in params: | |
357 if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': | |
358 f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) | |
359 if param.getOptionvalue().size()==0: | |
360 clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') | |
361 if not param.getDefault1() == None: | |
362 clientXml.write('value="'+param.getDefault1()+'" ') | |
363 clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') | |
364 j=j+1 | |
365 else: | |
366 clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) | |
367 for option in param.getOptionvalue(): | |
368 clientXml.write(' <option value="'+self.formatString(option)+'" ') | |
369 if option == param.getDefault1(): | |
370 clientXml.write('selected="true"') | |
371 clientXml.write('>'+option+'</option>\n ') | |
372 clientXml.write(' </param> \n') | |
373 j=j+1 | |
374 | |
375 | |
376 clientXml.write('\n <conditional name="cond_source"> \n <param name="optional_param_source" type="select" label="Display Additional Parameters">\n <option value="no" selected="true">no</option> \n <option value="yes">yes</option> \n </param>\n') | |
377 clientXml.write('<when value="no"> \n </when>') | |
378 clientXml.write('<when value="yes"> \n') | |
379 | |
380 for param in params: | |
381 if not param.getRequired()=='true' and not param.getRequired()=='True' and not param.getRequired()=='TRUE': | |
382 f.write('\n '+ param.getName() + ' options: '+str(param.getOptionvalue().size())) | |
383 if param.getOptionvalue().size()==0: | |
384 clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') | |
385 if not param.getDefault1() == None: | |
386 clientXml.write('value="'+param.getDefault1()+'" ') | |
387 clientXml.write('type="text" label="Enter '+param.getName()+'" help="see tip below" />\n') | |
388 j=j+1 | |
389 else: | |
390 clientXml.write('<param name="param'+str(j)+'" type="select" label="Select '+param.getName()+'" help="see tip below">\n' ) | |
391 for option in param.getOptionvalue(): | |
392 clientXml.write(' <option value="'+self.formatString(option)+'" ') | |
393 if option == param.getDefault1(): | |
394 clientXml.write('selected="true"') | |
395 clientXml.write('>'+option+'</option>\n ') | |
396 clientXml.write(' </param> \n') | |
397 j=j+1 | |
398 | |
399 clientXml.write('</when>\n</conditional>\n') | |
400 | |
401 clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') | |
402 | |
403 clientXml.write(' <help>\n') | |
404 for param in params: | |
405 if param.getRequired()=='true' or param.getRequired()=='True' or param.getRequired()=='TRUE': | |
406 clientXml.write('\n.. class:: infomark\n\n**TIP:** About '+ param.getName() +': type is ' + param.getType()) | |
407 | |
408 modelRef = sawPD.getCompleteModelReference(param) | |
409 if not modelRef is None: | |
410 paramClass = dataFactory.getOWLClass(IRI.create(modelRef)); | |
411 annotationSet = paramClass.getAnnotations(ontology,propertyComment) | |
412 for annotation in annotationSet: | |
413 if isinstance(annotation.getValue(),OWLLiteral): | |
414 val = annotation.getValue() | |
415 if val.isOWLStringLiteral() and not val.isOWLTypedLiteral(): | |
416 print 'val.getLiteral()=' + val.getLiteral() | |
417 clientXml.write(', description from ontology is "' + val.getLiteral()+'"') | |
418 break | |
419 clientXml.write('\n') | |
420 clientXml.write(' </help>\n</tool>') | |
421 editor = editToolConfig1() | |
422 editor.addTool(clientName) | |
423 | |
424 ##later add help feature | |
425 | |
426 def wsdlClient(self): | |
427 ##parse wadl | |
428 javahome = os.environ.get('JAVA_HOME') | |
429 galaxyhome=os.environ.get('GALAXY_HOME') | |
430 classpath= galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/bin' | |
431 jarpath = galaxyhome + '/tools/WebServiceTool/WodenWSDLParser/lib/' | |
432 machine = platform.machine() | |
433 | |
434 if machine == 'x86_64' : | |
435 print 'a' | |
436 startJVM("%s/jre/lib/amd64/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
437 elif machine == 'i686' : | |
438 print 'b' | |
439 startJVM("%s/jre/lib/i386/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
440 elif machine == 'sun4u' : | |
441 startJVM("%s/jre/lib/sparc/server/libjvm.so" % javahome,"-ea", "-Djava.class.path=%s" % classpath,"-Djava.ext.dirs=%s" % jarpath) | |
442 else : | |
443 print 'c' | |
444 System.exit("Could not identify machine, please specify path to libjvm.so") | |
445 | |
446 | |
447 pkg=JPackage('lsdis') | |
448 wsdlUrl = self.url | |
449 | |
450 webserviceId = self.methodName | |
451 resUrl = self.resourceName | |
452 | |
453 urls = [] | |
454 methods = [] | |
455 params = [] | |
456 paramTypes = [] | |
457 | |
458 WSDLParserDriver =pkg.WSDLParserDriver | |
459 wPD=WSDLParserDriver() | |
460 wPD.parse(wsdlUrl) | |
461 methods = wPD.getCompleteMethodList() | |
462 urls = wPD.getUrl() | |
463 | |
464 f=open(self.Ofile,'w') | |
465 f.write(wsdlUrl) | |
466 f.write('\n'+ resUrl) | |
467 f.write('\n'+webserviceId) | |
468 | |
469 | |
470 i=0 | |
471 for method in methods: | |
472 x = str(method.getName().getLocalPart()) | |
473 if x == webserviceId : | |
474 wPD.getParameters(x) | |
475 f.write('method matched') | |
476 paramTypes = wPD.getParamTypeList() | |
477 params = wPD.getParamList() | |
478 break | |
479 i=i+1 | |
480 | |
481 | |
482 | |
483 | |
484 ##generate client's xml | |
485 galaxyhome=os.environ.get('GALAXY_HOME') | |
486 | |
487 clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','r') | |
488 clientCountFile.readline() | |
489 clientCountStr = clientCountFile.read(1) | |
490 clientCount=string.atoi(clientCountStr) | |
491 clientCount=clientCount+1 | |
492 clientCountFile.close() | |
493 | |
494 clientCountFile=open(galaxyhome+'/tools/WebServiceTool/clients/ClientCount.xml','w') | |
495 clientCountFile.write('<count> \n') | |
496 clientCountFile.write(str(clientCount)) | |
497 clientCountFile.write('</count> \n') | |
498 | |
499 | |
500 | |
501 | |
502 clientName = 'client_'+ str(clientCount) | |
503 | |
504 clientXml=open(galaxyhome+'/tools/WebServiceTool/clients/'+clientName+'.xml','w') | |
505 clientXml.seek(0,0) | |
506 | |
507 clientXml.write('<tool id="' + clientName+'" name="' + self.methodName +'">\n') | |
508 clientXml.write(' <description> Client for method: '+self.methodName+' , Web service: '+self.url+' </description>\n') | |
509 | |
510 | |
511 clientXml.write(' <command interpreter="python">\n client_1.py \n'+' $output \n ' +resUrl+'\n') | |
512 ##write such that the parameters passed to client1.py(change name to clientName.py) are dependent on a for loop | |
513 | |
514 j=0 | |
515 for param in params: | |
516 clientXml.write(' '+self.formatString(param)+'\n') | |
517 clientXml.write(' $param' + str(j)+'\n') | |
518 j=j+1 | |
519 clientXml.write('</command>\n') | |
520 | |
521 ##write inputs depending on required or not. if not required den dont display | |
522 ##if required- den check default value, and if options exist.Depending on that | |
523 ##decide the type of parameter and options | |
524 clientXml.write(' <inputs>\n') | |
525 | |
526 j=0 | |
527 for param in params: | |
528 clientXml.write('<param format="text" size = "150" name = "param'+str(j)+'" ') | |
529 clientXml.write('type="text" label="'+param+'" help="see tip below" />\n') | |
530 j=j+1 | |
531 | |
532 | |
533 | |
534 clientXml.write('</inputs>\n <outputs>\n <data format="tabular" name="output" />\n </outputs>\n') | |
535 | |
536 clientXml.write(' <help>\n') | |
537 | |
538 clientXml.write('** Replace white with ** in all parameter values **\n') | |
539 | |
540 j=0 | |
541 for param in params: | |
542 clientXml.write('\n.. class:: infomark\n\n**TIP:** '+ param +' type is ' + paramTypes[j] +'\n') | |
543 | |
544 clientXml.write(' </help>\n</tool>') | |
545 editor = editToolConfig() | |
546 editor.addTool(clientName) | |
547 | |
548 ##later add help feature |