/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.rule.properties;
import java.util.Map;
import net.sourceforge.pmd.PropertyDescriptorFactory;
import net.sourceforge.pmd.lang.rule.properties.factories.BasicPropertyDescriptorFactory;
/**
* Defines a property type that supports single Character values.
*
* @author Brian Remedios
*/
public class CharacterProperty extends AbstractProperty<Character> {
public static final PropertyDescriptorFactory FACTORY = new BasicPropertyDescriptorFactory<CharacterProperty>(
Character.class) {
@Override
public CharacterProperty createWith(Map<String, String> valuesById) {
return new CharacterProperty(nameIn(valuesById), descriptionIn(valuesById),
defaultValueIn(valuesById) != null ? new Character(defaultValueIn(valuesById).charAt(0)) : null,
0f);
}
};
/**
* Constructor for CharacterProperty.
*
* @param theName
* String
* @param theDescription
* String
* @param theDefault
* Character
* @param theUIOrder
* float
*/
public CharacterProperty(String theName, String theDescription, Character theDefault, float theUIOrder) {
super(theName, theDescription, theDefault, theUIOrder);
}
/**
* Constructor for CharacterProperty.
*
* @param theName
* String
* @param theDescription
* String
* @param defaultStr
* String
* @param theUIOrder
* float
* @throws IllegalArgumentException
*/
public CharacterProperty(String theName, String theDescription, String defaultStr, float theUIOrder) {
this(theName, theDescription, charFrom(defaultStr), theUIOrder);
}
/**
* @param charStr
* String
* @return Character
*/
public static Character charFrom(String charStr) {
if (charStr == null || charStr.length() != 1) {
throw new IllegalArgumentException("missing/invalid character value");
}
return charStr.charAt(0);
}
/**
* @return Class
* @see net.sourceforge.pmd.PropertyDescriptor#type()
*/
@Override
public Class<Character> type() {
return Character.class;
}
/**
* @param valueString
* String
* @return Object
* @throws IllegalArgumentException
* @see net.sourceforge.pmd.PropertyDescriptor#valueFrom(String)
*/
@Override
public Character valueFrom(String valueString) throws IllegalArgumentException {
return charFrom(valueString);
}
/**
* Method defaultAsString.
*
* @return String
*/
@Override
protected String defaultAsString() {
return Character.toString(defaultValue());
}
}