+ public SequenceFeature()\r
+ {}\r
+ /**\r
+ * Constructs a duplicate feature.\r
+ * Note: Uses clone on the otherDetails so only shallow copies are made\r
+ * of additional properties and method will silently fail if unclonable\r
+ * objects are found in the hash.\r
+ * @param cpy\r
+ */\r
+ public SequenceFeature(SequenceFeature cpy) {\r
+ if (cpy!=null) {\r
+ begin = cpy.begin;\r
+ end = cpy.end;\r
+ score = cpy.score;\r
+ if (cpy.type != null)\r
+ type = new String(cpy.type);\r
+ if (cpy.description != null)\r
+ description = new String(cpy.description);\r
+ if (cpy.featureGroup != null)\r
+ featureGroup = new String(cpy.featureGroup);\r
+ if (cpy.otherDetails!=null) {\r
+ try {\r
+ otherDetails = (Hashtable) cpy.otherDetails.clone();\r
+ } catch (Exception e) {\r
+ // Uncloneable objects in the otherDetails - don't complain\r
+ }\r
+ }\r
+ if (cpy.links!=null && cpy.links.size()>0) {\r
+ links=new Vector();\r
+ for (int i=0,iSize=cpy.links.size(); i<iSize; i++) {\r
+ links.setElementAt(cpy.links.elementAt(i), i);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ public SequenceFeature(String type,\r
+ String desc,\r
+ String status,\r
+ int begin, int end,\r
+ String featureGroup)\r
+ {\r
+ this.type = type;\r
+ this.description = desc;\r
+ setValue("status", status);\r
+ this.begin = begin;\r
+ this.end = end;\r
+ this.featureGroup = featureGroup;\r
+ }\r
+\r
+ public SequenceFeature(String type,\r
+ String desc,\r
+ int begin, int end,\r
+ float score,\r
+ String featureGroup)\r
+ {\r
+ this.type = type;\r
+ this.description = desc;\r
+ this.begin = begin;\r
+ this.end = end;\r
+ this.score = score;\r
+ this.featureGroup = featureGroup;\r
+ }\r
+\r
+ public boolean equals(SequenceFeature sf)\r
+ {\r
+ if (begin != sf.begin\r
+ || end != sf.end\r
+ || score != sf.score)\r
+ return false;\r
+\r
+ if(!(type+description+featureGroup).equals\r
+ (sf.type+sf.description+sf.featureGroup))\r
+ return false;\r
+\r
+ return true;\r
+ }\r
+\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getBegin()\r
+ {\r
+ return begin;\r
+ }\r
+\r
+ public void setBegin(int start)\r
+ {\r
+ this.begin = start;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getEnd()\r
+ {\r
+ return end;\r
+ }\r
+\r
+ public void setEnd(int end)\r
+ {\r
+ this.end = end;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getType()\r
+ {\r
+ return type;\r
+ }\r
+\r
+ public void setType(String type)\r
+ {\r
+ this.type = type;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public String getDescription()\r
+ {\r
+ return description;\r
+ }\r
+\r
+ public void setDescription(String desc)\r
+ {\r
+ description = desc;\r
+ }\r