- public static Hashtable SeqCharacterHash(SequenceI seq) {\r
- Hashtable sqinfo = new Hashtable();\r
- sqinfo.put("Name", seq.getName());\r
- sqinfo.put("Start", new Integer(seq.getStart()));\r
- sqinfo.put("End", new Integer(seq.getEnd()));\r
- sqinfo.put("SeqFeatures", seq.getSequenceFeatures());\r
- sqinfo.put("PdbId",\r
- (seq.getPDBId() != null) ? seq.getPDBId() : new String(""));\r
-\r
- return sqinfo;\r
+public class SeqsetUtils\r
+{\r
+\r
+ /**\r
+ * Store essential properties of a sequence in a hashtable for later recovery\r
+ * Keys are Name, Start, End, SeqFeatures, PdbId\r
+ * @param seq SequenceI\r
+ * @return Hashtable\r
+ */\r
+ public static Hashtable SeqCharacterHash(SequenceI seq)\r
+ {\r
+ Hashtable sqinfo = new Hashtable();\r
+ sqinfo.put("Name", seq.getName());\r
+ sqinfo.put("Start", new Integer(seq.getStart()));\r
+ sqinfo.put("End", new Integer(seq.getEnd()));\r
+ Vector sfeat = new Vector();\r
+ jalview.datamodel.SequenceFeature[] sfarray=seq.getSequenceFeatures();\r
+ if (sfarray!=null && sfarray.length>0) {\r
+ for (int i=0;i<sfarray.length;i++)\r
+ sfeat.add(sfarray[i]);\r
+ }\r
+ sqinfo.put("SeqFeatures", sfeat);\r
+ sqinfo.put("PdbId",\r
+ (seq.getPDBId() != null) ? seq.getPDBId() : new Vector());\r
+ sqinfo.put("datasetSequence", (seq.getDatasetSequence() !=null) ? seq.getDatasetSequence() : new Sequence("THISISAPLACEHOLDER",""));\r
+ return sqinfo;\r
+ }\r
+\r
+ /**\r
+ * Recover essential properties of a sequence from a hashtable\r
+ * TODO: replace these methods with something more elegant.\r
+ * @param sq SequenceI\r
+ * @param sqinfo Hashtable\r
+ * @return boolean true if name was not updated from sqinfo Name entry\r
+ */\r
+ public static boolean SeqCharacterUnhash(SequenceI sq, Hashtable sqinfo)\r
+ {\r
+ boolean namePresent = true;\r
+ if (sqinfo==null)\r
+ return false;\r
+ String oldname = (String) sqinfo.get("Name");\r
+ Integer start = (Integer) sqinfo.get("Start");\r
+ Integer end = (Integer) sqinfo.get("End");\r
+ Vector sfeatures = (Vector) sqinfo.get(\r
+ "SeqFeatures");\r
+ Vector pdbid = (Vector) sqinfo.get("PdbId");\r
+ Sequence seqds = (Sequence) sqinfo.get("datasetSequence");\r
+ if (oldname == null)\r
+ {\r
+ namePresent = false;\r
+ }\r
+ else\r
+ {\r
+ sq.setName(oldname);\r
+ }\r
+ if (pdbid!=null && pdbid.size()>0)\r
+ {\r
+ sq.setPDBId(pdbid);\r