Clover icon

Coverage Report

  1. Project Clover database Mon Nov 11 2024 17:27:16 GMT
  2. Package jalview.urls

File UrlProvider.java

 

Coverage histogram

../../img/srcFileCovDistChart9.png
12% of files have more coverage

Code metrics

22
66
13
1
251
183
24
0.36
5.08
13
1.85

Classes

Class Line # Actions
UrlProvider 38 66 24
0.861386186.1%
 

Contributing tests

This file is covered by 62 tests. .

Source view

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 static jalview.util.UrlConstants.SEP;
24   
25    import jalview.urls.api.UrlProviderI;
26   
27    import java.util.ArrayList;
28    import java.util.List;
29    import java.util.Vector;
30   
31    /**
32    *
33    * Implements the UrlProviderI interface for a composite UrlProvider object
34    *
35    * @author $author$
36    * @version $Revision$
37    */
 
38    public class UrlProvider implements UrlProviderI
39    {
40    // List of actual URL link providers
41    private List<UrlProviderI> providers;
42   
43    // Specific reference to custom URL link provider
44    private UrlProviderI customProvider;
45   
46    /**
47    * Constructor for UrlProvider composite
48    *
49    * @param defaultUrlString
50    * id of default url
51    * @param allProviders
52    * list of UrlProviders this provider gives access to
53    */
 
54  38 toggle public UrlProvider(String defaultUrlString,
55    List<UrlProviderI> allProviders)
56    {
57  38 providers = allProviders;
58   
59  38 customProvider = findCustomProvider();
60   
61    // check that the defaultUrl still exists
62  38 if (!contains(defaultUrlString))
63    {
64    // if the defaultUrl can't be found in any of the providers
65    // set up a custom default url
66  4 choosePrimaryUrl();
67    }
68    else
69    {
70  34 setPrimaryUrl(defaultUrlString);
71    }
72    }
73   
74    /*
75    * Store ref to custom url provider
76    */
 
77  38 toggle private UrlProviderI findCustomProvider()
78    {
79  38 for (UrlProviderI p : providers)
80    {
81  75 if (p instanceof CustomUrlProvider)
82    {
83  38 return p;
84    }
85    }
86   
87  0 jalview.bin.Console.outPrintln(
88    "Error initialising UrlProvider - no custom url provider");
89  0 return null;
90    }
91   
 
92  37 toggle @Override
93    public boolean setPrimaryUrl(String id)
94    {
95  37 boolean outcome = false;
96  37 for (UrlProviderI p : providers)
97    {
98  73 if (p.setPrimaryUrl(id))
99    {
100  36 outcome = true;
101    }
102    }
103  37 if (!outcome)
104    {
105  1 throw new IllegalArgumentException();
106    }
107  36 return outcome;
108    }
109   
 
110  38 toggle @Override
111    public boolean contains(String id)
112    {
113  38 boolean outcome = false;
114  38 for (UrlProviderI p : providers)
115    {
116  75 if (p.contains(id))
117    {
118  34 outcome = true;
119    }
120    }
121  38 return outcome;
122    }
123   
 
124  3 toggle @Override
125    public String writeUrlsAsString(boolean selected)
126    {
127  3 String result = "";
128  3 for (UrlProviderI p : providers)
129    {
130  6 String next = p.writeUrlsAsString(selected);
131  6 if (!next.isEmpty())
132    {
133  5 result += next;
134  5 result += SEP;
135    }
136    }
137    // remove last sep
138  3 if (!result.isEmpty())
139    {
140  3 result = result.substring(0, result.length() - 1);
141    }
142  3 return result;
143    }
144   
 
145  101 toggle @Override
146    public Vector<String> getLinksForMenu()
147    {
148  101 Vector<String> fullLinks = new Vector<String>();
149  101 for (UrlProviderI p : providers)
150    {
151  202 List<String> links = p.getLinksForMenu();
152  202 if (links != null)
153    {
154    // will obliterate links with same keys from different providers
155    // must have checks in place to prevent user from duplicating ids
156  202 fullLinks.addAll(links);
157    }
158    }
159  101 return fullLinks;
160    }
161   
 
162  22 toggle @Override
163    public List<UrlLinkDisplay> getLinksForTable()
164    {
165  22 ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
166  22 for (UrlProviderI p : providers)
167    {
168  43 displayLinks.addAll(p.getLinksForTable());
169    }
170  22 return displayLinks;
171    }
172   
 
173  9 toggle @Override
174    public void setUrlData(List<UrlLinkDisplay> links)
175    {
176  9 for (UrlProviderI p : providers)
177    {
178  18 p.setUrlData(links);
179    }
180    }
181   
 
182  4 toggle @Override
183    public String getPrimaryUrl(String seqid)
184    {
185  4 String link = null;
186  4 for (UrlProviderI p : providers)
187    {
188  7 if (p.getPrimaryUrl(seqid) == null)
189    {
190  3 continue;
191    }
192    else
193    {
194  4 link = p.getPrimaryUrl(seqid);
195  4 break;
196    }
197    }
198  4 return link;
199    }
200   
 
201  5 toggle @Override
202    public String getPrimaryUrlId()
203    {
204  5 String id = null;
205  5 for (UrlProviderI p : providers)
206    {
207  8 if (p.getPrimaryUrlId() == null)
208    {
209  3 continue;
210    }
211    else
212    {
213  5 id = p.getPrimaryUrlId();
214  5 break;
215    }
216    }
217  5 return id;
218    }
219   
 
220  0 toggle @Override
221    public String getPrimaryTarget(String seqid)
222    {
223  0 String target = null;
224  0 for (UrlProviderI p : providers)
225    {
226  0 if (p.getPrimaryTarget(seqid) == null)
227    {
228  0 continue;
229    }
230    else
231    {
232  0 target = p.getPrimaryTarget(seqid);
233  0 break;
234    }
235    }
236  0 return target;
237    }
238   
 
239  4 toggle @Override
240    public String choosePrimaryUrl()
241    {
242    // choose a custom url default
243  4 return customProvider.choosePrimaryUrl();
244    }
245   
 
246  20 toggle @Override
247    public boolean isUserEntry(String id)
248    {
249  20 return customProvider.isUserEntry(id);
250    }
251    }