WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / webservices / compbio / ws / client / Jws2Client.java
index d93e43f..ae38d9f 100644 (file)
@@ -1,6 +1,6 @@
-/* Copyright (c) 2009 Peter Troshin\r
+/* Copyright (c) 2011 Peter Troshin\r
  *  \r
- *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0     \r
+ *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0     \r
  * \r
  *  This library is free software; you can redistribute it and/or modify it under the terms of the\r
  *  Apache License version 2 as published by the Apache Software Foundation\r
@@ -43,6 +43,7 @@ import javax.xml.ws.Service;
 import javax.xml.ws.WebServiceException;\r
 \r
 import compbio.data.msa.JABAService;\r
+import compbio.data.msa.FoldWS;\r
 import compbio.data.msa.Metadata;\r
 import compbio.data.msa.MsaWS;\r
 import compbio.data.msa.RegistryWS;\r
@@ -50,6 +51,7 @@ import compbio.data.msa.SequenceAnnotation;
 import compbio.data.sequence.Alignment;\r
 import compbio.data.sequence.FastaSequence;\r
 import compbio.data.sequence.ScoreManager;\r
+import compbio.data.sequence.ClustalAlignmentUtil;\r
 import compbio.data.sequence.SequenceUtil;\r
 import compbio.data.sequence.UnknownFileFormatException;\r
 import compbio.metadata.JobSubmissionException;\r
@@ -103,6 +105,7 @@ public class Jws2Client {
         * @throws IOException\r
         */\r
        <T> Jws2Client(String[] cmd) throws IOException {\r
+               \r
 \r
                String hostname = CmdHelper.getHost(cmd);\r
                if (hostname == null) {\r
@@ -156,6 +159,8 @@ public class Jws2Client {
                        customOptions = MetadataHelper.processParameters(prms,\r
                                        msaws.getRunnerOptions());\r
                }\r
+//             System.out.println("The Options read from the command line: " + customOptions);\r
+               \r
                Alignment alignment = null;\r
                if (inputFile != null) {\r
                        Writer writer = null;\r
@@ -170,8 +175,11 @@ public class Jws2Client {
                                ScoreManager result = analize(inputFile,\r
                                                ((SequenceAnnotation<T>) msaws), preset, customOptions);\r
 \r
+                               // A System.out.println just for testing!\r
+                               System.out.println(result.toString());\r
+                               \r
                                IOHelper.writeOut(writer, result);\r
-                       } else {\r
+                       } else if (service.getServiceType() == MsaWS.class) {\r
                                alignment = align(inputFile, (MsaWS<T>) msaws, preset,\r
                                                customOptions);\r
                                IOHelper.writeOut(writer, alignment);\r
@@ -506,7 +514,77 @@ public class Jws2Client {
                }\r
                return alignment;\r
        }\r
-\r
+       \r
+       /**\r
+        * Return RNA secondary structure from a file using FoldWS\r
+        * \r
+        * @param <T>\r
+        *            web service type e.g. Clustal\r
+        * @param file\r
+        *            to read the results from\r
+        * @param foldws\r
+        *            FoldWS required\r
+        * @param preset\r
+        *            Preset to use optional\r
+        * @param customOptions\r
+        *            file which contains new line separated list of options\r
+        * @return String\r
+        */\r
+       \r
+//     static <T> String fold(File file, FoldWS<T> foldws, Preset<T> preset,\r
+//                     List<Option<T>> customOptions) {\r
+//             FileInputStream instream = null;\r
+//             Alignment alignment = null;\r
+//             String rnastruct = null;\r
+//             try {\r
+//                     instream = new FileInputStream(file);\r
+//                     alignment = ClustalAlignmentUtil.readClustalFile(instream);\r
+//                     instream.close();\r
+//                     String jobId = null;\r
+//                     if (customOptions != null && preset != null) {\r
+//                             System.out.println("WARN: Parameters (-f) are defined together"\r
+//                                             + "with a preset (-r), ignoring preset! ");\r
+//                     }\r
+//                     if (customOptions != null) {\r
+//                             jobId = foldws.customFold(alignment, customOptions);\r
+//                     } else if (preset != null) {\r
+//                             jobId = foldws.presetFold(alignment, preset);\r
+//                     } else {\r
+//                             jobId = foldws.fold(alignment);\r
+//                     }\r
+//                     System.out.println("\n\ncalling fold.........");\r
+//                     Thread.sleep(1000);\r
+//                     rnastruct = foldws.getResult(jobId);\r
+//                             \r
+//             } catch (IOException e) {\r
+//                     System.err.println("Exception while reading the input file. Exception details: ");\r
+//                     e.printStackTrace();\r
+//             } catch (UnknownFileFormatException e) {\r
+//                     System.err.println("Exception while reading input file. Doesnt look like a Clustal format file");\r
+//                     e.printStackTrace();\r
+//             } catch (JobSubmissionException e) {\r
+//                     System.err.println("Exception while submitting job to the web server. ");\r
+//                     e.printStackTrace();\r
+//             } catch (ResultNotAvailableException e) {\r
+//                     System.err.println("Exception while waiting for results. Exception details: ");\r
+//                     e.printStackTrace();\r
+//             } catch (InterruptedException ignored) {\r
+//                     // ignore and propagate an interruption\r
+//                     Thread.currentThread().interrupt();\r
+//             } catch (WrongParameterException e) {\r
+//                     e.printStackTrace();\r
+//             } finally {\r
+//                     if (instream != null) {\r
+//                             try {\r
+//                                     instream.close();\r
+//                             } catch (IOException ignored) {\r
+//                                     // ignore\r
+//                             }\r
+//                     }\r
+//             }\r
+//             return rnastruct;\r
+//     }\r
+//             \r
        /**\r
         * Prints Jws2Client usage information to standard out\r
         * \r