*/
package jalview.io;
-import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.Annotation;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.util.Format;
+import jalview.util.MessageManager;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;
String version;
// String id;
Hashtable seqAnn = new Hashtable(); // Sequence related annotations
- Hashtable seqs = new Hashtable();
+ LinkedHashMap<String, String> seqs = new LinkedHashMap<String, String>();
Regex p, r, rend, s, x;
// Temporary line for processing RNA annotation
// String RNAannot = "";
if (!r.search(nextLine()))
{
throw new IOException(
- "This file is not in valid STOCKHOLM format: First line does not contain '# STOCKHOLM'");
+ MessageManager
+ .getString("exception.stockholm_invalid_format"));
}
else
{
}
}
// logger.debug("Number of sequences: " + this.noSeqs);
- Enumeration accs = seqs.keys();
- while (accs.hasMoreElements())
+ for (Map.Entry<String, String> skey : seqs.entrySet())
{
- String acc = (String) accs.nextElement();
// logger.debug("Processing sequence " + acc);
- String seq = (String) seqs.remove(acc);
+ String acc = skey.getKey();
+ String seq = skey.getValue();
if (maxLength < seq.length())
{
maxLength = seq.length();
AlignmentAnnotation an = (AlignmentAnnotation) vv
.elementAt(ii);
seqO.addAlignmentAnnotation(an);
+ annotations.add(an);
}
}
}
if (!x.search(line))
{
// logger.error("Could not parse sequence line: " + line);
- throw new IOException("Could not parse sequence line: " + line);
+ throw new IOException(MessageManager.formatMessage(
+ "exception.couldnt_parse_sequence_line", new String[]
+ { line }));
}
- String ns = (String) seqs.get(x.stringMatched(1));
+ String ns = seqs.get(x.stringMatched(1));
if (ns == null)
{
ns = "";
}
else
{
- throw new IOException("Error parsing " + line);
+ throw new IOException(MessageManager.formatMessage(
+ "exception.error_parsing_line", new String[]
+ { line }));
}
}
else if (annType.equals("GC"))
strucAnn = new Hashtable();
}
- Vector newStruc = new Vector();
+ Vector<AlignmentAnnotation> newStruc = new Vector<AlignmentAnnotation>();
parseAnnotationRow(newStruc, type, ns);
-
+ for (AlignmentAnnotation alan : newStruc)
+ {
+ alan.visible = false;
+ }
+ // annotations.addAll(newStruc);
strucAnn.put(type, newStruc);
seqAnn.put(acc, strucAnn);
}
}
else
{
- throw new IOException("Unknown annotation detected: " + annType
- + " " + annContent);
+ throw new IOException(MessageManager.formatMessage(
+ "exception.unknown_annotation_detected", new String[]
+ { annType, annContent }));
}
}
}
{
annot = (AlignmentAnnotation) e.nextElement();
if (annot.label.equals(type))
+ {
break;
+ }
annot = null;
}
if (annot == null)
for (int idb = 0; idb < s[in].getDBRef().length; idb++)
{
if (dataRef == null)
+ {
dataRef = new Hashtable();
+ }
String datAs1 = s[in].getDBRef()[idb].getSource().toString()
+ " ; "
String key = type2id(feature);
if (key == null)
+ {
continue;
+ }
// out.append("#=GR ");
out.append(new Format("%-" + maxid + "s").form("#=GR "
String label;
if (aa.label.equals("seq"))
+ {
label = "seq_cons";
+ }
else
+ {
label = type2id(aa.label.toLowerCase()) + "_cons";
+ }
if (label == null)
+ {
label = aa.label;
+ }
out.append(new Format("%-" + maxid + "s").form("#=GC " + label
+ " "));
+ boolean isrna = aa.isValidStruc();
for (int j = 0; j < aa.annotations.length; j++)
{
String ch = (aa.annotations[j] == null) ? "-"
: aa.annotations[j].displayCharacter;
- if (ch.length() == 0)
+ if (ch.length() == 0 || isrna)
{
char ll = aa.annotations[j].secondaryStructure;
if (Character.toString(ll).equals(" "))
+ {
seq += "C";
+ }
else
+ {
seq += ll;
+ }
}
else if (ch.length() == 1)
{
}
if (key != null)
{
- return (String) key;
+ return key;
}
System.err.println("Warning : Unknown Stockholm annotation type: "
+ type);