{\r
SequenceI datasetSequence;\r
String name;\r
- String shortName;\r
String sequence;\r
String description;\r
int start;\r
\r
\r
/** DOCUMENT ME!! */\r
- public Vector sequenceFeatures = new Vector();\r
+ public Vector sequenceFeatures;\r
\r
/**\r
* Creates a new Sequence object.\r
public Sequence(String name, String sequence, int start, int end)\r
{\r
this.name = name;\r
- parseId();\r
-\r
this.sequence = sequence;\r
this.start = start;\r
this.end = end;\r
\r
+ parseId();\r
+\r
checkValidRange();\r
}\r
\r
+ static com.stevesoft.pat.Regex limitrx = new com.stevesoft.pat.Regex(\r
+ "[/][0-9]{1,}[-][0-9]{1,}$");\r
+ static com.stevesoft.pat.Regex endrx = new com.stevesoft.pat.Regex(\r
+ "[0-9]{1,}$");\r
+\r
void parseId()\r
{\r
- // Read in any DB refs first\r
- StringTokenizer st = new StringTokenizer(name, "|");\r
- if(st.countTokens()<1)\r
+ // Does sequence have the /start-end signiature?\r
+ if(limitrx.search(name))\r
{\r
- shortName = name;\r
- return;\r
+ name = limitrx.left();\r
+ endrx.search(limitrx.stringMatched());\r
+ setStart( Integer.parseInt( limitrx.stringMatched().substring(1,endrx.matchedFrom()-1 )));\r
+ setEnd( Integer.parseInt( endrx.stringMatched() ));\r
}\r
-\r
- while (st.countTokens() > 1)\r
- {\r
- String a = st.nextToken();\r
- String b = st.nextToken();\r
- addDBRef(new DBRefEntry(a, "0", b));\r
- }\r
-\r
- if (st.hasMoreTokens())\r
- shortName = st.nextToken();\r
-\r
- // Remove /start-end from sequence\r
- if (shortName.indexOf("/") > 0)\r
- {\r
- st = new StringTokenizer(shortName, "/");\r
- String limits = null;\r
- try\r
- {\r
- if (st.countTokens() == 2)\r
- {\r
-\r
- shortName = st.nextToken();\r
-\r
- limits = st.nextToken();\r
-\r
- st = new StringTokenizer(limits, "-");\r
-\r
- if (st.countTokens() == 2)\r
- {\r
- setStart(Integer.valueOf(st.nextToken()).intValue());\r
- setEnd(Integer.valueOf(st.nextToken()).intValue());\r
- }\r
- }\r
-\r
- // If we're still in this loop, parsing of start and end was ok\r
- // Therefore remove it from the sequence name\r
- name = name.substring(0, name.indexOf("/"));\r
- }\r
- catch (NumberFormatException ex)\r
- {\r
- // Problem parsing sequence limits. Just add it back to the\r
- // Id so we dont lose this info\r
- shortName += "/" + limits;\r
- }\r
- }\r
-\r
}\r
\r
void checkValidRange()\r
return sequenceFeatures;\r
}\r
\r
+ public void addPDBId(PDBEntry entry)\r
+ {\r
+ if(pdbIds == null)\r
+ pdbIds = new Vector();\r
+\r
+ pdbIds.addElement(entry);\r
+ }\r
+\r
/**\r
* DOCUMENT ME!\r
*\r
*\r
* @return DOCUMENT ME!\r
*/\r
- public String getDisplayId(boolean dbref, boolean jvsuffix)\r
+ public String getDisplayId(boolean jvsuffix)\r
{\r
- StringBuffer result = new StringBuffer();\r
- if (dbref && dbrefs != null)\r
- {\r
- for (int i = 0; i < dbrefs.size(); i++)\r
- {\r
- DBRefEntry entry = (DBRefEntry) dbrefs.elementAt(i);\r
- result.append(entry.getSource() + "|" + entry.getAccessionId() + "|");\r
- }\r
- }\r
-\r
- result.append(shortName);\r
-\r
+ StringBuffer result = new StringBuffer(name);\r
if (jvsuffix)\r
{\r
result.append("/" + start + "-" + end);\r
\r
while ((i < sequence.length()) && (j <= end) && (j <= pos))\r
{\r
- char c = sequence.charAt(i);\r
-\r
- if (!jalview.util.Comparison.isGap((c)))\r
+ if (!jalview.util.Comparison.isGap(sequence.charAt(i)))\r
{\r
j++;\r
}\r
\r
while ((j < i) && (j < sequence.length()))\r
{\r
- char c = sequence.charAt(j);\r
-\r
- if (!jalview.util.Comparison.isGap((c)))\r
+ if (!jalview.util.Comparison.isGap((sequence.charAt(j))))\r
{\r
pos++;\r
}\r