/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
* Jalview is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- *
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
* Jalview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.io;
-import jalview.datamodel.*;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.SequenceI;
+import jalview.util.Platform;
+
+import java.util.List;
+
+import com.stevesoft.pat.Regex;
public class ModellerDescription
{
* single line, and sequence start/end and other properties. See PIRFile IO
* for its use.
*/
- final String[] seqTypes =
- { "sequence", "structure", "structureX", "structureN" };
+ final String[] seqTypes = { "sequence", "structure", "structureX",
+ "structureN" };
- final String[] Fields =
- { "objectType", "objectId", "startField", "startCode", "endField",
- "endCode", "description1", "description2", "resolutionField",
- "tailField" };
+ final String[] Fields = { "objectType", "objectId", "startField",
+ "startCode", "endField", "endCode", "description1", "description2",
+ "resolutionField", "tailField" };
final int TYPE = 0;
/**
* 0 is free text or empty 1 is something that parses to an integer, or \@
*/
- final int Types[] =
- { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 };
+ final int Types[] = { 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 };
- final char Padding[] =
- { ' ', ' ', ' ', '.', ' ', '.', '.', '.', '.', '.' };
+ final char Padding[] = { ' ', ' ', ' ', '.', ' ', '.', '.', '.', '.',
+ '.' };
java.util.Hashtable fields = new java.util.Hashtable();
val = new Integer(v);
field = val.toString();
}
- };
+ }
+
+ private static Regex VALIDATION_REGEX;
+
+ private static Regex getRegex()
+ {
+ return (VALIDATION_REGEX == null
+ ? VALIDATION_REGEX = Platform
+ .newRegex("\\s*((([-0-9]+).?)|FIRST|LAST|@)", null)
+ : VALIDATION_REGEX);
+ }
private resCode validResidueCode(String field)
{
Integer val = null;
- com.stevesoft.pat.Regex r = new com.stevesoft.pat.Regex(
- "\\s*((([-0-9]+).?)|FIRST|LAST|@)");
-
+ Regex r = getRegex();
if (!r.search(field))
{
return null; // invalid
private java.util.Hashtable parseDescription(String desc)
{
java.util.Hashtable fields = new java.util.Hashtable();
- java.util.StringTokenizer st = new java.util.StringTokenizer(desc, ":",true);
-
+ java.util.StringTokenizer st = new java.util.StringTokenizer(desc, ":",
+ true);
+
String field;
int type = -1;
if (st.countTokens() > 0)
{
if (!field.equals(":"))
{
- // validate residue field value
- if (Types[i] == 1)
- {
- resCode val = validResidueCode(field);
- if (val != null)
+ // validate residue field value
+ if (Types[i] == 1)
{
- fields.put(new String(Fields[i] + "num"), val);
+ resCode val = validResidueCode(field);
+ if (val != null)
+ {
+ fields.put(new String(Fields[i] + "num"), val);
+ }
+ else
+ {
+ // jalview.bin.Cache.log.debug(
+ // "Ignoring non-Modeller description: invalid integer-like
+ // field '" + field + "'");
+ type = -1; /* invalid field! - throw the FieldSet away */
+ }
}
- else
+ fields.put(Fields[i++], field);
+ if (st.hasMoreTokens())
{
- // jalview.bin.Cache.log.debug(
- // "Ignoring non-Modeller description: invalid integer-like
- // field '" + field + "'");
- type = -1; /* invalid field! - throw the FieldSet away */
+ st.nextToken(); // skip token sep.
}
- ;
- }
- fields.put(Fields[i++], field);
- if (st.hasMoreTokens()) {
- st.nextToken(); // skip token sep.
}
- } else {
+ else
+ {
i++;
}
}
while (st.hasMoreTokens())
{
String tl = st.nextToken(":");
- field += tl.equals(":") ? tl : (":" + tl);
+ field += tl.equals(":") ? tl : (":" + tl);
}
fields.put(Fields[TAIL], field);
}
{
// Set start and end before we update the type (in the case of a
// synthesized field set)
- if (getStartCode()==null || (getStartNum() != seq.getStart() && getStartCode().val != null))
+ if (getStartCode() == null || (getStartNum() != seq.getStart()
+ && getStartCode().val != null))
{
// unset or user updated sequence start position
setStartCode(seq.getStart());
}
- if (getEndCode()==null || (getEndNum() != seq.getEnd() && getStartCode()!=null && getStartCode().val != null))
+ if (getEndCode() == null || (getEndNum() != seq.getEnd()
+ && getStartCode() != null && getStartCode().val != null))
{
setEndCode(seq.getEnd());
}
// sets the local reference field
int t = 0; // sequence
if (seq.getDatasetSequence() != null
- && seq.getDatasetSequence().getDBRef() != null)
+ && seq.getDatasetSequence().getDBRefs() != null)
{
- jalview.datamodel.DBRefEntry[] dbr = seq.getDatasetSequence()
- .getDBRef();
- int i, j;
- for (i = 0, j = dbr.length; i < j; i++)
+ List<DBRefEntry> dbr = seq.getDatasetSequence().getDBRefs();
+ for (int i = 0, ni = dbr.size(); i < ni; i++)
{
- if (dbr[i] != null)
+ DBRefEntry dbri = dbr.get(i);
+ if (dbri != null)
{
// JBPNote PDB dbRefEntry needs properties to propagate onto
// ModellerField
// JBPNote Need to get info from the user about whether the sequence
// is the one being modelled, or if it is a template.
- if (dbr[i].getSource()
+ if (dbri.getSource()
.equals(jalview.datamodel.DBRefSource.PDB))
{
- fields.put(Fields[LOCALID], dbr[i].getAccessionId());
+ fields.put(Fields[LOCALID], dbri.getAccessionId());
t = 2;
break;
}
{
int start = 0;
resCode val = getStartCode();
- if (val!=null && val.val != null)
+ if (val != null && val.val != null)
{
return val.val.intValue();
}
{
int end = 0;
resCode val = getEndCode();
- if (val!=null && val.val != null)
+ if (val != null && val.val != null)
{
return val.val.intValue();
}
{
if (isModellerFieldset())
{
- resCode rc=getStartCode();
- if (rc!=null && rc.val != null)
+ resCode rc = getStartCode();
+ if (rc != null && rc.val != null)
{
newSeq.setStart(getStartNum());
}
{
newSeq.setStart(1);
}
- rc=getEndCode();
- if (rc!=null && rc.val != null)
+ rc = getEndCode();
+ if (rc != null && rc.val != null)
{
newSeq.setEnd(getEndNum());
}