1. Project Clover database Tue Dec 20 2016 21:24:09 CET
  2. Package org.xwiki.rendering.wikimodel

File WikiParameters.java

 

Coverage histogram

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

Code metrics

28
72
22
1
292
171
37
0.51
3.27
22
1.68

Classes

Class Line # Actions
WikiParameters 37 72 0% 37 13
0.8934426389.3%
 

Contributing tests

This file is covered by 1498 tests. .

Source view

1    /*
2    * See the NOTICE file distributed with this work for additional
3    * information regarding copyright ownership.
4    *
5    * This is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU Lesser General Public License as
7    * published by the Free Software Foundation; either version 2.1 of
8    * the License, or (at your option) any later version.
9    *
10    * This software is distributed in the hope that it will be useful,
11    * but WITHOUT ANY WARRANTY; without even the implied warranty of
12    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13    * Lesser General Public License for more details.
14    *
15    * You should have received a copy of the GNU Lesser General Public
16    * License along with this software; if not, write to the Free
17    * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
18    * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
19    */
20    package org.xwiki.rendering.wikimodel;
21   
22    import java.util.ArrayList;
23    import java.util.Collection;
24    import java.util.HashMap;
25    import java.util.Iterator;
26    import java.util.List;
27    import java.util.Map;
28   
29    import org.xwiki.rendering.wikimodel.impl.WikiScannerUtil;
30   
31    /**
32    * Allow iterating over {@link WikiParameter}s.
33    *
34    * @version $Id: e9e21da4b02269421da1ae37a38a1ece5644153d $
35    * @since 4.0M1
36    */
 
37    public class WikiParameters implements Iterable<WikiParameter>
38    {
39    /**
40    * The default character to use has escaping char.
41    */
42    public static final char DEFAULT_ESCAPECHAR = '\\';
43   
44    /**
45    * An empty parameter list
46    */
47    public final static WikiParameters EMPTY = new WikiParameters();
48   
49    private static final long serialVersionUID = 1253393289284318413L;
50   
 
51  50 toggle public static WikiParameters newWikiParameters(String str)
52    {
53  50 return newWikiParameters(str, DEFAULT_ESCAPECHAR);
54    }
55   
 
56  1497 toggle public static WikiParameters newWikiParameters(String str, char escapeChar)
57    {
58  1497 if (str == null) {
59  1246 return EMPTY;
60    }
61  251 str = str.trim();
62  251 if ("".equals(str)) {
63  14 return EMPTY;
64    }
65  237 return new WikiParameters(str, escapeChar);
66    }
67   
68    protected final List<WikiParameter> fList = new ArrayList<WikiParameter>();
69   
70    private Map<String, WikiParameter[]> fMap;
71   
72    private String fStr;
73   
74    /**
75    */
 
76  693 toggle public WikiParameters()
77    {
78   
79    }
80   
81    /**
82    * @param list
83    */
 
84  23336 toggle public WikiParameters(Collection<WikiParameter> list)
85    {
86  23336 fList.addAll(list);
87    }
88   
89    /**
90    * @param str
91    */
 
92  280 toggle public WikiParameters(String str)
93    {
94  280 WikiScannerUtil.splitToPairs(str, fList);
95    }
96   
 
97  17879 toggle public WikiParameters(String str, char escapeChar)
98    {
99  17879 WikiScannerUtil.splitToPairs(str, fList, escapeChar);
100    }
101   
102    /**
103    * @param str
104    * @param delimiter
105    */
 
106  14 toggle public WikiParameters(String str, String delimiter)
107    {
108  14 WikiScannerUtil.splitToPairs(str, fList, delimiter);
109    }
110   
 
111  352 toggle public WikiParameters(WikiParameters parameters)
112    {
113  352 fList.addAll(parameters.fList);
114    }
115   
116    /**
117    * Creates a new copy of this parameter object with new specified key/value
118    * pair.
119    *
120    * @param key the parameter name
121    * @param value the value of the parameter
122    * @return a new copy of parameters object with the given key/value pair
123    */
 
124  284 toggle public WikiParameters addParameter(String key, String value)
125    {
126  284 WikiParameters result = new WikiParameters();
127  284 result.fList.addAll(fList);
128  284 result.fList.add(new WikiParameter(key, value));
129  284 return result;
130    }
131   
 
132  0 toggle public WikiParameters addParameters(WikiParameters parameters)
133    {
134  0 WikiParameters result = new WikiParameters();
135  0 result.fList.addAll(fList);
136  0 result.fList.addAll(parameters.fList);
137  0 return result;
138    }
139   
 
140  173 toggle public WikiParameters setParameter(String key, String value)
141    {
142  173 return remove(key).addParameter(key, value);
143    }
144   
145    /**
146    * @see java.lang.Object#equals(java.lang.Object)
147    */
 
148  11819 toggle @Override
149    public boolean equals(Object obj)
150    {
151  11819 if (obj == this) {
152  11810 return true;
153    }
154  9 if (!(obj instanceof WikiParameters)) {
155  0 return false;
156    }
157  9 WikiParameters params = (WikiParameters) obj;
158  9 return fList.equals(params.fList);
159    }
160   
161    /**
162    * @param pos the position of the parameter
163    * @return the parameter from the specified position
164    */
 
165  20 toggle public WikiParameter getParameter(int pos)
166    {
167  20 return pos < 0 || pos >= fList.size() ? null : fList.get(pos);
168    }
169   
170    /**
171    * @param key the key of the parameter
172    * @return the wiki parameter by key
173    */
 
174  2100 toggle public WikiParameter getParameter(String key)
175    {
176  2100 WikiParameter[] list = getParameters(key);
177  2100 return (list != null) ? list[0] : null;
178    }
179   
 
180  2100 toggle private Map<String, WikiParameter[]> getParameters()
181    {
182  2100 if (fMap == null) {
183  1320 fMap = new HashMap<String, WikiParameter[]>();
184  1320 for (WikiParameter param : fList) {
185  1206 String key = param.getKey();
186  1206 WikiParameter[] list = fMap.get(key);
187  1206 int len = list != null ? list.length : 0;
188  1206 WikiParameter[] newList = new WikiParameter[len + 1];
189  1206 if (len > 0) {
190  0 System.arraycopy(list, 0, newList, 0, len);
191    }
192  1206 newList[len] = param;
193  1206 fMap.put(key, newList);
194    }
195    }
196  2100 return fMap;
197    }
198   
199    /**
200    * Returns all parameters with this key
201    *
202    * @param key the key of the parameter
203    * @return the wiki parameter by key
204    */
 
205  2100 toggle public WikiParameter[] getParameters(String key)
206    {
207  2100 Map<String, WikiParameter[]> map = getParameters();
208  2100 WikiParameter[] list = map.get(key);
209  2100 return list;
210    }
211   
212    /**
213    * Returns the number of parameters in the internal list.
214    *
215    * @return the number of parameters in the internal list
216    */
 
217  54431 toggle public int getSize()
218    {
219  54431 return fList.size();
220    }
221   
222    /**
223    * @see java.lang.Object#hashCode()
224    */
 
225  0 toggle @Override
226    public int hashCode()
227    {
228  0 return fList.hashCode();
229    }
230   
 
231  74 toggle public Iterator<WikiParameter> iterator()
232    {
233  74 return fList.iterator();
234    }
235   
236    /**
237    * @param key the key of the parameter to remove
238    * @return a new copy of parameter list without the specified parameter; if
239    * this parameter list does not contain such a key then this method
240    * returns a reference to this object
241    */
 
242  471 toggle public WikiParameters remove(String key)
243    {
244  471 int pos = 0;
245  471 for (WikiParameter param : fList) {
246  416 if (key.equals(param.getKey())) {
247  300 break;
248    }
249  116 pos++;
250    }
251  471 WikiParameters result = this;
252  471 if (pos < fList.size()) {
253  300 result = new WikiParameters(fList);
254  300 result.fList.remove(pos);
255    }
256  471 return result;
257    }
258   
259    /**
260    * Returns a new list containing all parameters defined in this object.
261    *
262    * @return a list of all parameters
263    */
 
264  78356 toggle public List<WikiParameter> toList()
265    {
266  78355 List<WikiParameter> result = new ArrayList<WikiParameter>(fList);
267  78356 return result;
268    }
269   
270    /**
271    * @see java.lang.Object#toString()
272    */
 
273  4193 toggle @Override
274    public String toString()
275    {
276  4193 if (fStr == null) {
277  828 StringBuffer buf = new StringBuffer();
278  828 int len = fList.size();
279  828 int counter = 0;
280  1223 for (int i = 0; i < len; i++) {
281  395 WikiParameter pair = fList.get(i);
282  395 if (pair.isValid()) {
283  381 buf.append(" ");
284  381 buf.append(pair);
285  381 counter++;
286    }
287    }
288  828 fStr = buf.toString();
289    }
290  4193 return fStr;
291    }
292    }