import java.io.OutputStreamWriter;\r
import java.text.NumberFormat;\r
import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.List;\r
import java.util.Locale;\r
import java.util.Set;\r
+import java.util.TreeSet;\r
\r
import javax.xml.bind.annotation.XmlAccessType;\r
import javax.xml.bind.annotation.XmlAccessorType;\r
NUMBER_FORMAT.setGroupingUsed(false);\r
NUMBER_FORMAT.setMaximumFractionDigits(3);\r
}\r
+ // This should be Enum<?> but JAXB cannot serialize it.\r
+ private final String method;\r
\r
- private Enum<?> method;\r
+ private TreeSet<Range> ranges = new TreeSet<Range>();\r
\r
- private List<Float> scores;\r
+ private ArrayList<Float> scores = new ArrayList<Float>(0);\r
\r
private Score() {\r
// JaXB default constructor\r
+ method = null;\r
}\r
\r
/**\r
* the actual conservation values for each column of the\r
* alignment\r
*/\r
- public Score(Enum<?> method, List<Float> scores) {\r
- this.method = method;\r
+ public Score(Enum<?> method, ArrayList<Float> scores) {\r
+ this.method = method.toString();\r
this.scores = new ArrayList<Float>(scores);\r
}\r
\r
+ /**\r
+ * @param method\r
+ * the ConservationMethod with which {@code scores} were\r
+ * calculated\r
+ * @param scores\r
+ * the actual conservation values for each column of the\r
+ * alignment\r
+ * @param ranges\r
+ * The set of ranges i.e. parts of the sequence with specific\r
+ * function, usually can be calculated based on scores\r
+ */\r
+ public Score(Enum<?> method, ArrayList<Float> scores, TreeSet<Range> ranges) {\r
+ this.method = method.toString();\r
+ this.ranges = ranges;\r
+ this.scores = scores;\r
+ }\r
+\r
+ public Score(Enum<?> method, TreeSet<Range> ranges) {\r
+ this.method = method.toString();\r
+ this.ranges = ranges;\r
+ }\r
+\r
public Score(Enum<?> method, float[] scores) {\r
- this.method = method;\r
+ this.method = method.toString();\r
this.scores = toList(scores);\r
}\r
\r
- private List<Float> toList(float[] values) {\r
- List<Float> vlist = new ArrayList<Float>();\r
+ private ArrayList<Float> toList(float[] values) {\r
+ ArrayList<Float> vlist = new ArrayList<Float>();\r
for (float v : values) {\r
vlist.add(new Float(v));\r
}\r
* \r
* @return the ConservationMethod\r
*/\r
- public Enum<?> getMethod() {\r
+ public String getMethod() {\r
return method;\r
}\r
\r
* \r
* @return the column scores for the alignment\r
*/\r
- public List<Float> getScores() {\r
+ public ArrayList<Float> getScores() {\r
return scores;\r
}\r
\r
+ /**\r
+ * Return Ranges if any Collections.EMPTY_SET otherwise\r
+ * \r
+ * @return\r
+ */\r
+ public TreeSet<Range> getRanges() {\r
+ return ranges;\r
+ }\r
+\r
+ public void setRanges(TreeSet<Range> ranges) {\r
+ this.ranges = ranges;\r
+ }\r
+\r
@Override\r
public String toString() {\r
- return "Score [method=" + method + ", scores=" + scores + "]";\r
+ return "Score [method=" + method + ", ranges=" + ranges + ", scores="\r
+ + scores + "]";\r
}\r
\r
@Override\r
public int hashCode() {\r
- final int prime = 31;\r
+ final int prime = 7;\r
int result = 1;\r
result = prime * result + ((method == null) ? 0 : method.hashCode());\r
+ result = prime * result + ((ranges == null) ? 0 : ranges.hashCode());\r
result = prime * result + ((scores == null) ? 0 : scores.hashCode());\r
return result;\r
}\r
\r
- /*\r
- * TODO test ! (non-Javadoc)\r
- * \r
- * @see java.lang.Object#equals(java.lang.Object)\r
- */\r
@Override\r
public boolean equals(Object obj) {\r
if (this == obj)\r
if (getClass() != obj.getClass())\r
return false;\r
Score other = (Score) obj;\r
- if (method != other.method)\r
+ if (method == null) {\r
+ if (other.method != null)\r
+ return false;\r
+ } else if (!method.equals(other.method))\r
return false;\r
- if (scores == other.scores) {\r
- return true;\r
- }\r
- if (scores == null) {\r
+ if (ranges == null) {\r
+ if (other.ranges != null)\r
+ return false;\r
+ } else if (!ranges.equals(other.ranges))\r
return false;\r
- }\r
- if (!Arrays.deepEquals(scores.toArray(), other.scores.toArray()))\r
+ if (scores == null) {\r
+ if (other.scores != null)\r
+ return false;\r
+ } else if (!scores.equals(other.scores))\r
return false;\r
return true;\r
}\r