Clover Coverage Report - itracker
Coverage timestamp: Tue May 1 2012 16:42:12 CEST
26   273   20   1.44
4   86   0.77   9
18     1.11  
2    
 
 
  Configuration       Line # 32 25 19 39.1% 0.39130434
  Configuration.ConfigurationOrderComparator       Line # 258 1 1 0% 0.0
 
No Tests
 
1    /*
2    * This software was designed and created by Jason Carroll.
3    * Copyright (c) 2002, 2003, 2004 Jason Carroll.
4    * The author can be reached at jcarroll@cowsultants.com
5    * ITracker website: http://www.cowsultants.com
6    * ITracker forums: http://www.cowsultants.com/phpBB/index.php
7    *
8    * This program is free software; you can redistribute it and/or modify
9    * it only under the terms of the GNU General Public License as published by
10    * the Free Software Foundation; either version 2 of the License, or
11    * (at your option) any later version.
12    *
13    * This program is distributed in the hope that it will be useful,
14    * but WITHOUT ANY WARRANTY; without even the implied warranty of
15    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16    * GNU General Public License for more details.
17    */
18   
19    package org.itracker.model;
20   
21    import java.io.Serializable;
22    import java.util.Comparator;
23   
24    import org.apache.commons.lang.builder.CompareToBuilder;
25    import org.apache.commons.lang.builder.ToStringBuilder;
26   
27    /**
28    * A configuration item.
29    *
30    * @author ready
31    */
 
32    public class Configuration extends AbstractEntity implements Comparable<Entity> {
33   
34    public static final ConfigurationOrderComparator CONFIGURATION_ORDER_COMPARATOR = new ConfigurationOrderComparator();
35    /**
36    *
37    */
38    private static final long serialVersionUID = 1L;
39    /**
40    * PENDING: this field doesn't exist in the database!?
41    *
42    * <p>
43    * TODO : every configuration item should have a name, similar to a Java
44    * property in a properties file. A description would be nice to have too.
45    * name + version should be the natural key. (note: we shouldn't allow 2
46    * configuration items with the same name and version, but with different
47    * types).
48    * </p>
49    *
50    * <p>
51    * But since <code>name</code> is nullable, only the type and value can be
52    * used as natural key at the moment. This should be a temporary situation,
53    * because the value is allowed to change.
54    * </p>
55    */
56    private String name;
57   
58    /** ITracker version in which this configuration item was added. */
59    private String version;
60   
61    /** The real type of the value stored as a string. */
62    private int type;
63   
64    /** The configuration value as a string. */
65    private String value;
66   
67    /**
68    * Display order.
69    *
70    * <p>
71    * Several instances may have the same display order.
72    * </p>
73    */
74    private int order;
75   
76    /**
77    * Default constructor (required by Hibernate).
78    *
79    * <p>
80    * PENDING: should be <code>private</code> so that it can only be used by
81    * Hibernate, to ensure that the fields which form an instance's identity
82    * are always initialized/never <tt>null</tt>.
83    * </p>
84    */
 
85  0 toggle public Configuration() {
86    }
87   
 
88  3 toggle public Configuration(int type, String value) {
89  3 setType(type);
90  3 setValue(value);
91    }
92   
 
93  0 toggle public Configuration(int type, NameValuePair pair) {
94  0 this(type, pair.getValue());
95  0 setName(pair.getName());
96    }
97   
 
98  0 toggle public Configuration(int type, String value, String version) {
99  0 this(type, value);
100  0 setVersion(version);
101    }
102   
 
103  3 toggle public Configuration(int type, String value, int order) {
104  3 this(type, value);
105  3 setOrder(order);
106    }
107   
 
108  0 toggle public Configuration(int type, String value, String version, int order) {
109  0 this(type, value, version);
110  0 setOrder(order);
111    }
112   
 
113  0 toggle public String getName() {
114  0 return name;
115    }
116   
 
117  3 toggle public void setName(String name) {
118  3 this.name = name;
119    }
120   
 
121  0 toggle public int getOrder() {
122  0 return order;
123    }
124   
 
125  3 toggle public void setOrder(int order) {
126  3 this.order = order;
127    }
128   
 
129  6 toggle public int getType() {
130  6 return type;
131    }
132   
 
133  3 toggle public void setType(int type) {
134  3 this.type = type;
135    }
136   
 
137  0 toggle public String getValue() {
138  0 return value;
139    }
140   
 
141  3 toggle public void setValue(String value) {
142  3 if (value == null) {
143  0 throw new IllegalArgumentException("null value");
144    }
145  3 this.value = value;
146    }
147   
 
148  0 toggle public String getVersion() {
149  0 return version;
150    }
151   
 
152  0 toggle public void setVersion(String version) {
153  0 if (version == null) {
154  0 throw new IllegalArgumentException("null version");
155    }
156  0 this.version = version;
157    }
158   
159    // /**
160    // * Compares by natural key (type and value).
161    // */
162    // public int compareTo(Configuration other) {
163    // final int typeComparison = this.type - other.type;
164    //
165    // if (typeComparison == 0) {
166    // return this.value.compareTo(other.value);
167    // }
168    // return typeComparison;
169    // }
170   
171    // /**
172    // * Compares configuration items by order, value.
173    // */
174    // public int compareTo(Configuration other) {
175    // final int orderComparison = this.order - other.order;
176    //
177    // if (orderComparison == 0) {
178    // return this.value.compareTo(other.value);
179    // }
180    // return orderComparison;
181    // }
182    //
183    // /**
184    // * Compares by natural key (type and value).
185    // */
186    // @Override
187    // public boolean equals(Object obj) {
188    // if (this == obj) {
189    // return true;
190    // }
191    //
192    // if (obj instanceof Configuration) {
193    // final Configuration other = (Configuration)obj;
194    //
195    // return (this.type == other.type)
196    // && this.value.equals(other.value);
197    // }
198    // return false;
199    // }
200    //
201    // /**
202    // * Natural key (type and value) hash code.
203    // */
204    // @Override
205    // public int hashCode() {
206    // return this.type + this.value.hashCode();
207    // }
208   
209    // /**
210    // * Compares by natural key (name and version).
211    // */
212    // public int compareTo(Configuration other) {
213    // final int nameComparison = this.name.compareTo(other.name);
214    //
215    // if (nameComparison == 0) {
216    // return this.version.compareTo(other.version);
217    // }
218    // return nameComparison;
219    // }
220    //
221    // /**
222    // * Compares by natural key (name and version).
223    // */
224    // @Override
225    // public boolean equals(Object obj) {
226    // if (this == obj) {
227    // return true;
228    // }
229    //
230    // if (obj instanceof Configuration) {
231    // final Configuration other = (Configuration)obj;
232    //
233    // return this.name.equals(other.name)
234    // && this.version.equals(other.version);
235    // }
236    // return false;
237    // }
238    //
239    // /**
240    // * Natural key (name and version) hash code.
241    // */
242    // @Override
243    // public int hashCode() {
244    // return this.name.hashCode() + this.version.hashCode();
245    // }
246   
247    /**
248    * String composed of system ID and natural key (name and version).
249    */
 
250  0 toggle @Override
251    public String toString() {
252  0 return new ToStringBuilder(this).append("id", getId()).append("type", getType())
253    .append("name", getName()).append("version", getVersion()).append(
254    "value", getValue()).toString();
255   
256    }
257   
 
258    public static final class ConfigurationOrderComparator implements
259    Comparator<Configuration>, Serializable {
260    /**
261    *
262    */
263    private static final long serialVersionUID = 1L;
264   
 
265  0 toggle public int compare(Configuration o1, Configuration o2) {
266  0 return new CompareToBuilder().append(o1.getOrder(), o2.getOrder()).append(o1.getValue(), o2.getValue())
267    .toComparison();
268    }
269   
270   
271    }
272   
273    }