1 package jp.sourceforge.stigmata.birthmarks.cvfv;
7 import jp.sourceforge.stigmata.BirthmarkComparator;
8 import jp.sourceforge.stigmata.BirthmarkElement;
9 import jp.sourceforge.stigmata.BirthmarkExtractor;
10 import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
11 import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
12 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
18 * @author Haruaki TAMADA
21 public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
22 private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
23 private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
25 public String getType(){
29 public String getDefaultDescription(){
30 return "Field type and its initial value.";
33 public BirthmarkExtractor getExtractor(){
37 public BirthmarkComparator getComparator(){
41 public boolean isExperimental(){
45 public boolean isUserDefined(){
50 public BirthmarkElement buildBirthmarkElement(String value) {
51 String signature = value.substring(0, value.indexOf('='));
52 String subValue = value.substring(value.indexOf('=') + 1);
53 Object elementValue = subValue;
55 if(subValue.equals("null")){
59 switch(signature.charAt(0)){
61 if(value.equals("true")) elementValue = Boolean.TRUE;
62 else elementValue = Boolean.FALSE;
65 case 'C': elementValue = new Character(subValue.charAt(0)); break;
66 case 'D': elementValue = new Double(subValue); break;
67 case 'F': elementValue = new Float(subValue); break;
68 case 'S': elementValue = new Short(subValue); break;
69 case 'B': elementValue = new Byte(subValue); break;
70 case 'I': elementValue = new Integer(subValue); break;
71 default: elementValue = value; break;
74 return new TypeAndValueBirthmarkElement(signature, elementValue);