OSDN Git Service

change kgram format
[stigmata/stigmata-plugins.git] / kgram / src / main / java / jp / sourceforge / stigmata / birthmarks / kgram / KGramBasedBirthmarkExtractor.java
index 6a0135a..b8d4920 100644 (file)
@@ -1,5 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.kgram;
 
 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;
 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.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;
 
 
 import org.objectweb.asm.ClassWriter;
 
@@ -24,6 +27,23 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
         super();
     }
 
         super();
     }
 
+    @Override
+    public Iterator<String> getPropertyKeys(){
+        return new ArrayIterator<String>(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;
     }
     public void setKValue(int kvalue){
         this.kvalue = kvalue;
     }
@@ -33,9 +53,9 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
     }
 
     @Override
     }
 
     @Override
-    public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, 
+    public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer,
             Birthmark birthmark, BirthmarkContext context){
             Birthmark birthmark, BirthmarkContext context){
-        KGramBasedBirthmarkExtractVisitor extractor = 
+        KGramBasedBirthmarkExtractVisitor extractor =
             new KGramBasedBirthmarkExtractVisitor(writer, birthmark, context);
         extractor.setKValue(getKValue());
         return 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,
     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();
     @Override
     public BirthmarkElement buildElement(String value) {
         value = value.trim();
-        if(value.startsWith("{") && value.endsWith("}")){
-            String[] param = 
-                value.substring(1, value.length() - 1).split(", *");
-            KGram<Integer> kgram = new KGram<Integer>(param.length);
-            for(int i = 0; i < param.length; i++){
-                kgram.set(i, new Integer(param[i].trim()));
-            }
-            return new KGramBasedBirthmarkElement<Integer>(kgram);
+        String[] param =
+            value.substring(1, value.length() - 1).split(" *");
+        KGram<Integer> kgram = new KGram<Integer>(param.length);
+        for(int i = 0; i < param.length; i++){
+            kgram.set(i, new Integer(param[i].trim()));
         }
         }
-        return null;
+        return new KGramBasedBirthmarkElement<Integer>(kgram);
     }
 }
     }
 }