JAL-2316 Adjusted unit tests. Tidied UrlLinkProviderI interface.
[jalview.git] / src / jalview / urls / UrlProvider.java
index 17b179b..9e8d7bc 100644 (file)
@@ -20,6 +20,8 @@
  */
 package jalview.urls;
 
+import static jalview.util.UrlConstants.SEP;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +42,9 @@ public class UrlProvider implements UrlProviderI
   // Specific reference to custom URL link provider
   private UrlProviderI customProvider;
 
+  // List of columns which this provider will supply
+  private List<String> colNames = new ArrayList<String>();
+
   /**
    * Construct URL provider from string of cached URLs, and set default URL
    * 
@@ -54,11 +59,14 @@ public class UrlProvider implements UrlProviderI
     // create all the UrlProviders we need
     providers = new ArrayList<UrlProviderI>();
     
-    UrlProviderI idProvider = new IdentifiersUrlProvider(cachedUrlList);
+    UrlProviderI idProvider = new IdentifiersUrlProvider(cachedUrlList,
+            IdentifiersUrlProvider.ID_ORG_FILE);
     customProvider = new CustomUrlProvider(cachedUrlList);
     providers.add(idProvider);
     providers.add(customProvider);
 
+    setUpColumns();
+
     // check that the defaultUrl still exists
     if (!setDefaultUrl(defaultUrlString))
     {
@@ -79,11 +87,14 @@ public class UrlProvider implements UrlProviderI
     // create all the UrlProviders we need
     providers = new ArrayList<UrlProviderI>();
 
-    UrlProviderI idProvider = new IdentifiersUrlProvider(urlList);
+    UrlProviderI idProvider = new IdentifiersUrlProvider(null,
+            IdentifiersUrlProvider.ID_ORG_FILE);
     customProvider = new CustomUrlProvider(urlList);
     providers.add(idProvider);
     providers.add(customProvider);
 
+    setUpColumns();
+
     // check that the defaultUrl still exists
     if (!setDefaultUrl(defaultUrlString))
     {
@@ -91,25 +102,13 @@ public class UrlProvider implements UrlProviderI
     }
   }
 
-  @Override
-  public String getDefaultUrl()
+  private void setUpColumns()
   {
-    String defaultUrl = null;
-    for (UrlProviderI p : providers)
-    {
-      defaultUrl = p.getDefaultUrl();
-      if (defaultUrl != null)
-      {
-        return defaultUrl;
-      }
-    }
-
-    // no provider has a default set, just choose one
-    if (defaultUrl == null)
-    {
-      defaultUrl = chooseDefaultUrl();
-    }
-    return defaultUrl;
+    colNames.add("Name");
+    colNames.add("URL");
+    colNames.add("In Menu");
+    colNames.add("Default");
+    colNames.add("ID");
   }
   
   @Override
@@ -132,17 +131,20 @@ public class UrlProvider implements UrlProviderI
     for (UrlProviderI p : providers)
     {
       result += p.writeUrlsAsString();
+      result += SEP;
     }
+    // remove last sep
+    result = result.substring(0, result.length() - 1);
     return result;
   }
 
   @Override
-  public Vector<String> getLinksForDisplay()
+  public Vector<String> getLinksForMenu()
   {
     Vector<String> fullLinks = new Vector<String>();
     for (UrlProviderI p : providers)
     {
-      List<String> links = p.getLinksForDisplay();
+      List<String> links = p.getLinksForMenu();
       if (links != null)
       {
         // will obliterate links with same keys from different providers
@@ -154,6 +156,26 @@ public class UrlProvider implements UrlProviderI
   }
 
   @Override
+  public List<UrlLinkDisplay> getLinksForTable()
+  {
+    ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+    for (UrlProviderI p : providers)
+    {
+      displayLinks.addAll(p.getLinksForTable());
+    }
+    return displayLinks;
+  }
+
+  @Override
+  public void setUrlData(List<UrlLinkDisplay> links)
+  {
+    for (UrlProviderI p : providers)
+    {
+      p.setUrlData(links);
+    }
+  }
+
+  @Override
   public String getDefaultUrl(String seqid)
   {
     String link = null;
@@ -190,13 +212,6 @@ public class UrlProvider implements UrlProviderI
     }
     return target;
   }
-
-  @Override
-  public void setUrlLinks(Vector<String> names, Vector<String> urls)
-  {
-    // only allow custom urls to be updated by user
-    customProvider.setUrlLinks(names, urls);
-  }
   
   @Override
   public String chooseDefaultUrl()
@@ -205,4 +220,15 @@ public class UrlProvider implements UrlProviderI
     return customProvider.chooseDefaultUrl();
   }
 
+  @Override
+  public boolean isUserEntry(String id)
+  {
+    return customProvider.isUserEntry(id);
+  }
+
+  @Override
+  public List<String> getDisplayColumnNames()
+  {
+    return colNames.subList(0, 4);
+  }
 }