OSDN Git Service

add KGramBuilder for build kgram
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Sun, 2 Nov 2008 02:05:19 +0000 (02:05 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Sun, 2 Nov 2008 02:05:19 +0000 (02:05 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@318 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java [new file with mode: 0644]
src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java
src/main/java/jp/sourceforge/stigmata/result/history/XmlFileExtractedBirthmarkHistory.java

index ab9e31b..d1daca4 100644 (file)
@@ -106,7 +106,7 @@ public class KGram<T> implements Serializable{
      * @param value value for addition.
      * @return added index.
      */
-    pulic int add(T value){
+    public int add(T value){
         int index = -1;
         for(int i = 0; i < values.length; i++){
             if(values[i] == null){
@@ -151,21 +151,4 @@ public class KGram<T> implements Serializable{
     public int hashCode(){
         return Arrays.hashCode(values);
     }
-
-    @SuppressWarnings("unchecked")
-    public static <T> KGram<T>[] buildKGram(T[] values, int kvalue){
-        Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();
-
-        if(values.length >= kvalue){
-            int max = values.length - (kvalue - 1);
-            for(int i = 0; i < max; i++){
-                KGram<T> kgram = new KGram<T>(kvalue);
-                for(int j = 0; j < kvalue; j++){
-                    kgram.set(j, values[i + j]);
-                }
-                kgrams.add(kgram);
-            }
-        }
-        return kgrams.toArray(new KGram[kgrams.size()]);
-    }
 }
index 4644bdd..344996b 100644 (file)
@@ -38,18 +38,9 @@ public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
     }
 
     public void visitEnd(){
-        Set<KGram<Integer>> kgrams = new HashSet<KGram<Integer>>();
-        if(opcodes.size() >= getKValue()){
-            int kvalue = getKValue();
-            int max = opcodes.size() - (kvalue - 1);
-            for(int i = 0; i < max; i++){
-                KGram<Integer> kgram = new KGram<Integer>(kvalue);
-                for(int j = 0; j < kvalue; j++){
-                    kgram.set(j, opcodes.get(i + j));
-                }
-                kgrams.add(kgram);
-            }
-        }
+        KGramBuilder builder = KGramBuilder.getInstance();
+        KGram<Integer>[] kgrams = builder.<Integer>buildKGram(opcodes, getKValue());
+
         for(KGram<Integer> kgram: kgrams){
             addElement(new KGramBasedBirthmarkElement<Integer>(kgram));
         }
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java
new file mode 100644 (file)
index 0000000..3eacdd7
--- /dev/null
@@ -0,0 +1,61 @@
+package jp.sourceforge.stigmata.birthmarks.kgram;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.util.LinkedHashSet;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+/**\r
+ * @author Haruaki Tamada\r
+ * @version $Revision$\r
+ */\r
+public class KGramBuilder{\r
+    private static final KGramBuilder builder = new KGramBuilder();\r
+\r
+    /**\r
+     * private constructor for singleton pattern.\r
+     */\r
+    private KGramBuilder(){\r
+    }\r
+\r
+    public static KGramBuilder getInstance(){\r
+        return builder;\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    public <T> KGram<T>[] buildKGram(T[] values, int kvalue){\r
+        Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();\r
+\r
+        if(values.length >= kvalue){\r
+            int max = values.length - (kvalue - 1);\r
+            for(int i = 0; i < max; i++){\r
+                KGram<T> kgram = new KGram<T>(kvalue);\r
+                for(int j = 0; j < kvalue; j++){\r
+                    kgram.set(j, values[i + j]);\r
+                }\r
+                kgrams.add(kgram);\r
+            }\r
+        }\r
+        return kgrams.toArray(new KGram[kgrams.size()]);\r
+    }\r
+\r
+    @SuppressWarnings("unchecked")\r
+    public <T> KGram<T>[] buildKGram(List<T> values, int kvalue){\r
+        Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();\r
+\r
+        if(values.size() >= kvalue){\r
+            int max = values.size() - (kvalue - 1);\r
+            for(int i = 0; i < max; i++){\r
+                KGram<T> kgram = new KGram<T>(kvalue);\r
+                for(int j = 0; j < kvalue; j++){\r
+                    kgram.set(j, values.get(i + j));\r
+                }\r
+                kgrams.add(kgram);\r
+            }\r
+        }\r
+        return kgrams.toArray(new KGram[kgrams.size()]);\r
+    }\r
+}
\ No newline at end of file
index 5008e6a..6289937 100755 (executable)
@@ -176,15 +176,15 @@ public class RDBExtractionResultSet extends AbstractExtractionResultSet{
 
     public static class StringHandler implements ResultSetHandler{
         private int index;
-    
+
         public StringHandler(){
             this(0);
         }
-    
+
         public StringHandler(int index){
             this.index = index;
         }
-    
+
         public Object handle(ResultSet rs) throws SQLException{
             List<String> list = new ArrayList<String>();
             while(rs.next()){
@@ -216,7 +216,7 @@ public class RDBExtractionResultSet extends AbstractExtractionResultSet{
                         map.put(url, bs);
                     }
                     String type = rs.getString("TYPE");
-                    
+
                     Birthmark birthmark = bs.getBirthmark(type);
                     if(birthmark == null){
                         birthmark = env.getService(type).buildBirthmark();
index 61253c7..ad7744c 100755 (executable)
@@ -87,6 +87,6 @@ public class XmlFileExtractedBirthmarkHistory implements ExtractedBirthmarkHisto
 
     private boolean isTarget(File file){
         return file.isDirectory()
-        && file.getName().matches("\\d\\d\\d\\d\\d\\d\\d\\d-\\d\\d\\d\\d\\d\\d.\\d\\d\\d"); 
+            && file.getName().matches("\\d\\d\\d\\d\\d\\d\\d\\d-\\d\\d\\d\\d\\d\\d.\\d\\d\\d"); 
     }
 }