*/
package jalview.urls;
+import jalview.urls.api.UrlProviderI;
+import jalview.util.UrlLink;
+
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
-import java.util.Vector;
+import java.util.Map.Entry;
import java.util.regex.Pattern;
/**
* @version $Revision$
*/
-public class UrlProviderImpl implements UrlProviderI
+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<String> getLinksForDisplay()
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getDefaultUrl()
- {
- return defaultUrl;
- }
-
- @Override
- public String getDefaultUrl(String seqid)
- {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getDefaultTarget(String seqid)
- {
- // TODO Auto-generated method stub
- return null;
- }
- @Override
- public boolean setDefaultUrl(String id)
- {
- // TODO Auto-generated method stub
- return false;
- }
+ protected String primaryUrl;
- @Override
- public String writeUrlsAsString()
+ protected String getPrimaryUrl(String seqid,
+ HashMap<String, UrlLink> urls)
{
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void setUrlLinks(Vector<String> names, Vector<String> urls)
- {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public String chooseDefaultUrl()
- {
- // 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
return null;
}
- @Override
- public void setUrlData(List<UrlLinkDisplay> links)
+ protected ArrayList<UrlLinkDisplay> getLinksForTable(
+ HashMap<String, UrlLink> urls, ArrayList<String> selectedUrls,
+ boolean selected)
{
- // deliberately left empty
+ ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+ for (Entry<String, UrlLink> 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;
}
protected boolean isMiriamId(String id)
{
return !isMiriamId(id);
}
-
}