X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FSequenceAnnotationReport.java;h=6c8f40f9bf3ba9b9b5e1a1e1e854fa327dd7b74e;hb=4d890895e6aabfc36d45d3b53781ee2cf5cfafdc;hp=59daa8756a7d3f01c8cfcf1d4ddc7ad391bca610;hpb=a86ad83f39c98c9a06d08a1ba1fa8b529d30a63c;p=jalview.git diff --git a/src/jalview/io/SequenceAnnotationReport.java b/src/jalview/io/SequenceAnnotationReport.java index 59daa87..6c8f40f 100644 --- a/src/jalview/io/SequenceAnnotationReport.java +++ b/src/jalview/io/SequenceAnnotationReport.java @@ -25,13 +25,13 @@ import jalview.datamodel.DBRefSource; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; import jalview.io.gff.GffConstants; -import jalview.util.DBRefUtils; import jalview.util.MessageManager; import jalview.util.UrlLink; -import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Comparator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -141,8 +141,7 @@ public class SequenceAnnotationReport void appendFeature(final StringBuilder sb, int rpos, Map minmax, SequenceFeature feature) { - String tmpString; - if (feature.getType().equals("disulfide bond")) + if (feature.isContactFeature()) { if (feature.getBegin() == rpos || feature.getEnd() == rpos) { @@ -150,7 +149,8 @@ public class SequenceAnnotationReport { sb.append("
"); } - sb.append("disulfide bond ").append(feature.getBegin()).append(":") + sb.append(feature.getType()).append(" ").append(feature.getBegin()) + .append(":") .append(feature.getEnd()); } } @@ -178,7 +178,7 @@ public class SequenceAnnotationReport if (feature.getDescription() != null && !feature.description.equals(feature.getType())) { - tmpString = feature.getDescription(); + String tmpString = feature.getDescription(); String tmp2up = tmpString.toUpperCase(); int startTag = tmp2up.indexOf(""); if (startTag > -1) @@ -223,11 +223,11 @@ public class SequenceAnnotationReport // check score should be shown if (!Float.isNaN(feature.getScore())) { - float[][] rng = (minmax == null) ? null : ((float[][]) minmax - .get(feature.getType())); + float[][] rng = (minmax == null) ? null : minmax.get(feature + .getType()); if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) { - sb.append(" Score=" + feature.getScore()); + sb.append(" Score=").append(String.valueOf(feature.getScore())); } } String status = (String) feature.getValue("status"); @@ -266,16 +266,17 @@ public class SequenceAnnotationReport { try { - for (String[] urllink : createLinksFrom(null, urlstring)) + for (List urllink : createLinksFrom(null, urlstring)) { sb.append("
" - + (urllink[0].toLowerCase().equals( - urllink[1].toLowerCase()) ? urllink[0] - : (urllink[0] + ":" + urllink[1])) + + (urllink.get(0).toLowerCase() + .equals(urllink.get(1).toLowerCase()) ? urllink + .get(0) : (urllink.get(0) + ":" + urllink + .get(1))) + "
"); } } catch (Exception x) @@ -294,125 +295,22 @@ public class SequenceAnnotationReport * * @param seq * @param link - * @return String[][] { String[] { link target, link label, dynamic component - * inserted (if any), url }} + * @return Collection< List > { List { link target, link + * label, dynamic component inserted (if any), url }} */ - String[][] createLinksFrom(SequenceI seq, String link) + Collection> createLinksFrom(SequenceI seq, String link) { - List urlSets = new ArrayList(); - List uniques = new ArrayList(); + Map> urlSets = new LinkedHashMap>(); UrlLink urlLink = new UrlLink(link); if (!urlLink.isValid()) { System.err.println(urlLink.getInvalidMessage()); return null; } - final String target = urlLink.getTarget(); // link.substring(0, - // link.indexOf("|")); - final String label = urlLink.getLabel(); - if (seq != null && urlLink.isDynamic()) - { - urlSets.addAll(createDynamicLinks(seq, urlLink, uniques)); - } - else - { - String unq = label + "|" + urlLink.getUrl_prefix(); - if (!uniques.contains(unq)) - { - uniques.add(unq); - urlSets.add(new String[] { target, label, null, - urlLink.getUrl_prefix() }); - } - } - - return urlSets.toArray(new String[][] {}); - } - /** - * Formats and returns a list of dynamic href links - * - * @param seq - * @param urlLink - * @param uniques - */ - List createDynamicLinks(SequenceI seq, UrlLink urlLink, - List uniques) - { - List result = new ArrayList(); - final String target = urlLink.getTarget(); - final String label = urlLink.getLabel(); + urlLink.createLinksFromSeq(seq, urlSets); - // collect matching db-refs - DBRefEntry[] dbr = DBRefUtils.selectRefs(seq.getDBRefs(), - new String[] { target }); - // collect id string too - String id = seq.getName(); - String descr = seq.getDescription(); - if (descr != null && descr.length() < 1) - { - descr = null; - } - if (dbr != null) - { - for (int r = 0; r < dbr.length; r++) - { - if (id != null && dbr[r].getAccessionId().equals(id)) - { - // suppress duplicate link creation for the bare sequence ID - // string with this link - id = null; - } - // create Bare ID link for this URL - String[] urls = urlLink.makeUrls(dbr[r].getAccessionId(), true); - if (urls != null) - { - for (int u = 0; u < urls.length; u += 2) - { - String unq = urls[u] + "|" + urls[u + 1]; - if (!uniques.contains(unq)) - { - result.add(new String[] { target, label, urls[u], urls[u + 1] }); - uniques.add(unq); - } - } - } - } - } - if (id != null) - { - // create Bare ID link for this URL - String[] urls = urlLink.makeUrls(id, true); - if (urls != null) - { - for (int u = 0; u < urls.length; u += 2) - { - String unq = urls[u] + "|" + urls[u + 1]; - if (!uniques.contains(unq)) - { - result.add(new String[] { target, label, urls[u], urls[u + 1] }); - uniques.add(unq); - } - } - } - } - if (descr != null && urlLink.getRegexReplace() != null) - { - // create link for this URL from description only if regex matches - String[] urls = urlLink.makeUrls(descr, true); - if (urls != null) - { - for (int u = 0; u < urls.length; u += 2) - { - String unq = urls[u] + "|" + urls[u + 1]; - if (!uniques.contains(unq)) - { - result.add(new String[] { target, label, urls[u], urls[u + 1] }); - uniques.add(unq); - } - } - } - } - return result; + return urlSets.values(); } public void createSequenceAnnotationReport(final StringBuilder tip,