Clover Coverage Report - XWiki Rendering - Parent POM 4.0-SNAPSHOT (Aggregated)
Coverage timestamp: Mon Mar 12 2012 18:03:13 CET
../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
73   295   37   3.32
28   172   0.51   22
22     1.68  
1    
 
  WikiParameters       Line # 37 73 0% 37 11 91.1% 0.91056913
 
  (964)
 
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    * This is a default implementation of the {@link IWikiParams} interface.
33    *
34    * @version $Id: e6b51e1c76309e12ea020021660e8fc5285e3a32 $
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    /**
50    *
51    */
52    private static final long serialVersionUID = 1253393289284318413L;
53   
 
54  46 toggle public static WikiParameters newWikiParameters(String str)
55    {
56  46 return newWikiParameters(str, DEFAULT_ESCAPECHAR);
57    }
58   
 
59  295 toggle public static WikiParameters newWikiParameters(String str, char escapeChar)
60    {
61  295 if (str == null) {
62  201 return EMPTY;
63    }
64  94 str = str.trim();
65  94 if ("".equals(str)) {
66  13 return EMPTY;
67    }
68  81 return new WikiParameters(str, escapeChar);
69    }
70   
71    protected final List<WikiParameter> fList = new ArrayList<WikiParameter>();
72   
73    private Map<String, WikiParameter[]> fMap;
74   
75    private String fStr;
76   
77    /**
78    */
 
79  160 toggle protected WikiParameters()
80    {
81  160 this((String) null);
82    }
83   
84    /**
85    * @param list
86    */
 
87  2465 toggle public WikiParameters(Collection<WikiParameter> list)
88    {
89  2465 fList.addAll(list);
90    }
91   
92    /**
93    * @param str
94    */
 
95  457 toggle public WikiParameters(String str)
96    {
97  457 WikiScannerUtil.splitToPairs(str, fList);
98    }
99   
 
100  780 toggle public WikiParameters(String str, char escapeChar)
101    {
102  780 WikiScannerUtil.splitToPairs(str, fList, escapeChar);
103    }
104   
105    /**
106    * @param str
107    * @param delimiter
108    */
 
109  14 toggle public WikiParameters(String str, String delimiter)
110    {
111  14 WikiScannerUtil.splitToPairs(str, fList, delimiter);
112    }
113   
 
114  151 toggle public WikiParameters(WikiParameters parameters)
115    {
116  151 fList.addAll(parameters.fList);
117    }
118   
119    /**
120    * Creates a new copy of this parameter object with new specified key/value
121    * pair.
122    *
123    * @param key the parameter name
124    * @param value the value of the parameter
125    * @return a new copy of parameters object with the given key/value pair
126    */
 
127  146 toggle public WikiParameters addParameter(String key, String value)
128    {
129  146 WikiParameters result = new WikiParameters();
130  146 result.fList.addAll(fList);
131  146 result.fList.add(new WikiParameter(key, value));
132  146 return result;
133    }
134   
 
135  0 toggle public WikiParameters addParameters(WikiParameters parameters)
136    {
137  0 WikiParameters result = new WikiParameters();
138  0 result.fList.addAll(fList);
139  0 result.fList.addAll(parameters.fList);
140  0 return result;
141    }
142   
 
143  15 toggle public WikiParameters setParameter(String key, String value)
144    {
145  15 return remove(key).addParameter(key, value);
146    }
147   
148    /**
149    * @see java.lang.Object#equals(java.lang.Object)
150    */
 
151  419 toggle @Override
152    public boolean equals(Object obj)
153    {
154  419 if (obj == this) {
155  410 return true;
156    }
157  9 if (!(obj instanceof WikiParameters)) {
158  0 return false;
159    }
160  9 WikiParameters params = (WikiParameters) obj;
161  9 return fList.equals(params.fList);
162    }
163   
164    /**
165    * @param pos the position of the parameter
166    * @return the parameter from the specified position
167    */
 
168  20 toggle public WikiParameter getParameter(int pos)
169    {
170  20 return pos < 0 || pos >= fList.size() ? null : fList.get(pos);
171    }
172   
173    /**
174    * @param key the key of the parameter
175    * @return the wiki parameter by key
176    */
 
177  929 toggle public WikiParameter getParameter(String key)
178    {
179  929 WikiParameter[] list = getParameters(key);
180  929 return (list != null) ? list[0] : null;
181    }
182   
 
183  929 toggle private Map<String, WikiParameter[]> getParameters()
184    {
185  929 if (fMap == null) {
186  418 fMap = new HashMap<String, WikiParameter[]>();
187  418 for (WikiParameter param : fList) {
188  428 String key = param.getKey();
189  428 WikiParameter[] list = fMap.get(key);
190  428 int len = list != null ? list.length : 0;
191  428 WikiParameter[] newList = new WikiParameter[len + 1];
192  428 if (len > 0) {
193  1 System.arraycopy(list, 0, newList, 0, len);
194    }
195  428 newList[len] = param;
196  428 fMap.put(key, newList);
197    }
198    }
199  929 return fMap;
200    }
201   
202    /**
203    * Returns all parameters with this key
204    *
205    * @param key the key of the parameter
206    * @return the wiki parameter by key
207    */
 
208  929 toggle public WikiParameter[] getParameters(String key)
209    {
210  929 Map<String, WikiParameter[]> map = getParameters();
211  929 WikiParameter[] list = map.get(key);
212  929 return list;
213    }
214   
215    /**
216    * Returns the number of parameters in the internal list.
217    *
218    * @return the number of parameters in the internal list
219    */
 
220  5529 toggle public int getSize()
221    {
222  5529 return fList.size();
223    }
224   
225    /**
226    * @see java.lang.Object#hashCode()
227    */
 
228  0 toggle @Override
229    public int hashCode()
230    {
231  0 return fList.hashCode();
232    }
233   
 
234  36 toggle public Iterator<WikiParameter> iterator()
235    {
236  36 return fList.iterator();
237    }
238   
239    /**
240    * @param key the key of the parameter to remove
241    * @return a new copy of parameter list without the specified parameter; if
242    * this parameter list does not contain such a key then this method
243    * returns a reference to this object
244    */
 
245  246 toggle public WikiParameters remove(String key)
246    {
247  246 int pos = 0;
248  246 for (WikiParameter param : fList) {
249  301 if (key.equals(param.getKey())) {
250  220 break;
251    }
252  81 pos++;
253    }
254  246 WikiParameters result = this;
255  246 if (pos < fList.size()) {
256  220 result = new WikiParameters(fList);
257  220 result.fList.remove(pos);
258    }
259  246 return result;
260    }
261   
262    /**
263    * Returns a new list containing all parameters defined in this object.
264    *
265    * @return a list of all parameters
266    */
 
267  10905 toggle public List<WikiParameter> toList()
268    {
269  10905 List<WikiParameter> result = new ArrayList<WikiParameter>(fList);
270  10905 return result;
271    }
272   
273    /**
274    * @see java.lang.Object#toString()
275    */
 
276  4370 toggle @Override
277    public String toString()
278    {
279  4370 if (fStr == null) {
280  788 StringBuffer buf = new StringBuffer();
281  788 int len = fList.size();
282  788 int counter = 0;
283  1162 for (int i = 0; i < len; i++) {
284  374 WikiParameter pair = fList.get(i);
285  374 if (pair.isValid()) {
286  374 buf.append(" ");
287  374 buf.append(pair);
288  374 counter++;
289    }
290    }
291  788 fStr = buf.toString();
292    }
293  4370 return fStr;
294    }
295    }