import jalview.util.MessageManager;
import jalview.util.UrlLink;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.StringTokenizer;
import java.util.Vector;
while (st.hasMoreElements())
{
String name = st.nextToken();
- String url = st.nextToken();
- // check for '|' within a regex
- int rxstart = url.indexOf(DELIM + DB_ACCESSION + DELIM);
- if (rxstart == -1)
- {
- rxstart = url.indexOf(DELIM + SEQUENCE_ID + DELIM);
- }
- while (rxstart == -1 && url.indexOf("/=" + DELIM) == -1
- && st.hasMoreTokens())
+
+ if (!isMiriamId(name))
{
- url = url + SEP + st.nextToken();
+ // this one of our custom urls
+ String url = st.nextToken();
+ // check for '|' within a regex
+ int rxstart = url.indexOf(DELIM + DB_ACCESSION + DELIM);
+ if (rxstart == -1)
+ {
+ rxstart = url.indexOf(DELIM + SEQUENCE_ID + DELIM);
+ }
+ while (rxstart == -1 && url.indexOf("/=" + DELIM) == -1
+ && st.hasMoreTokens())
+ {
+ url = url + SEP + st.nextToken();
+ }
+ urls.put(name, new UrlLink(name + SEP + url));
}
- urls.put(name, new UrlLink(name + SEP + url));
}
} catch (Exception ex)
{
}
@Override
+ public List<UrlLinkDisplay> getLinksForTable()
+ {
+ ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+ for (Entry<String, UrlLink> entry : urls.entrySet())
+ {
+ String key = entry.getKey();
+ boolean isDefault = (key.equals(defaultUrl));
+ boolean isSelected = true; // custom urls always selected
+ String displayLink = entry.getValue().toString().split("\\|")[1]; // TODO
+ // sort
+ // this
+ // out
+ // properly!
+ displayLinks.add(new UrlLinkDisplay(key, key, displayLink,
+ isSelected,
+ isDefault));
+ }
+ return displayLinks;
+ }
+
+ @Override
public boolean setDefaultUrl(String id)
{
if (urls.containsKey(id))
}
@Override
+ public void setUrlData(List<UrlLinkDisplay> links)
+ {
+ HashMap<String, UrlLink> newurls = new HashMap<String, UrlLink>();
+
+ Iterator<UrlLinkDisplay> it = links.iterator();
+ while (it.hasNext())
+ {
+ UrlLinkDisplay link = it.next();
+
+ // MIRIAM ids will be handled by a different UrlProvider class
+ if (!isMiriamId(link.getId()))
+ {
+
+ // don't allow duplicate key names as entries will be overwritten
+ if (newurls.containsKey(link.getId()))
+ {
+ throw new IllegalArgumentException(MessageManager.formatMessage(
+ "exception.url_cannot_have_duplicate_id", link.getId()));
+ }
+ if (link.getIsSelected())
+ {
+ newurls.put(link.getId(),
+ new UrlLink(link.getId() + SEP + link.getUrl()));
+
+ // sort out default and selected ids
+ if (link.getIsDefault())
+ {
+ setDefaultUrl(link.getId());
+ }
+ }
+ // TODO KM make it possible to set and save selected custom urls
+
+ }
+
+ }
+ urls = newurls;
+ }
+
+ @Override
public String chooseDefaultUrl()
{
// unilaterally set the default id to the EMBL_EBI link