OSDN Git Service

d378728b9fd7f7007b5105db8612aec246313566
[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     @Override
26     public String getType(){
27         return "kgram";
28     }
29
30     @Override
31     public String getDefaultDescription(){
32         return "k-gram based birthmark.";
33     }
34
35     @Override
36     public BirthmarkExtractor getExtractor(){
37         return extractor;
38     }
39
40     @Override
41     public BirthmarkComparator getComparator(){
42         return comparator;
43     }
44
45     @Override
46     public boolean isExperimental(){
47         return false;
48     }
49
50     @Override
51     public boolean isUserDefined(){
52         return false;
53     }
54
55         @Override
56         public BirthmarkElement buildBirthmarkElement(String value) {
57                 value = value.trim();
58                 if(value.startsWith("{") && value.endsWith("}")){
59                         String[] param = value.substring(1, value.length() - 1).split(", *");
60                         KGram<Integer> kgram = new KGram<Integer>(param.length);
61                         for(int i = 0; i < param.length; i++){
62                                 kgram.set(i, new Integer(param[i].trim()));
63                         }
64                         return new KGramBasedBirthmarkElement<Integer>(kgram);
65                 }
66                 return null;
67         }
68 }