1 package jp.sourceforge.stigmata.birthmarks.kgram;
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;
18 * @author Haruaki TAMADA
21 public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
22 private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
23 private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this);
25 public String getType(){
29 public String getDefaultDescription(){
30 return "k-gram based birthmark.";
33 public BirthmarkExtractor getExtractor(){
37 public BirthmarkComparator getComparator(){
41 public boolean isExperimental(){
45 public boolean isUserDefined(){
50 public BirthmarkElement buildBirthmarkElement(String value) {
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()));
58 return new KGramBasedBirthmarkElement<Integer>(kgram);