JAL-972 - test to distinguish sources based on age - used to select one of duplicate...
[jalview.git] / src / jalview / ws / dbsources / das / datamodel / DasSourceRegistry.java
index 07a8656..6d62d97 100644 (file)
@@ -10,6 +10,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
@@ -103,9 +104,24 @@ public class DasSourceRegistry implements DasSourceRegistryI,
 
       List<SOURCE> dassources = sources.getSOURCE();
       ArrayList<jalviewSourceI> dsrc = new ArrayList<jalviewSourceI>();
+      HashMap<String,Integer> latests=new HashMap<String, Integer>();
+      Integer latest;
       for (SOURCE src : dassources)
       {
-        dsrc.add(new JalviewSource(src, false));
+        JalviewSource jsrc=new JalviewSource(src, false);
+        latest=latests.get(jsrc.getSourceURL());
+        if (latest!=null)
+        {
+          if (jsrc.isNewerThan(dsrc.get(latest.intValue())))
+          {
+            dsrc.set(latest.intValue(), jsrc);
+          } else {
+            System.out.println("Debug: Ingored older source "+jsrc.getTitle());
+          }
+        } else {
+          latests.put(jsrc.getSourceURL(), Integer.valueOf(dsrc.size()));
+          dsrc.add(jsrc);
+        }
       }
       return dsrc;
     } catch (Exception ex)