From ea4f79964242f731c5c4f82e71160aef21bec43b Mon Sep 17 00:00:00 2001 From: Haruaki Tamada Date: Thu, 27 Nov 2014 19:13:38 +0900 Subject: [PATCH] change kgram format --- .../stigmata/birthmarks/kgram/KGram.java | 17 +++++---- .../kgram/KGramBasedBirthmarkExtractor.java | 41 +++++++++++++++------- .../stigmata/birthmarks/kgram/KGramTest.java | 11 +++++- wsp/pom.xml | 2 +- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java b/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java index 7fc6df7..bdff039 100644 --- a/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java +++ b/kgram/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java @@ -5,8 +5,8 @@ import java.lang.reflect.Array; import java.util.Arrays; /** - * This class represents k-gram of the some sequence. - * + * This class represents k-gram of the some sequence. + * * @author Haruaki TAMADA */ public class KGram implements Serializable{ @@ -24,7 +24,7 @@ public class KGram implements Serializable{ } /** - * sets k-value. + * sets k-value. * @param kvalue the number of elements of this object. */ public void setKValue(int kvalue){ @@ -44,12 +44,11 @@ public class KGram implements Serializable{ */ @Override public String toString(){ - StringBuffer buffer = new StringBuffer("{ "); + StringBuffer buffer = new StringBuffer(); for(int i = 0; i < maxLength; i++){ - if(i != 0) buffer.append(", "); + if(i != 0) buffer.append(" "); buffer.append(get(i)); } - buffer.append(" }"); return new String(buffer); } @@ -93,14 +92,14 @@ public class KGram implements Serializable{ /** * adds value at last index. - * - * this object is called with given 2 when following situation, + * + * this object is called with given 2 when following situation, *
    *
  • { 1, 3, null, null } -> { 1, 2, 3, null } and return 2
  • *
  • { 1, null, 3, null } -> { 1, 2, 3, null } and return 1
  • *
  • { 1, 2, 3, 4 } -> { 1, 2, 3, 4 } and return -1
  • *
- * + * * @param value value for addition. * @return added index. */ 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); } } diff --git a/kgram/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java b/kgram/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java index b34ecb2..22b2564 100644 --- a/kgram/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java +++ b/kgram/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java @@ -5,7 +5,7 @@ import org.junit.Before; import org.junit.Test; /** - * + * * @author Haruaki Tamada */ public class KGramTest{ @@ -19,6 +19,15 @@ public class KGramTest{ } @Test + public void testStringRepresentation(){ + KGram[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 4); + Assert.assertEquals("a b c d", kgrams[0].toString()); + Assert.assertEquals("b c d e", kgrams[1].toString()); + Assert.assertEquals("c d e f", kgrams[2].toString()); + Assert.assertEquals("d e f g", kgrams[3].toString()); + } + + @Test public void checkPlainKGram(){ KGram[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 4); Assert.assertEquals(4, kgrams.length); diff --git a/wsp/pom.xml b/wsp/pom.xml index 3df8e30..c48d77f 100644 --- a/wsp/pom.xml +++ b/wsp/pom.xml @@ -8,7 +8,7 @@ jp.sourceforge.stigmata stigmata-plugins - 4.0-SNAPSHOT + 4.0 jp.sourceforge.stigmata.plugins -- 2.11.0