import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map.Entry;
import java.util.Vector;
import org.json.simple.JSONArray;
{
// File idFile = getIdentifiers();
urls = readIdentifiers(new FileReader(idFileName));
+ selectedUrls = new ArrayList<String>();
checkSelectionMatchesUrls(cachedUrlList);
} catch (IOException e)
{
-
+ System.out.println("Exception reading URLs from identifiers.org");
+ System.out.println(e.getMessage());
}
}
private void checkSelectionMatchesUrls(String cachedUrlList)
{
- selectedUrls = new ArrayList<String>();
+
String[] prevSelected = cachedUrlList.split("\\" + SEP);
for (String id : prevSelected)
{
private void checkSelectionMatchesUrls(Vector<String> idList)
{
- selectedUrls = new ArrayList<String>();
String[] prevSelected = new String[idList.size()];
idList.toArray(prevSelected);
for (String id : prevSelected)
@Override
public String writeUrlsAsString()
{
- StringBuffer links = new StringBuffer();
- for (String k : selectedUrls)
+ if (!selectedUrls.isEmpty())
{
- links.append(k);
+ StringBuffer links = new StringBuffer();
+ for (String k : selectedUrls)
+ {
+ links.append(k);
+ links.append(SEP);
+ }
+ // remove last SEP
+ links.setLength(links.length() - 1);
+ return links.toString();
}
- return links.toString();
+ return "";
}
@Override
Vector<String> links = new Vector<String>();
for (String key : selectedUrls)
{
- links.add(key + SEP + urls.get(key).get("url") + "/" + DELIM
+ links.add(urls.get(key).get("name") + SEP + urls.get(key).get("url")
+ + "/" + DELIM
+ DB_ACCESSION + DELIM);
}
return links;
}
@Override
+ public List<UrlLinkDisplay> getLinksForTable()
+ {
+ ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+ for (Entry<String, HashMap<String, String>> entry : urls.entrySet())
+ {
+ String key = entry.getKey();
+ boolean isDefault = (key == defaultUrl);
+ boolean isSelected = (selectedUrls.contains(key));
+ displayLinks.add(new UrlLinkDisplay(key,
+ entry.getValue().get("name"),
+ entry.getValue().get("url")
+ + "/" + DELIM + DB_ACCESSION + DELIM, isSelected, isDefault));
+ }
+ return displayLinks;
+ }
+
+ @Override
+ public void setUrlData(List<UrlLinkDisplay> links)
+ {
+ selectedUrls = new ArrayList<String>();
+
+ Iterator<UrlLinkDisplay> it = links.iterator();
+ while (it.hasNext())
+ {
+ UrlLinkDisplay link = it.next();
+
+ // Handle links with MIRIAM ids only
+ if (isMiriamId(link.getId())) // TODO separate use of name and id
+ {
+ // select/deselect links accordingly and set default url
+
+ if (link.getIsSelected())
+ {
+ if (urls.containsKey(link.getId()))
+ {
+ selectedUrls.add(link.getId());
+ }
+ if (link.getIsDefault())
+ {
+ setDefaultUrl(link.getId());
+ }
+
+ }
+ }
+
+ }
+ }
+
+ @Override
public String getDefaultUrl(String seqid)
{
return urls.get(defaultUrl).get("url") + "/" + seqid;