JAL-4020 class formatting
[jalview.git] / src / jalview / urls / UrlProviderImpl.java
index 82eeee9..d2fd359 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,48 @@ 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 primaryUrl;
 
-  @Override
-  public String chooseDefaultUrl()
+  protected String getPrimaryUrl(String seqid,
+          HashMap<String, UrlLink> 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
@@ -89,10 +86,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 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)
@@ -105,5 +120,4 @@ public class UrlProviderImpl implements UrlProviderI
   {
     return !isMiriamId(id);
   }
-
 }