JAL-2316 Restructure identifiers.org download
[jalview.git] / src / jalview / urls / UrlProviderImpl.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.urls;
22
23 import jalview.util.UrlLink;
24
25 import java.util.ArrayList;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map.Entry;
29 import java.util.Vector;
30 import java.util.regex.Pattern;
31
32 /**
33  * Leaf node of UrlProvider composite
34  * 
35  * @author $author$
36  * @version $Revision$
37  */
38
39 public class UrlProviderImpl implements UrlProviderI
40 {
41   private static final Pattern MIRIAM_PATTERN = Pattern
42           .compile("^MIR:\\d{8}$");
43
44   // minimum length of substitution in url link string
45   protected static final int MIN_SUBST_LENGTH = 4;
46
47   protected String defaultUrl;
48
49   @Override
50   public Vector<String> getLinksForMenu()
51   {
52     // TODO Auto-generated method stub
53     return null;
54   }
55
56   @Override
57   public String getDefaultUrl(String seqid)
58   {
59     // TODO Auto-generated method stub
60     return null;
61   }
62
63   @Override
64   public String getDefaultTarget(String seqid)
65   {
66     // TODO Auto-generated method stub
67     return null;
68   }
69
70   protected String getDefaultUrl(String seqid, HashMap<String, UrlLink> urls)
71   {
72     if (seqid.length() < MIN_SUBST_LENGTH)
73     {
74       return null;
75     }
76     else if (defaultUrl == null)
77     {
78       return null;
79     }
80     else
81     {
82       String url = null;
83       UrlLink urlLink = urls.get(defaultUrl);
84       String[] defaultUrls = urlLink.makeUrls(seqid, true);
85       if (defaultUrls == null || defaultUrls[0] == null
86               || defaultUrls[0].length() < MIN_SUBST_LENGTH)
87       {
88         url = null;
89       }
90       else
91       {
92         // just take first URL made from regex
93         url = defaultUrls[1];
94       }
95       return url;
96     }
97   }
98
99   @Override
100   public boolean setDefaultUrl(String id)
101   {
102     // TODO Auto-generated method stub
103     return false;
104   }
105
106   @Override
107   public String writeUrlsAsString(boolean selected)
108   {
109     // TODO Auto-generated method stub
110     return null;
111   }
112
113   @Override
114   public String chooseDefaultUrl()
115   {
116     // TODO Auto-generated method stub
117     return null;
118   }
119
120   @Override
121   public List<UrlLinkDisplay> getLinksForTable()
122   {
123     return null;
124   }
125
126   protected ArrayList<UrlLinkDisplay> getLinksForTable(
127           HashMap<String, UrlLink> urls, ArrayList<String> selectedUrls,
128           boolean selected)
129   {
130     ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
131     for (Entry<String, UrlLink> entry : urls.entrySet())
132     {
133       String key = entry.getKey();
134       boolean isDefault = (key.equals(defaultUrl));
135       boolean isSelected;
136       if (selectedUrls != null)
137       {
138         isSelected = selectedUrls.contains(key);
139       }
140       else
141       {
142         isSelected = selected;
143       }
144       String displayLink = entry.getValue().getUrlWithToken();
145       displayLinks.add(new UrlLinkDisplay(key, entry.getValue().getLabel(),
146               displayLink, isSelected, isDefault));
147     }
148     return displayLinks;
149   }
150
151   @Override
152   public void setUrlData(List<UrlLinkDisplay> links)
153   {
154     // deliberately left empty
155   }
156
157   protected boolean isMiriamId(String id)
158   {
159     return MIRIAM_PATTERN.matcher(id).matches();
160   }
161
162   @Override
163   public boolean isUserEntry(String id)
164   {
165     return !isMiriamId(id);
166   }
167
168   @Override
169   public String getDefaultUrlId()
170   {
171     // TODO Auto-generated method stub
172     return null;
173   }
174
175 }