OSDN Git Service

change mode name experimental mode'
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / birthmarks / kgram / KGramBasedBirthmarkService.java
1 package jp.sourceforge.stigmata.birthmarks.kgram;
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.LogicalAndBirthmarkComparator;
12 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
13
14 /**
15  * 
16  * 
17  *
18  * @author Haruaki TAMADA
19  * @version $Revision$ 
20  */
21 public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
22     private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
23     private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this);
24
25     public String getType(){
26         return "kgram";
27     }
28
29     public String getDefaultDescription(){
30         return "k-gram based birthmark.";
31     }
32
33     public BirthmarkExtractor getExtractor(){
34         return extractor;
35     }
36
37     public BirthmarkComparator getComparator(){
38         return comparator;
39     }
40
41     public boolean isExperimental(){
42         return false;
43     }
44
45     public boolean isUserDefined(){
46         return false;
47     }
48
49         @Override
50         public BirthmarkElement buildBirthmarkElement(String value) {
51                 value = value.trim();
52                 if(value.startsWith("{") && value.endsWith("}")){
53                         String[] param = value.substring(1, value.length() - 1).split(", *");
54                         KGram<Integer> kgram = new KGram<Integer>(param.length);
55                         for(int i = 0; i < param.length; i++){
56                                 kgram.set(i, new Integer(param[i].trim()));
57                         }
58                         return new KGramBasedBirthmarkElement<Integer>(kgram);
59                 }
60                 return null;
61         }
62 }