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
20 public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
21 private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
22 private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
25 public String getType(){
30 public String getDefaultDescription(){
31 return "Field type and its initial value.";
35 public BirthmarkExtractor getExtractor(){
40 public BirthmarkComparator getComparator(){
45 public boolean isExperimental(){
50 public boolean isUserDefined(){
55 public BirthmarkElement buildBirthmarkElement(String value) {
56 String signature = value.substring(0, value.indexOf('='));
57 String subValue = value.substring(value.indexOf('=') + 1);
58 Object elementValue = subValue;
60 if(subValue.equals("null")){
64 switch(signature.charAt(0)){
66 if(value.equals("true")) elementValue = Boolean.TRUE;
67 else elementValue = Boolean.FALSE;
70 case 'C': elementValue = new Character(subValue.charAt(0)); break;
71 case 'D': elementValue = new Double(subValue); break;
72 case 'F': elementValue = new Float(subValue); break;
73 case 'S': elementValue = new Short(subValue); break;
74 case 'B': elementValue = new Byte(subValue); break;
75 case 'I': elementValue = new Integer(subValue); break;
76 default: elementValue = value; break;
79 return new TypeAndValueBirthmarkElement(signature, elementValue);