X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FSequenceAnnotationReport.java;h=e41b38607f3ae99e22a83ed9702376165fdad05d;hb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;hp=7f46c671ba71443eac0e6ad7f0810edc30a31933;hpb=c0f6c4074d66aa9563dceab4f63d3b4f37e53c33;p=jalview.git diff --git a/src/jalview/io/SequenceAnnotationReport.java b/src/jalview/io/SequenceAnnotationReport.java index 7f46c67..e41b386 100644 --- a/src/jalview/io/SequenceAnnotationReport.java +++ b/src/jalview/io/SequenceAnnotationReport.java @@ -1,14 +1,34 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) + * Copyright (C) 2015 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. + * + * 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.io; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Vector; - import jalview.datamodel.DBRefEntry; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.util.UrlLink; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; + /** * generate HTML reports for a sequence * @@ -34,30 +54,29 @@ public class SequenceAnnotationReport * TODO refactor to Jalview 'utilities' somehow. */ public void appendFeatures(final StringBuffer tooltipText2, int rpos, - SequenceFeature[] features) + List features) { appendFeatures(tooltipText2, rpos, features, null); } public void appendFeatures(final StringBuffer tooltipText2, int rpos, - SequenceFeature[] features, Hashtable minmax) + List features, Hashtable minmax) { String tmpString; if (features != null) { - for (int i = 0; i < features.length; i++) + for (SequenceFeature feature : features) { - if (features[i].getType().equals("disulfide bond")) + if (feature.getType().equals("disulfide bond")) { - if (features[i].getBegin() == rpos - || features[i].getEnd() == rpos) + if (feature.getBegin() == rpos || feature.getEnd() == rpos) { if (tooltipText2.length() > 6) { tooltipText2.append("
"); } - tooltipText2.append("disulfide bond " + features[i].getBegin() - + ":" + features[i].getEnd()); + tooltipText2.append("disulfide bond " + feature.getBegin() + + ":" + feature.getEnd()); } } else @@ -67,25 +86,24 @@ public class SequenceAnnotationReport tooltipText2.append("
"); } // TODO: remove this hack to display link only features - boolean linkOnly = features[i].getValue("linkonly") != null; + boolean linkOnly = feature.getValue("linkonly") != null; if (!linkOnly) { - tooltipText2.append(features[i].getType() + " "); + tooltipText2.append(feature.getType() + " "); if (rpos != 0) { // we are marking a positional feature - tooltipText2.append(features[i].begin); + tooltipText2.append(feature.begin); } - if (features[i].begin != features[i].end) + if (feature.begin != feature.end) { - tooltipText2.append(" " + features[i].end); + tooltipText2.append(" " + feature.end); } - if (features[i].getDescription() != null - && !features[i].description.equals(features[i] - .getType())) + if (feature.getDescription() != null + && !feature.description.equals(feature.getType())) { - tmpString = features[i].getDescription(); + tmpString = feature.getDescription(); String tmp2up = tmpString.toUpperCase(); int startTag = tmp2up.indexOf(""); if (startTag > -1) @@ -130,27 +148,27 @@ public class SequenceAnnotationReport } } // check score should be shown - if (features[i].getScore() != Float.NaN) + if (!Float.isNaN(feature.getScore())) { float[][] rng = (minmax == null) ? null : ((float[][]) minmax - .get(features[i].getType())); + .get(feature.getType())); if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) { - tooltipText2.append(" Score=" + features[i].getScore()); + tooltipText2.append(" Score=" + feature.getScore()); } } - if (features[i].getValue("status") != null) + if (feature.getValue("status") != null) { - String status = features[i].getValue("status").toString(); + String status = feature.getValue("status").toString(); if (status.length() > 0) { - tooltipText2.append("; (" + features[i].getValue("status") + tooltipText2.append("; (" + feature.getValue("status") + ")"); } } } } - if (features[i].links != null) + if (feature.links != null) { if (linkImageURL != null) { @@ -158,15 +176,21 @@ public class SequenceAnnotationReport } else { - for (String urlstring : (Vector) features[i].links) + for (String urlstring : feature.links) { try { for (String[] urllink : createLinksFrom(null, urlstring)) { - tooltipText2.append("
" - + (urllink[0].toLowerCase().equals(urllink[1].toLowerCase()) ? urllink[0] : (urllink[0]+ ":" + urllink[1])) + "
"); + tooltipText2.append("
" + + (urllink[0].toLowerCase().equals( + urllink[1].toLowerCase()) ? urllink[0] + : (urllink[0] + ":" + urllink[1])) + + "
"); } } catch (Exception x) { @@ -192,7 +216,7 @@ public class SequenceAnnotationReport public String[][] createLinksFrom(SequenceI seq, String link) { ArrayList urlSets = new ArrayList(); - ArrayList uniques=new ArrayList(); + ArrayList uniques = new ArrayList(); UrlLink urlLink = new UrlLink(link); if (!urlLink.isValid()) { @@ -207,8 +231,7 @@ public class SequenceAnnotationReport // collect matching db-refs DBRefEntry[] dbr = jalview.util.DBRefUtils.selectRefs(seq.getDBRef(), - new String[] - { target }); + new String[] { target }); // collect id string too String id = seq.getName(); String descr = seq.getDescription(); @@ -232,11 +255,11 @@ public class SequenceAnnotationReport { for (int u = 0; u < urls.length; u += 2) { - String unq=urls[u]+"|"+urls[u+1]; + String unq = urls[u] + "|" + urls[u + 1]; if (!uniques.contains(unq)) { - urlSets.add(new String[] - { target, label, urls[u], urls[u + 1] }); + urlSets.add(new String[] { target, label, urls[u], + urls[u + 1] }); uniques.add(unq); } } @@ -251,11 +274,11 @@ public class SequenceAnnotationReport { for (int u = 0; u < urls.length; u += 2) { - String unq=urls[u]+"|"+urls[u+1]; + String unq = urls[u] + "|" + urls[u + 1]; if (!uniques.contains(unq)) { - urlSets.add(new String[] - { target, label, urls[u], urls[u + 1] }); + urlSets.add(new String[] { target, label, urls[u], + urls[u + 1] }); uniques.add(unq); } } @@ -269,41 +292,44 @@ public class SequenceAnnotationReport { for (int u = 0; u < urls.length; u += 2) { - String unq=urls[u]+"|"+urls[u+1]; + String unq = urls[u] + "|" + urls[u + 1]; if (!uniques.contains(unq)) { - urlSets.add(new String[] - { target, label, urls[u], urls[u + 1] }); + urlSets.add(new String[] { target, label, urls[u], + urls[u + 1] }); uniques.add(unq); } } } } - } else { - String unq=label + "|" + urlLink.getUrl_prefix(); - if (!uniques.contains(unq)){ + } + else + { + String unq = label + "|" + urlLink.getUrl_prefix(); + if (!uniques.contains(unq)) + { uniques.add(unq); // Add a non-dynamic link - urlSets.add(new String[] {target, label, null, urlLink.getUrl_prefix()}); + urlSets.add(new String[] { target, label, null, + urlLink.getUrl_prefix() }); } } - return urlSets.toArray(new String[][] - {}); + return urlSets.toArray(new String[][] {}); } - public void createSequenceAnnotationReport(final StringBuffer tip, SequenceI sequence, boolean showDbRefs, boolean showNpFeats, Hashtable minmax) { - createSequenceAnnotationReport(tip, sequence, showDbRefs, showNpFeats, true, minmax); + createSequenceAnnotationReport(tip, sequence, showDbRefs, showNpFeats, + true, minmax); } public void createSequenceAnnotationReport(final StringBuffer tip, - SequenceI sequence, boolean showDbRefs, boolean showNpFeats, boolean tableWrap, - Hashtable minmax) + SequenceI sequence, boolean showDbRefs, boolean showNpFeats, + boolean tableWrap, Hashtable minmax) { String tmp; tip.append(""); @@ -315,10 +341,10 @@ public class SequenceAnnotationReport tip.append("
" + tmp); maxWidth = Math.max(maxWidth, tmp.length()); } - SequenceI ds=sequence; - while (ds.getDatasetSequence()!=null) + SequenceI ds = sequence; + while (ds.getDatasetSequence() != null) { - ds=ds.getDatasetSequence(); + ds = ds.getDatasetSequence(); } DBRefEntry[] dbrefs = ds.getDBRef(); if (showDbRefs && dbrefs != null) @@ -333,8 +359,7 @@ public class SequenceAnnotationReport } // ADD NON POSITIONAL SEQUENCE INFO - SequenceFeature[] features = ds.getSequenceFeatures(); - SequenceFeature[] tfeat = new SequenceFeature[1]; + SequenceFeature[] features = sequence.getSequenceFeatures(); if (showNpFeats && features != null) { for (int i = 0; i < features.length; i++) @@ -342,7 +367,8 @@ public class SequenceAnnotationReport if (features[i].begin == 0 && features[i].end == 0) { int sz = -tip.length(); - tfeat[0] = features[i]; + List tfeat = new ArrayList(); + tfeat.add(features[i]); appendFeatures(tip, 0, tfeat, minmax); sz += tip.length(); maxWidth = Math.max(maxWidth, sz);