X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FAnnotationFile.java;h=d4284a24e8612682f3b7492c856a3bc332c5f8e6;hb=e601d78bc7762386f570e346a803684c43a66ff1;hp=ef46b86a59807eeb6f3618912bdb419345f4dfb3;hpb=60dde97e0115909c22d4b6dff689a061e497e36d;p=jalview.git diff --git a/src/jalview/io/AnnotationFile.java b/src/jalview/io/AnnotationFile.java index ef46b86..d4284a2 100755 --- a/src/jalview/io/AnnotationFile.java +++ b/src/jalview/io/AnnotationFile.java @@ -27,8 +27,41 @@ import jalview.schemes.*; public class AnnotationFile { - StringBuffer text = new StringBuffer("JALVIEW_ANNOTATION\n" - + "# Created: " + new java.util.Date() + "\n\n"); + public AnnotationFile() + { + init(); + } + + /** + * character used to write newlines + */ + protected String newline = System.getProperty("line.separator"); + + /** + * set new line string and reset the output buffer + * + * @param nl + */ + public void setNewlineString(String nl) + { + newline = nl; + init(); + } + + public String getNewlineString() + { + return newline; + } + + StringBuffer text; + + private void init() + { + text = new StringBuffer("JALVIEW_ANNOTATION"+newline + "# Created: " + + new java.util.Date() + newline + newline); + refSeq = null; + refSeqId = null; + } /** * convenience method for pre-2.4 feature files which have no view, hidden @@ -118,7 +151,9 @@ public class AnnotationFile { if (refSeq != null) { - text.append("\nSEQUENCE_REF\tALIGNMENT\n"); + text.append(newline); + text.append("SEQUENCE_REF\tALIGNMENT"); + text.append(newline); } refSeq = null; @@ -129,7 +164,10 @@ public class AnnotationFile if (refSeq == null || refSeq != row.sequenceRef) { refSeq = row.sequenceRef; - text.append("\nSEQUENCE_REF\t" + refSeq.getName() + "\n"); + text.append(newline); + text.append("SEQUENCE_REF\t"); + text.append(refSeq.getName()); + text.append(newline); } } // mark any group references for the row @@ -138,7 +176,9 @@ public class AnnotationFile if (refGroup != null) { - text.append("\nGROUP_REF\tALIGNMENT\n"); + text.append(newline); + text.append("GROUP_REF\tALIGNMENT"); + text.append(newline); } refGroup = null; @@ -148,7 +188,10 @@ public class AnnotationFile if (refGroup == null || refGroup != row.groupRef) { refGroup = row.groupRef; - text.append("\nGROUP_REF\t" + refGroup.getName() + "\n"); + text.append(newline); + text.append("GROUP_REF\t"); + text.append(refGroup.getName()); + text.append(newline); } } @@ -194,16 +237,16 @@ public class AnnotationFile if (row.getThreshold() != null) { - graphLine - .append("GRAPHLINE\t" - + row.label - + "\t" - + row.getThreshold().value - + "\t" - + row.getThreshold().label - + "\t" - + jalview.util.Format.getHexString(row - .getThreshold().colour) + "\n"); + graphLine.append("GRAPHLINE\t"); + graphLine.append(row.label); + graphLine.append("\t"); + graphLine.append(row.getThreshold().value); + graphLine.append("\t"); + graphLine.append(row.getThreshold().label); + graphLine.append("\t"); + graphLine.append(jalview.util.Format.getHexString(row + .getThreshold().colour)); + graphLine.append(newline); } if (row.graphGroup > -1) @@ -308,25 +351,32 @@ public class AnnotationFile if (row.hasScore()) text.append("\t" + row.score); - text.append("\n"); + text.append(newline); if (color != null && color != java.awt.Color.black && oneColour) { - colours.append("COLOUR\t" + row.label + "\t" - + jalview.util.Format.getHexString(color) + "\n"); + colours.append("COLOUR\t"); + colours.append(row.label); + colours.append("\t"); + colours.append(jalview.util.Format.getHexString(color)); + colours.append(newline); } if (row.scaleColLabel || row.showAllColLabels || row.centreColLabels) { - rowprops.append("ROWPROPERTIES\t" + row.label); - rowprops.append("\tscaletofit=" + row.scaleColLabel); - rowprops.append("\tshowalllabs=" + row.showAllColLabels); - rowprops.append("\tcentrelabs=" + row.centreColLabels); - rowprops.append("\n"); + rowprops.append("ROWPROPERTIES\t"); + rowprops.append(row.label); + rowprops.append("\tscaletofit="); + rowprops.append(row.scaleColLabel); + rowprops.append("\tshowalllabs="); + rowprops.append(row.showAllColLabels); + rowprops.append("\tcentrelabs="); + rowprops.append(row.centreColLabels); + rowprops.append(newline); } } - text.append("\n"); + text.append(newline); text.append(colours.toString()); text.append(graphLine.toString()); @@ -336,7 +386,8 @@ public class AnnotationFile Enumeration en = graphGroup.elements(); while (en.hasMoreElements()) { - text.append(en.nextElement() + "\n"); + text.append(en.nextElement()); + text.append(newline); } } text.append(rowprops.toString()); @@ -349,12 +400,17 @@ public class AnnotationFile if (properties != null) { - text.append("\n\nALIGNMENT"); + text.append(newline); + text.append(newline); + text.append("ALIGNMENT"); Enumeration en = properties.keys(); while (en.hasMoreElements()) { String key = en.nextElement().toString(); - text.append("\t" + key + "=" + properties.get(key)); + text.append("\t"); + text.append(key); + text.append("="); + text.append(properties.get(key)); } // TODO: output alignment visualization settings here if required @@ -380,61 +436,90 @@ public class AnnotationFile else { seqrep = sg.getSeqrep(); - text.append("SEQUENCE_REF\t" + seqrep.getName() + "\n"); - text.append("SEQUENCE_GROUP\t" + sg.getName() + "\t" - + (seqrep.findPosition(sg.getStartRes())) + "\t" - + (seqrep.findPosition(sg.getEndRes())) + "\t" + "-1\t"); + text.append("SEQUENCE_REF\t"); + text.append(seqrep.getName()); + text.append(newline); + text.append("SEQUENCE_GROUP\t"); + text.append(sg.getName()); + text.append("\t"); + text.append((seqrep.findPosition(sg.getStartRes()))); + text.append("\t"); + text.append((seqrep.findPosition(sg.getEndRes()))); + text.append("\t"); + text.append("-1\t"); } for (int s = 0; s < sg.getSize(); s++) { - text.append(sg.getSequenceAt(s).getName() + "\t"); + text.append(sg.getSequenceAt(s).getName()); + text.append("\t"); } - - text.append("\nPROPERTIES\t" + sg.getName() + "\t"); + text.append(newline); + text.append("PROPERTIES\t"); + text.append(sg.getName()); + text.append("\t"); if (sg.getDescription() != null) { - text.append("description=" + sg.getDescription() + "\t"); + text.append("description="); + text.append(sg.getDescription()); + text.append("\t"); } if (sg.cs != null) { - text.append("colour=" + ColourSchemeProperty.getColourName(sg.cs) - + "\t"); + text.append("colour="); + text.append(ColourSchemeProperty.getColourName(sg.cs)); + text.append("\t"); if (sg.cs.getThreshold() != 0) { - text.append("pidThreshold=" + sg.cs.getThreshold()); + text.append("pidThreshold="); + text.append(sg.cs.getThreshold()); } if (sg.cs.conservationApplied()) { - text.append("consThreshold=" + sg.cs.getConservationInc() + "\t"); + text.append("consThreshold="); + text.append(sg.cs.getConservationInc()); + text.append("\t"); } } - text.append("outlineColour=" - + jalview.util.Format.getHexString(sg.getOutlineColour()) - + "\t"); - - text.append("displayBoxes=" + sg.getDisplayBoxes() + "\t"); - text.append("displayText=" + sg.getDisplayText() + "\t"); - text.append("colourText=" + sg.getColourText() + "\t"); - text.append("showUnconserved=" + sg.getShowNonconserved() + "\t"); + text.append("outlineColour="); + text.append(jalview.util.Format.getHexString(sg.getOutlineColour())); + text.append("\t"); + + text.append("displayBoxes="); + text.append(sg.getDisplayBoxes()); + text.append("\t"); + text.append("displayText="); + text.append(sg.getDisplayText()); + text.append("\t"); + text.append("colourText="); + text.append(sg.getColourText()); + text.append("\t"); + text.append("showUnconserved="); + text.append(sg.getShowNonconserved()); + text.append("\t"); if (sg.textColour != java.awt.Color.black) { - text.append("textCol1=" - + jalview.util.Format.getHexString(sg.textColour) + "\t"); + text.append("textCol1="); + text.append(jalview.util.Format.getHexString(sg.textColour)); + text.append("\t"); } if (sg.textColour2 != java.awt.Color.white) { - text.append("textCol2=" - + jalview.util.Format.getHexString(sg.textColour2) + "\t"); + text.append("textCol2="); + text.append(jalview.util.Format.getHexString(sg.textColour2)); + text.append("\t"); } if (sg.thresholdTextColour != 0) { - text.append("textColThreshold=" + sg.thresholdTextColour + "\t"); + text.append("textColThreshold="); + text.append(sg.thresholdTextColour); + text.append("\t"); } if (sg.idColour != null) { - text.append("idColour=" - + jalview.util.Format.getHexString(sg.idColour) + "\t"); + text.append("idColour="); + text.append(jalview.util.Format.getHexString(sg.idColour)); + text.append("\t"); } if (sg.isHidereps()) { @@ -447,9 +532,11 @@ public class AnnotationFile if (seqrep != null) { // terminate the last line and clear the sequence ref for the group - text.append("\nSEQUENCE_REF"); + text.append(newline); + text.append("SEQUENCE_REF"); } - text.append("\n\n"); + text.append(newline); + text.append(newline); } } @@ -502,7 +589,7 @@ public class AnnotationFile public boolean parseAnnotationFrom(AlignmentI al, BufferedReader in) throws Exception { - boolean modified=false; + boolean modified = false; String groupRef = null; Hashtable groupRefRows = new Hashtable(); @@ -526,10 +613,11 @@ public class AnnotationFile if (aa[aai].autoCalculated) { // make a note of the name and description - autoAnnots - .put(autoAnnotsKey(aa[aai], aa[aai].sequenceRef, (aa[aai].groupRef==null ? null : aa[aai].groupRef.getName()) - ), - new Integer(1)); + autoAnnots.put( + autoAnnotsKey(aa[aai], aa[aai].sequenceRef, + (aa[aai].groupRef == null ? null + : aa[aai].groupRef.getName())), + new Integer(1)); } } } @@ -578,23 +666,26 @@ public class AnnotationFile { // TODO: use graduated colour def'n here too colourAnnotations(al, st.nextToken(), st.nextToken()); - modified=true;continue; + modified = true; + continue; } else if (token.equalsIgnoreCase("COMBINE")) { combineAnnotations(al, st); - modified=true;continue; + modified = true; + continue; } else if (token.equalsIgnoreCase("ROWPROPERTIES")) { addRowProperties(al, st); - modified=true;continue; + modified = true; + continue; } else if (token.equalsIgnoreCase("GRAPHLINE")) { addLine(al, st); - modified=true; + modified = true; continue; } @@ -659,18 +750,21 @@ public class AnnotationFile else if (token.equalsIgnoreCase("PROPERTIES")) { addProperties(al, st); - modified=true; continue; + modified = true; + continue; } else if (token.equalsIgnoreCase("BELOW_ALIGNMENT")) { setBelowAlignment(al, st); - modified=true;continue; + modified = true; + continue; } else if (token.equalsIgnoreCase("ALIGNMENT")) { addAlignmentDetails(al, st); - modified=true;continue; + modified = true; + continue; } // Parse out the annotation row @@ -742,8 +836,8 @@ public class AnnotationFile annotation.score = score; if (!overrideAutoAnnot - && autoAnnots - .containsKey(autoAnnotsKey(annotation, refSeq, groupRef))) + && autoAnnots.containsKey(autoAnnotsKey(annotation, refSeq, + groupRef))) { // skip - we've already got an automatic annotation of this type. continue; @@ -791,7 +885,7 @@ public class AnnotationFile } } // and set modification flag - modified=true; + modified = true; } // Finally, resolve the groupRefs Enumeration en = groupRefRows.keys(); @@ -838,16 +932,12 @@ public class AnnotationFile return modified; } - private Object autoAnnotsKey(AlignmentAnnotation annotation, SequenceI refSeq, String groupRef) + private Object autoAnnotsKey(AlignmentAnnotation annotation, + SequenceI refSeq, String groupRef) { - return annotation.graph - + "\t" - + annotation.label - + "\t" - + annotation.description - + "\t" - + (refSeq != null ? refSeq - .getDisplayId(true) : ""); + return annotation.graph + "\t" + annotation.label + "\t" + + annotation.description + "\t" + + (refSeq != null ? refSeq.getDisplayId(true) : ""); } Annotation parseAnnotation(String string, int graphStyle) @@ -1387,7 +1477,7 @@ public class AnnotationFile else { sp.append(atos.substring(p)); - sp.append("\n"); + sp.append(newline); } p = cp + 1; } while (p > 0);