OSDN Git Service

4c2d5fdbba5e5ea67beb38c6e6696260f572d54e
[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  */
20 public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
21         private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
22     private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
23
24     @Override
25     public String getType(){
26         return "cvfv";
27     }
28
29     @Override
30     public String getDefaultDescription(){
31         return "Field type and its initial value.";
32     }
33
34     @Override
35     public BirthmarkExtractor getExtractor(){
36         return extractor;
37     }
38
39     @Override
40     public BirthmarkComparator getComparator(){
41         return comparator;
42     }
43
44     @Override
45     public boolean isExperimental(){
46         return false;
47     }
48
49     @Override
50     public boolean isUserDefined(){
51         return false;
52     }
53
54     @Override
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;
59
60         if(subValue.equals("null")){
61             elementValue = null;
62         }
63         else{
64             switch(signature.charAt(0)){
65             case 'Z':{
66                 if(value.equals("true")) elementValue = Boolean.TRUE;
67                 else                     elementValue = Boolean.FALSE;
68                 break;
69             }
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;
77             }
78         }
79         return new TypeAndValueBirthmarkElement(signature, elementValue);
80         }
81 }