X-Git-Url: http://git.sourceforge.jp/view?p=stigmata%2Fstigmata-plugins.git;a=blobdiff_plain;f=kgram%2Fsrc%2Fmain%2Fjava%2Fjp%2Fsourceforge%2Fstigmata%2Fbirthmarks%2Fkgram%2FKGramBasedBirthmarkExtractor.java;h=b8d492088d4e81e881dd375b77c78aa25dae51b4;hp=6a0135a9b2a8ef7ed58e3ec1741d2443ae855b22;hb=ea4f79964242f731c5c4f82e71160aef21bec43b;hpb=0f81aaf05ae75d6fd2840cedfe1a4dcee010ae1a diff --git a/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java b/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java index 6a0135a..b8d4920 100644 --- a/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java +++ b/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java @@ -1,5 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.kgram; +import java.util.Iterator; + import jp.sourceforge.stigmata.Birthmark; import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.BirthmarkElement; @@ -7,6 +9,7 @@ import jp.sourceforge.stigmata.ExtractionUnit; import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; import jp.sourceforge.stigmata.spi.BirthmarkService; +import jp.sourceforge.stigmata.utils.ArrayIterator; import org.objectweb.asm.ClassWriter; @@ -24,6 +27,23 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{ super(); } + @Override + public Iterator getPropertyKeys(){ + return new ArrayIterator(new String[] { "KValue" }); + } + + @Override + public void setProperty(String key, Object value){ + if(key.equalsIgnoreCase("kvalue")){ + if(value instanceof Integer){ + kvalue = ((Integer)value).intValue(); + } + else if(value instanceof String){ + kvalue = Integer.parseInt((String)value); + } + } + } + public void setKValue(int kvalue){ this.kvalue = kvalue; } @@ -33,9 +53,9 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{ } @Override - public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, + public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){ - KGramBasedBirthmarkExtractVisitor extractor = + KGramBasedBirthmarkExtractVisitor extractor = new KGramBasedBirthmarkExtractVisitor(writer, birthmark, context); extractor.setKValue(getKValue()); return extractor; @@ -45,7 +65,7 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{ public ExtractionUnit[] getAcceptableUnits(){ return new ExtractionUnit[] { ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, - ExtractionUnit.ARCHIVE, + ExtractionUnit.ARCHIVE, }; } @@ -53,15 +73,12 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{ @Override public BirthmarkElement buildElement(String value) { value = value.trim(); - if(value.startsWith("{") && value.endsWith("}")){ - String[] param = - value.substring(1, value.length() - 1).split(", *"); - KGram kgram = new KGram(param.length); - for(int i = 0; i < param.length; i++){ - kgram.set(i, new Integer(param[i].trim())); - } - return new KGramBasedBirthmarkElement(kgram); + String[] param = + value.substring(1, value.length() - 1).split(" *"); + KGram kgram = new KGram(param.length); + for(int i = 0; i < param.length; i++){ + kgram.set(i, new Integer(param[i].trim())); } - return null; + return new KGramBasedBirthmarkElement(kgram); } }