JAL-2316 Changes following review.
[jalview.git] / src / jalview / urls / UrlProvider.java
index fcda198..bd01e89 100644 (file)
@@ -22,6 +22,8 @@ package jalview.urls;
 
 import static jalview.util.UrlConstants.SEP;
 
+import jalview.urls.api.UrlProviderI;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
@@ -57,9 +59,15 @@ public class UrlProvider implements UrlProviderI
     customProvider = findCustomProvider();
 
     // check that the defaultUrl still exists
-    if (!setDefaultUrl(defaultUrlString))
+    if (!contains(defaultUrlString))
+    {
+      // if the defaultUrl can't be found in any of the providers
+      // set up a custom default url
+      choosePrimaryUrl();
+    }
+    else
     {
-      chooseDefaultUrl();
+      setPrimaryUrl(defaultUrlString);
     }
   }
 
@@ -70,7 +78,7 @@ public class UrlProvider implements UrlProviderI
   {
     for (UrlProviderI p : providers)
     {
-      if (p.getClass().equals(CustomUrlProvider.class))
+      if (p instanceof CustomUrlProvider)
       {
         return p;
       }
@@ -82,12 +90,30 @@ public class UrlProvider implements UrlProviderI
   }
   
   @Override
-  public boolean setDefaultUrl(String id)
+  public boolean setPrimaryUrl(String id)
+  {
+    boolean outcome = false;
+    for (UrlProviderI p : providers)
+    {
+      if (p.setPrimaryUrl(id))
+      {
+        outcome = true;
+      }
+    }
+    if (!outcome)
+    {
+      throw new IllegalArgumentException();
+    }
+    return outcome;
+  }
+
+  @Override
+  public boolean contains(String id)
   {
     boolean outcome = false;
     for (UrlProviderI p : providers)
     {
-      if (p.setDefaultUrl(id))
+      if (p.contains(id))
       {
         outcome = true;
       }
@@ -149,24 +175,23 @@ public class UrlProvider implements UrlProviderI
   {
     for (UrlProviderI p : providers)
     {
-      p.setDefaultUrl(null);
       p.setUrlData(links);
     }
   }
 
   @Override
-  public String getDefaultUrl(String seqid)
+  public String getPrimaryUrl(String seqid)
   {
     String link = null;
     for (UrlProviderI p : providers)
     {
-      if (p.getDefaultUrl(seqid) == null)
+      if (p.getPrimaryUrl(seqid) == null)
       {
         continue;
       }
       else
       {
-        link = p.getDefaultUrl(seqid);
+        link = p.getPrimaryUrl(seqid);
         break;
       }
     }
@@ -174,18 +199,18 @@ public class UrlProvider implements UrlProviderI
   }
 
   @Override
-  public String getDefaultUrlId()
+  public String getPrimaryUrlId()
   {
     String id = null;
     for (UrlProviderI p : providers)
     {
-      if (p.getDefaultUrlId() == null)
+      if (p.getPrimaryUrlId() == null)
       {
         continue;
       }
       else
       {
-        id = p.getDefaultUrlId();
+        id = p.getPrimaryUrlId();
         break;
       }
     }
@@ -193,18 +218,18 @@ public class UrlProvider implements UrlProviderI
   }
 
   @Override
-  public String getDefaultTarget(String seqid)
+  public String getPrimaryTarget(String seqid)
   {
     String target = null;
     for (UrlProviderI p : providers)
     {
-      if (p.getDefaultTarget(seqid) == null)
+      if (p.getPrimaryTarget(seqid) == null)
       {
         continue;
       }
       else
       {
-        target = p.getDefaultTarget(seqid);
+        target = p.getPrimaryTarget(seqid);
         break;
       }
     }
@@ -212,10 +237,10 @@ public class UrlProvider implements UrlProviderI
   }
   
   @Override
-  public String chooseDefaultUrl()
+  public String choosePrimaryUrl()
   {
     // choose a custom url default
-    return customProvider.chooseDefaultUrl();
+    return customProvider.choosePrimaryUrl();
   }
 
   @Override