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;
private Hashtable<String, jalviewSourceI> localSources = null;
- public static String DEFAULT_REGISTRY = "http://www.dasregistry.org/das1/sources/";
+ public static String DEFAULT_REGISTRY = "http://www.dasregistry.org/das/";
/**
* true if thread is running and we are talking to DAS registry service
DEFAULT_REGISTRY);
registry = DEFAULT_REGISTRY;
}
+ if (registry.lastIndexOf("sources.xml") == registry.length() - 11)
+ {
+ // no trailing sources.xml document for registry in JDAS
+ jalview.bin.Cache.setProperty(jalview.bin.Cache.DAS_REGISTRY_URL,
+ registry=registry.substring(0, registry.lastIndexOf("sources.xml")));
+ }
return registry;
}
private List<jalviewSourceI> getDASSources()
{
- return getDASSources(getDasRegistryURL());
+ return getDASSources(getDasRegistryURL(), this);
}
/**
* @param registryURL
* return sources from registryURL
*/
- private static List<jalviewSourceI> getDASSources(String registryURL)
+ private static List<jalviewSourceI> getDASSources(String registryURL, MultipleConnectionPropertyProviderI registry)
{
try
{
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, registry, 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)
}
return appendLocalSources();
}
-
+
/**
* generate Sources from the local das source list
*
{
localSources = new Hashtable<String, jalviewSourceI>();
}
- jalviewSourceI src = new JalviewSource(local, true);
+ jalviewSourceI src = new JalviewSource(local, this, true);
localSources.put(local.getTitle(), src);
return src;
}