1 package jp.sourceforge.stigmata.birthmarks.cvfv;
3 import jp.sourceforge.stigmata.BirthmarkComparator;
4 import jp.sourceforge.stigmata.BirthmarkElement;
5 import jp.sourceforge.stigmata.BirthmarkExtractor;
6 import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
7 import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
8 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
14 * @author Haruaki TAMADA
16 public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
17 private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
18 private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
21 public String getType(){
26 public String getDefaultDescription(){
27 return "Field type and its initial value.";
31 public BirthmarkExtractor getExtractor(){
36 public BirthmarkComparator getComparator(){
41 public boolean isExperimental(){
46 public boolean isUserDefined(){
51 public BirthmarkElement buildBirthmarkElement(String value) {
52 String signature = value.substring(0, value.indexOf('='));
53 String subValue = value.substring(value.indexOf('=') + 1);
54 Object elementValue = subValue;
56 if(subValue.equals("null")){
60 switch(signature.charAt(0)){
62 if(value.equals("true")) elementValue = Boolean.TRUE;
63 else elementValue = Boolean.FALSE;
66 case 'C': elementValue = new Character(subValue.charAt(0)); break;
67 case 'D': elementValue = new Double(subValue); break;
68 case 'F': elementValue = new Float(subValue); break;
69 case 'S': elementValue = new Short(subValue); break;
70 case 'B': elementValue = new Byte(subValue); break;
71 case 'I': elementValue = new Integer(subValue); break;
72 default: elementValue = value; break;
75 return new TypeAndValueBirthmarkElement(signature, elementValue);