X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Furls%2FUrlProviderImpl.java;h=d2fd3597b498f082ae53bfef2a8f14e560ae75e0;hb=bb9efbe53b2e92a1e3fcc78d7a6b6f5563e43e97;hp=554145d203a4ab95c3d73c35c5667eeae053b093;hpb=9331850e50bdab97c3a96e7371d2d53265217693;p=jalview.git diff --git a/src/jalview/urls/UrlProviderImpl.java b/src/jalview/urls/UrlProviderImpl.java index 554145d..d2fd359 100644 --- a/src/jalview/urls/UrlProviderImpl.java +++ b/src/jalview/urls/UrlProviderImpl.java @@ -20,75 +20,104 @@ */ package jalview.urls; -import java.util.Vector; +import jalview.urls.api.UrlProviderI; +import jalview.util.UrlLink; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; import java.util.regex.Pattern; -public class UrlProviderImpl implements UrlProviderI +/** + * Leaf node of UrlProvider composite + * + * @author $author$ + * @version $Revision$ + */ + +public abstract class UrlProviderImpl implements UrlProviderI { + // minimum length of substitution in url link string + protected static final int MIN_SUBST_LENGTH = 4; + private static final Pattern MIRIAM_PATTERN = Pattern .compile("^MIR:\\d{8}$"); - protected String defaultUrl; - @Override - public Vector getLinksForDisplay() - { - // TODO Auto-generated method stub - return null; - } + protected String primaryUrl; - @Override - public String getDefaultUrl() - { - return defaultUrl; - } - - @Override - public String getDefaultUrl(String seqid) + protected String getPrimaryUrl(String seqid, + HashMap urls) { - // TODO Auto-generated method stub - return null; + if (seqid.length() < MIN_SUBST_LENGTH) + { + return null; + } + else if (primaryUrl == null) + { + return null; + } + else if (!urls.containsKey(primaryUrl)) + { + return null; + } + else + { + String url = null; + UrlLink urlLink = urls.get(primaryUrl); + String[] primaryUrls = urlLink.makeUrls(seqid, true); + if (primaryUrls == null || primaryUrls[0] == null + || primaryUrls[0].length() < MIN_SUBST_LENGTH) + { + url = null; + } + else + { + // just take first URL made from regex + url = primaryUrls[1]; + } + return url; + } } @Override - public String getDefaultTarget(String seqid) + public List getLinksForTable() { - // TODO Auto-generated method stub return null; } - @Override - public boolean setDefaultUrl(String id) - { - // TODO Auto-generated method stub - return false; - } - - @Override - public String writeUrlsAsString() + protected ArrayList getLinksForTable( + HashMap urls, ArrayList selectedUrls, + boolean selected) { - // TODO Auto-generated method stub - return null; + ArrayList displayLinks = new ArrayList(); + for (Entry entry : urls.entrySet()) + { + String key = entry.getKey(); + boolean isPrimary = (key.equals(primaryUrl)); + boolean isSelected; + if (selectedUrls != null) + { + isSelected = selectedUrls.contains(key); + } + else + { + isSelected = selected; + } + displayLinks.add(new UrlLinkDisplay(key, entry.getValue(), isSelected, + isPrimary)); + } + return displayLinks; } - @Override - public void setUrlLinks(Vector names, Vector urls) + protected boolean isMiriamId(String id) { - // TODO Auto-generated method stub - + return MIRIAM_PATTERN.matcher(id).matches(); } @Override - public String chooseDefaultUrl() + public boolean isUserEntry(String id) { - // TODO Auto-generated method stub - return null; + return !isMiriamId(id); } - - protected boolean isMiriamId(String id) - { - return MIRIAM_PATTERN.matcher(id).matches(); - } - - - }