JAL-2316 Added jalview.urls.* packages
[jalview.git] / src / jalview / urls / UrlProviderImpl.java
index 82eeee9..87e40c6 100644 (file)
  */
 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;
 
 /**
@@ -31,56 +36,47 @@ import java.util.regex.Pattern;
  * @version $Revision$
  */
 
-public class UrlProviderImpl implements UrlProviderI
+public abstract class UrlProviderImpl implements UrlProviderI
 {
-  private static final Pattern MIRIAM_PATTERN = Pattern
-          .compile("^MIR:\\d{8}$");
-
   // minimum length of substitution in url link string
   protected static final int MIN_SUBST_LENGTH = 4;
 
-  protected String defaultUrl;
-
-  @Override
-  public Vector<String> getLinksForMenu()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
-
-  @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;
-  }
+  private static final Pattern MIRIAM_PATTERN = Pattern
+          .compile("^MIR:\\d{8}$");
 
-  @Override
-  public String writeUrlsAsString()
-  {
-    // TODO Auto-generated method stub
-    return null;
-  }
+  protected String defaultUrl;
 
-  @Override
-  public String chooseDefaultUrl()
+  protected String getDefaultUrl(String seqid, HashMap<String, UrlLink> urls)
   {
-    // TODO Auto-generated method stub
-    return null;
+    if (seqid.length() < MIN_SUBST_LENGTH)
+    {
+      return null;
+    }
+    else if (defaultUrl == null)
+    {
+      return null;
+    }
+    else if (!urls.containsKey(defaultUrl))
+    {
+      return null;
+    }
+    else
+    {
+      String url = null;
+      UrlLink urlLink = urls.get(defaultUrl);
+      String[] defaultUrls = urlLink.makeUrls(seqid, true);
+      if (defaultUrls == null || defaultUrls[0] == null
+              || defaultUrls[0].length() < MIN_SUBST_LENGTH)
+      {
+        url = null;
+      }
+      else
+      {
+        // just take first URL made from regex
+        url = defaultUrls[1];
+      }
+      return url;
+    }
   }
 
   @Override
@@ -89,10 +85,28 @@ public class UrlProviderImpl implements UrlProviderI
     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 isDefault = (key.equals(defaultUrl));
+      boolean isSelected;
+      if (selectedUrls != null)
+      {
+        isSelected = selectedUrls.contains(key);
+      }
+      else
+      {
+        isSelected = selected;
+      }
+      displayLinks.add(new UrlLinkDisplay(key, entry.getValue(),
+              isSelected, isDefault));
+    }
+    return displayLinks;
   }
 
   protected boolean isMiriamId(String id)
@@ -105,5 +119,5 @@ public class UrlProviderImpl implements UrlProviderI
   {
     return !isMiriamId(id);
   }
-
 }
+