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 the single Long property values within an
13   * upper and lower boundary.
14   * 
15   * @author Brian Remedios
16   */
17  public class LongProperty extends AbstractNumericProperty<Long> {
18  
19      public static final PropertyDescriptorFactory FACTORY = new BasicPropertyDescriptorFactory<LongProperty>(
20              Long.class, NUMBER_FIELD_TYPES_BY_KEY) {
21  
22          public LongProperty createWith(Map<String, String> valuesById) {
23              final String[] minMax = minMaxFrom(valuesById);
24              return new LongProperty(nameIn(valuesById), descriptionIn(valuesById), Long.valueOf(minMax[0]),
25                      Long.valueOf(minMax[1]), Long.valueOf(numericDefaultValueIn(valuesById)), 0f);
26          }
27      };
28  
29      /**
30       * Constructor for LongProperty.
31       * 
32       * @param theName String
33       * @param theDescription String
34       * @param min Long
35       * @param max Long
36       * @param theDefault Long
37       * @param theUIOrder float
38       * @throws IllegalArgumentException
39       */
40      public LongProperty(String theName, String theDescription, Long min, Long max, Long theDefault, float theUIOrder) {
41          super(theName, theDescription, min, max, theDefault, theUIOrder);
42      }
43  
44      /**
45       * Constructor for LongProperty that limits itself to a single value within
46       * the specified limits. Converts string arguments into the Long values.
47       * 
48       * @param theName String
49       * @param theDescription String
50       * @param minStr String
51       * @param maxStr String
52       * @param defaultStr String
53       * @param theUIOrder float
54       * @throws IllegalArgumentException
55       */
56      public LongProperty(String theName, String theDescription, String minStr, String maxStr, String defaultStr,
57              float theUIOrder) {
58          this(theName, theDescription, longFrom(minStr), longFrom(maxStr), longFrom(defaultStr), theUIOrder);
59      }
60  
61      /**
62       * @param numberString String
63       * @return Long
64       */
65      public static Long longFrom(String numberString) {
66          return Long.valueOf(numberString);
67      }
68  
69      /**
70       * @return Class
71       * @see net.sourceforge.pmd.PropertyDescriptor#type()
72       */
73      public Class<Long> type() {
74          return Long.class;
75      }
76  
77      /**
78       * @param value String
79       * @return Object
80       */
81      protected Object createFrom(String value) {
82          return longFrom(value);
83      }
84  }