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