More work to disorder prediction client & services.
[jabaws.git] / datamodel / compbio / data / sequence / Score.java
index f28bd0d..804ef8c 100644 (file)
@@ -1,13 +1,10 @@
 package compbio.data.sequence;\r
 \r
-import java.io.BufferedWriter;\r
 import java.io.IOException;\r
-import java.io.OutputStream;\r
-import java.io.OutputStreamWriter;\r
+import java.io.Writer;\r
 import java.text.NumberFormat;\r
 import java.util.ArrayList;\r
 import java.util.Locale;\r
-import java.util.Set;\r
 import java.util.TreeSet;\r
 \r
 import javax.xml.bind.annotation.XmlAccessType;\r
@@ -24,7 +21,7 @@ import compbio.util.annotation.Immutable;
  */\r
 @XmlAccessorType(XmlAccessType.FIELD)\r
 @Immutable\r
-public class Score {\r
+public class Score implements Comparable<Score> {\r
 \r
        static final NumberFormat NUMBER_FORMAT = NumberFormat\r
                        .getNumberInstance(Locale.UK);\r
@@ -41,7 +38,7 @@ public class Score {
 \r
        private Score() {\r
                // JaXB default constructor\r
-               method = null;\r
+               method = "";\r
        }\r
 \r
        /**\r
@@ -193,20 +190,32 @@ public class Score {
         * @throws NullPointerException\r
         *             if the output stream is null\r
         */\r
-       public static void write(Set<Score> scores, OutputStream output)\r
+       public static void write(TreeSet<Score> scores, Writer writer)\r
                        throws IOException {\r
-               if (output == null) {\r
-                       throw new NullPointerException("OutputStream must be provided!");\r
+               if (writer == null) {\r
+                       throw new NullPointerException("Writer must be provided!");\r
                }\r
-               BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(\r
-                               output));\r
                for (Score score : scores) {\r
                        writer.write("#" + score.method + " ");\r
-                       for (Float scoreVal : score.getScores()) {\r
+                       int count = score.ranges.size();\r
+                       for (Range range : score.ranges) {\r
+                               count--;\r
+                               writer.write(range.toString());\r
+                               if (count != 0) {\r
+                                       writer.write(", ");\r
+                               }\r
+                       }\r
+                       for (Float scoreVal : score.scores) {\r
                                writer.write(NUMBER_FORMAT.format(scoreVal) + " ");\r
                        }\r
                        writer.write("\n");\r
+                       writer.flush();\r
                }\r
                writer.flush();\r
        }\r
+\r
+       @Override\r
+       public int compareTo(Score o) {\r
+               return this.method.compareTo(o.method);\r
+       }\r
 }\r