X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Furls%2FIdentifiersUrlProvider.java;fp=src%2Fjalview%2Furls%2FIdentifiersUrlProvider.java;h=a74ad07d22e7ed21ddd0067606f3f6d8e7be910e;hb=c25a5c7301fa43bec8da032f93898d6133391f8a;hp=7819136d09a1fb1c7130663258e363a4c2358de9;hpb=7b733c615ca6ef20fd2e330c89aa566de0d4836f;p=jalview.git diff --git a/src/jalview/urls/IdentifiersUrlProvider.java b/src/jalview/urls/IdentifiersUrlProvider.java index 7819136..a74ad07 100644 --- a/src/jalview/urls/IdentifiersUrlProvider.java +++ b/src/jalview/urls/IdentifiersUrlProvider.java @@ -35,6 +35,9 @@ import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; import java.util.Vector; import org.json.simple.JSONArray; @@ -65,11 +68,13 @@ public class IdentifiersUrlProvider extends UrlProviderImpl { // File idFile = getIdentifiers(); urls = readIdentifiers(new FileReader(idFileName)); + selectedUrls = new ArrayList(); checkSelectionMatchesUrls(cachedUrlList); } catch (IOException e) { - + System.out.println("Exception reading URLs from identifiers.org"); + System.out.println(e.getMessage()); } } @@ -129,7 +134,7 @@ public class IdentifiersUrlProvider extends UrlProviderImpl private void checkSelectionMatchesUrls(String cachedUrlList) { - selectedUrls = new ArrayList(); + String[] prevSelected = cachedUrlList.split("\\" + SEP); for (String id : prevSelected) { @@ -145,7 +150,6 @@ public class IdentifiersUrlProvider extends UrlProviderImpl private void checkSelectionMatchesUrls(Vector idList) { - selectedUrls = new ArrayList(); String[] prevSelected = new String[idList.size()]; idList.toArray(prevSelected); for (String id : prevSelected) @@ -183,12 +187,19 @@ public class IdentifiersUrlProvider extends UrlProviderImpl @Override public String writeUrlsAsString() { - StringBuffer links = new StringBuffer(); - for (String k : selectedUrls) + if (!selectedUrls.isEmpty()) { - links.append(k); + StringBuffer links = new StringBuffer(); + for (String k : selectedUrls) + { + links.append(k); + links.append(SEP); + } + // remove last SEP + links.setLength(links.length() - 1); + return links.toString(); } - return links.toString(); + return ""; } @Override @@ -197,13 +208,63 @@ public class IdentifiersUrlProvider extends UrlProviderImpl Vector links = new Vector(); for (String key : selectedUrls) { - links.add(key + SEP + urls.get(key).get("url") + "/" + DELIM + links.add(urls.get(key).get("name") + SEP + urls.get(key).get("url") + + "/" + DELIM + DB_ACCESSION + DELIM); } return links; } @Override + public List getLinksForTable() + { + ArrayList displayLinks = new ArrayList(); + for (Entry> entry : urls.entrySet()) + { + String key = entry.getKey(); + boolean isDefault = (key == defaultUrl); + boolean isSelected = (selectedUrls.contains(key)); + displayLinks.add(new UrlLinkDisplay(key, + entry.getValue().get("name"), + entry.getValue().get("url") + + "/" + DELIM + DB_ACCESSION + DELIM, isSelected, isDefault)); + } + return displayLinks; + } + + @Override + public void setUrlData(List links) + { + selectedUrls = new ArrayList(); + + Iterator it = links.iterator(); + while (it.hasNext()) + { + UrlLinkDisplay link = it.next(); + + // Handle links with MIRIAM ids only + if (isMiriamId(link.getId())) // TODO separate use of name and id + { + // select/deselect links accordingly and set default url + + if (link.getIsSelected()) + { + if (urls.containsKey(link.getId())) + { + selectedUrls.add(link.getId()); + } + if (link.getIsDefault()) + { + setDefaultUrl(link.getId()); + } + + } + } + + } + } + + @Override public String getDefaultUrl(String seqid) { return urls.get(defaultUrl).get("url") + "/" + seqid;