* \r
* @author pvtroshin\r
* \r
- * Date January 2010\r
+ * @version 1.0 January 2010\r
* \r
* @param <T>\r
* the type of an executable for which this limit is defined.\r
@XmlAccessorType(XmlAccessType.FIELD)\r
public class Limit<T> {\r
\r
- private String preset;\r
- private int seqNumber;\r
- private int seqLength;\r
+ private String preset;\r
+ private int seqNumber;\r
+ private int seqLength;\r
\r
- @XmlAttribute\r
- boolean isDefault;\r
+ @XmlAttribute\r
+ boolean isDefault;\r
\r
- private Limit() {\r
- // JAXB default constructor\r
- }\r
+ private Limit() {\r
+ // JAXB default constructor\r
+ }\r
\r
- public Limit(int seqNumber, int seqLength, String preset) {\r
- if (seqNumber <= 0) {\r
- throw new IllegalArgumentException(\r
- "seqNumber - a maximum number of sequences to align must be greater than 0. Value given:"\r
- + seqNumber);\r
+ public Limit(int seqNumber, int seqLength, String preset) {\r
+ if (seqNumber <= 0) {\r
+ throw new IllegalArgumentException(\r
+ "seqNumber - a maximum number of sequences to align must be greater than 0. Value given:"\r
+ + seqNumber);\r
+ }\r
+ if (seqLength <= 0) {\r
+ throw new IllegalArgumentException(\r
+ "seqLength - an average sequence length must be greater than 0. Value given:"\r
+ + seqLength);\r
+ }\r
+ this.seqNumber = seqNumber;\r
+ this.seqLength = seqLength;\r
+ this.preset = preset;\r
+ this.isDefault = false;\r
}\r
- if (seqLength <= 0) {\r
- throw new IllegalArgumentException(\r
- "seqLength - an average sequence length must be greater than 0. Value given:"\r
- + seqLength);\r
+\r
+ public Limit(int seqNumber, int seqLength, String preset, boolean isDefault) {\r
+ this(seqNumber, seqNumber, preset);\r
+ this.isDefault = isDefault;\r
}\r
- this.seqNumber = seqNumber;\r
- this.seqLength = seqLength;\r
- this.preset = preset;\r
- this.isDefault = false;\r
- }\r
-\r
- public Limit(int seqNumber, int seqLength, String preset, boolean isDefault) {\r
- this(seqNumber, seqNumber, preset);\r
- this.isDefault = isDefault;\r
- }\r
-\r
- public String getPreset() {\r
- return preset;\r
- }\r
-\r
- public int getAvgSeqLength() {\r
- return seqLength;\r
- }\r
-\r
- public int getSeqNumber() {\r
- return seqNumber;\r
- }\r
-\r
- public boolean isDefault() {\r
- return isDefault;\r
- }\r
-\r
- @Override\r
- public int hashCode() {\r
- final int prime = 31;\r
- int result = 1;\r
- result = prime * result + ((preset == null) ? 0 : preset.hashCode());\r
- result = prime * result + seqLength;\r
- result = prime * result + seqNumber;\r
- return result;\r
- }\r
-\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (this == obj)\r
- return true;\r
- if (obj == null)\r
- return false;\r
- if (getClass() != obj.getClass())\r
- return false;\r
- Limit other = (Limit) obj;\r
- if (preset == null) {\r
- if (other.preset != null)\r
- return false;\r
- } else if (!preset.equals(other.preset))\r
- return false;\r
- if (seqLength != other.seqLength)\r
- return false;\r
- if (seqNumber != other.seqNumber)\r
- return false;\r
- return true;\r
- }\r
-\r
- @Override\r
- public String toString() {\r
- String value = "";\r
- if (isDefault) {\r
- value = "Default Limit" + SysPrefs.newlinechar;\r
- } else {\r
- value = "Limit for Preset '" + preset + "'" + SysPrefs.newlinechar;\r
+\r
+ public String getPreset() {\r
+ return preset;\r
+ }\r
+\r
+ public int getAvgSeqLength() {\r
+ return seqLength;\r
}\r
- value += "Maximum sequence number=" + seqNumber + SysPrefs.newlinechar;\r
- value += "Average sequence length=" + seqLength + SysPrefs.newlinechar;\r
- value += SysPrefs.newlinechar;\r
- return value;\r
- }\r
-\r
- long numberOfLetters() {\r
- return this.seqNumber * this.seqLength;\r
- }\r
-\r
- /**\r
- * Checks if the number of sequences or their average length in the dataset\r
- * exceeds limits the values defined by this Limit\r
- * \r
- * @param data\r
- * @return true if a limit is exceeded (what is the dataset is larger then\r
- * the limit), false otherwise.\r
- */\r
- public boolean isExceeded(List<FastaSequence> data) {\r
- if (data == null) {\r
- throw new NullPointerException(\r
- "List of fasta sequences is expected!");\r
+\r
+ public int getSeqNumber() {\r
+ return seqNumber;\r
}\r
- if (data.size() > this.seqNumber) {\r
- return true;\r
+\r
+ public boolean isDefault() {\r
+ return isDefault;\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ result = prime * result + ((preset == null) ? 0 : preset.hashCode());\r
+ result = prime * result + seqLength;\r
+ result = prime * result + seqNumber;\r
+ return result;\r
}\r
- if (this.seqLength != 0) {\r
- if ((long) getAvgSeqLength() * data.size() > numberOfLetters()) {\r
+\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj)\r
+ return true;\r
+ if (obj == null)\r
+ return false;\r
+ if (getClass() != obj.getClass())\r
+ return false;\r
+ Limit other = (Limit) obj;\r
+ if (preset == null) {\r
+ if (other.preset != null)\r
+ return false;\r
+ } else if (!preset.equals(other.preset))\r
+ return false;\r
+ if (seqLength != other.seqLength)\r
+ return false;\r
+ if (seqNumber != other.seqNumber)\r
+ return false;\r
return true;\r
- }\r
}\r
- return false;\r
- }\r
-\r
- /**\r
- * Calculates an average sequence length of the dataset\r
- * \r
- * @param data\r
- * @return an average sequence length in the input dataset\r
- */\r
- public static int getAvgSequenceLength(List<FastaSequence> data) {\r
- long length = 0;\r
- for (FastaSequence seq : data) {\r
- length += seq.getLength();\r
+\r
+ @Override\r
+ public String toString() {\r
+ String value = "";\r
+ if (isDefault) {\r
+ value = "Default Limit" + SysPrefs.newlinechar;\r
+ } else {\r
+ value = "Limit for Preset '" + preset + "'" + SysPrefs.newlinechar;\r
+ }\r
+ value += "Maximum sequence number=" + seqNumber + SysPrefs.newlinechar;\r
+ value += "Average sequence length=" + seqLength + SysPrefs.newlinechar;\r
+ value += SysPrefs.newlinechar;\r
+ return value;\r
}\r
- return (int) (length / data.size());\r
- }\r
-\r
- void validate() {\r
- if (this.seqNumber < 1) {\r
- throw new AssertionError(\r
- "Maximum number of sequences must be defined and be positive! Set value is: "\r
- + this.seqNumber);\r
+\r
+ long numberOfLetters() {\r
+ return this.seqNumber * this.seqLength;\r
}\r
- if (this.seqLength != 0 && this.seqLength < 1) {\r
- throw new AssertionError(\r
- "Average sequence length must be positive! Set value is: "\r
- + this.seqLength);\r
+\r
+ /**\r
+ * Checks if the number of sequences or their average length in the dataset\r
+ * exceeds limits the values defined by this Limit\r
+ * \r
+ * @param data\r
+ * @return true if a limit is exceeded (what is the dataset is larger then\r
+ * the limit), false otherwise.\r
+ */\r
+ public boolean isExceeded(List<FastaSequence> data) {\r
+ if (data == null) {\r
+ throw new NullPointerException(\r
+ "List of fasta sequences is expected!");\r
+ }\r
+ if (data.size() > this.seqNumber) {\r
+ return true;\r
+ }\r
+ if (this.seqLength != 0) {\r
+ if ((long) getAvgSeqLength() * data.size() > numberOfLetters()) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ /**\r
+ * Calculates an average sequence length of the dataset\r
+ * \r
+ * @param data\r
+ * @return an average sequence length in the input dataset\r
+ */\r
+ public static int getAvgSequenceLength(List<FastaSequence> data) {\r
+ long length = 0;\r
+ for (FastaSequence seq : data) {\r
+ length += seq.getLength();\r
+ }\r
+ return (int) (length / data.size());\r
+ }\r
+\r
+ void validate() {\r
+ if (this.seqNumber < 1) {\r
+ throw new AssertionError(\r
+ "Maximum number of sequences must be defined and be positive! Set value is: "\r
+ + this.seqNumber);\r
+ }\r
+ if (this.seqLength != 0 && this.seqLength < 1) {\r
+ throw new AssertionError(\r
+ "Average sequence length must be positive! Set value is: "\r
+ + this.seqLength);\r
+ }\r
}\r
- }\r
}\r