OSDN Git Service

44050fda7987446f5255523d190127ebd063ecdb
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / birthmarks / cvfv / ConstantValueOfFieldVariableBirthmarkService.java
1 package jp.sourceforge.stigmata.birthmarks.cvfv;
2
3 /*
4  * $Id$
5  */
6
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;
13
14 /**
15  * 
16  * 
17  *
18  * @author Haruaki TAMADA
19  * @version $Revision$ 
20  */
21 public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
22         private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
23     private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
24
25     public String getType(){
26         return "cvfv";
27     }
28
29     public String getDefaultDescription(){
30         return "Field type and its initial value.";
31     }
32
33     public BirthmarkExtractor getExtractor(){
34         return extractor;
35     }
36
37     public BirthmarkComparator getComparator(){
38         return comparator;
39     }
40
41     public boolean isExpert(){
42         return false;
43     }
44
45     public boolean isUserDefined(){
46         return false;
47     }
48
49     @Override
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;
54
55         if(subValue.equals("null")){
56             elementValue = null;
57         }
58         else{
59             switch(signature.charAt(0)){
60             case 'Z':{
61                 if(value.equals("true")) elementValue = Boolean.TRUE;
62                 else                     elementValue = Boolean.FALSE;
63                 break;
64             }
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;
72             }
73         }
74         return new TypeAndValueBirthmarkElement(signature, elementValue);
75         }
76 }