View Javadoc

1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd.lang.rule.properties;
5   
6   import java.util.Map;
7   
8   import net.sourceforge.pmd.PropertyDescriptorFactory;
9   import net.sourceforge.pmd.lang.rule.properties.factories.BasicPropertyDescriptorFactory;
10  
11  /**
12   * Defines a datatype that supports multiple Integer property values within an upper and lower boundary.
13   * 
14   * @author Brian Remedios
15   */
16  public class IntegerMultiProperty extends AbstractMultiNumericProperty<Integer[]> {
17  	
18  	public static final PropertyDescriptorFactory FACTORY = new BasicPropertyDescriptorFactory<IntegerMultiProperty>(Integer[].class, numberFieldTypesByKey) {
19  
20  		public IntegerMultiProperty createWith(Map<String, String> valuesById) {
21  			final String[] minMax = minMaxFrom(valuesById);
22  			Integer[] defaultValues = integersIn(defaultValueIn(valuesById));
23  			return new IntegerMultiProperty(
24  					nameIn(valuesById),
25  					descriptionIn(valuesById),
26  					Integer.parseInt(minMax[0]),
27  					Integer.parseInt(minMax[1]),
28  					defaultValues,
29  					0f
30  					);
31  		};
32  	};	
33  	
34  	/**
35  	 * Constructor for IntegerProperty.
36  	 * @param theName String
37  	 * @param theDescription String
38  	 * @param min Integer
39  	 * @param max Integer
40  	 * @param theDefaults Integer[]
41  	 * @param theUIOrder float
42  	 * @throws IllegalArgumentException
43  	 */
44  	public IntegerMultiProperty(String theName, String theDescription, Integer min, Integer max, Integer[] theDefaults, float theUIOrder) {
45  		super(theName, theDescription, min, max, theDefaults, theUIOrder);
46  	}
47  	
48  	/**
49  	 * @return Class
50  	 * @see net.sourceforge.pmd.PropertyDescriptor#type()
51  	 */
52  	public Class<Integer[]> type() {
53  		return Integer[].class;
54  	}
55  	
56  	/**
57  	 * @param value String
58  	 * @return Object
59  	 */
60  	protected Object createFrom(String value) {
61  		return Integer.valueOf(value);
62  	}
63  
64  	/**
65  	 * @param size int
66  	 * @return Object[]
67  	 */
68  	protected Object[] arrayFor(int size) {
69  		return new Integer[size];
70  	}
71  }