Switch JpredWS from SequenceAnnotation to MsaWS
[jabaws.git] / webservices / compbio / ws / client / WSTester.java
index e9a349c..bae843b 100644 (file)
@@ -1,6 +1,7 @@
 /* Copyright (c) 2011 Peter Troshin\r
+ * Copyright (c) 2013 Alexander Sherstnev\r
  *  \r
- *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.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
@@ -56,29 +57,27 @@ import compbio.util.Util;
  * \r
  * @author pvtroshin\r
  * \r
- * @version 1.0 February 2010\r
+ * @version 1.5 February 2013\r
  */\r
 public class WSTester {\r
 \r
        /**\r
-        * Sequences to be used as input for all WS\r
+        * Test sequences to be used as input for WS\r
         */\r
-       public static final String fastaInput = ">Foo\n"\r
-                       + "MTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV"\r
-                       + "\n>Bar\n"\r
-                       + "ASDAAPEHPGIALWLHALEDAGQAEAAAAYTRAHQLLPEEPYITAQLLNAVA\n";\r
-\r
-       public static final String fastaAlignment = ">Foo\n"\r
-                       + "MTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV--------\n"\r
-                       + ">Bar\n"\r
-                       + "ASDAAPEH------------PGIALWLHALE-DAGQAEAAA---AYTRAHQLLPEEPYITAQLLNAVA\n"\r
-                       + "";\r
-\r
-       static final List<FastaSequence> seqs = loadSeqs();\r
+       public static final String fastaInput2records = \r
+                       ">Foo\nMTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\n"\r
+               +   ">Bar\nASDAAPEHPGIALWLHALEDAGQAEAAAAYTRAHQLLPEEPYITAQLLNAVA\n";\r
+       public static final String fastaInput1record = \r
+                       ">Foo\nMTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV\n";\r
+       public static final String fastaAlignment = \r
+                       ">Foo\nMTADGPRELLQLRAAVRHRPQDFVAWLMLADAELGMGDTTAGEMAVQRGLALHPGHPEAV--------\n"\r
+               +   ">Bar\nASDAAPEH------------PGIALWLHALE-DAGQAEAAA---AYTRAHQLLPEEPYITAQLLNAVA\n";\r
 \r
+       /**\r
+        * Status strings\r
+        */\r
        private static final String FAILED = "FAILED";\r
        private static final String OK = "OK";\r
-\r
        private static final String UNSUPPORTED = "UNSUPPORTED";\r
 \r
        /**\r
@@ -86,10 +85,12 @@ public class WSTester {
         * \r
         * @return List of FastaSequence records\r
         */\r
-       private static List<FastaSequence> loadSeqs() {\r
+       private static List<FastaSequence> loadSeqs(int nLines) {\r
                try {\r
-                       return SequenceUtil.readFasta(new ByteArrayInputStream(fastaInput\r
-                                       .getBytes()));\r
+                       if (nLines == 1) {\r
+                               return SequenceUtil.readFasta(new ByteArrayInputStream(fastaInput1record.getBytes()));\r
+                       }\r
+                       return SequenceUtil.readFasta(new ByteArrayInputStream(fastaInput2records.getBytes()));\r
                } catch (IOException ignored) {\r
                        // Should not happen as a source is not a external stream\r
                        ignored.printStackTrace();\r
@@ -168,7 +169,7 @@ public class WSTester {
                        writer.print("Aligning with preset '" + preset.getName() + "'... ");\r
                        Alignment al = null;\r
                        try {\r
-                               String taskId = msaws.presetAlign(seqs, preset);\r
+                               String taskId = msaws.presetAlign(loadSeqs(2), preset);\r
                                al = msaws.getResult(taskId);\r
                                if (al != null) {\r
                                        writer.println(OK);\r
@@ -189,10 +190,10 @@ public class WSTester {
                return succeed;\r
        }\r
 \r
-       private <T> boolean testMsaWS(MsaWS<T> msaws) throws Exception {\r
+       private <T> boolean testMsaWS(MsaWS<T> msaws, Services service) throws Exception {\r
                assert msaws != null;\r
 \r
-               boolean succeed = testDefaultAlignment(msaws);\r
+               boolean succeed = testDefaultAlignment(msaws, service);\r
                // If exception above is thrown than the tests below is not run\r
 \r
                PresetManager<T> pmanager = msaws.getPresets();\r
@@ -223,7 +224,7 @@ public class WSTester {
                        }\r
 \r
                        if (wservice instanceof MsaWS) {\r
-                               return testMsaWS((MsaWS<T>) wservice);\r
+                               return testMsaWS((MsaWS<T>) wservice, service);\r
                        } else if (wservice instanceof SequenceAnnotation) {\r
                                return testSequenceAnnotationWS(\r
                                                (SequenceAnnotation<T>) wservice, service);\r
@@ -240,7 +241,7 @@ public class WSTester {
                        SequenceAnnotation<T> wservice, Services service) throws Exception {\r
                writer.print("Calling analyse.........");\r
 \r
-               List<FastaSequence> input = loadSeqs();\r
+               List<FastaSequence> input = loadSeqs(2);\r
                if (service == Services.AAConWS) {\r
                        input = loadAlignment();\r
                }\r
@@ -335,12 +336,17 @@ public class WSTester {
         * @param msaws\r
         * @throws UnsupportedRuntimeException\r
         */\r
-       private <T> boolean testDefaultAlignment(MsaWS<T> msaws) throws Exception {\r
+       private <T> boolean testDefaultAlignment(MsaWS<T> msaws, Services service) throws Exception {\r
                writer.print("Testing alignment with default parameters:");\r
                Alignment al = null;\r
                boolean succeed = false;\r
+               String taskId;\r
 \r
-               String taskId = msaws.align(seqs);\r
+               if (service == Services.JpredWS) {\r
+                       taskId = msaws.align(loadSeqs(1));\r
+               } else {\r
+                       taskId = msaws.align(loadSeqs(2));\r
+               }\r
                writer.print("\nQuerying job status...");\r
                JobStatus status = msaws.getJobStatus(taskId);\r
                while (status != JobStatus.FINISHED) {\r