OSDN Git Service

change internal process method, which introducing ExtractionResultSet
[stigmata/stigmata.git] / src / main / java / jp / naist / se / stigmata / format / xml / BirthmarkExtractionListXmlFormat.java
old mode 100755 (executable)
new mode 100644 (file)
index de0bdcc..1aa9443
@@ -10,6 +10,8 @@ import java.util.Iterator;
 import jp.naist.se.stigmata.Birthmark;\r
 import jp.naist.se.stigmata.BirthmarkElement;\r
 import jp.naist.se.stigmata.BirthmarkSet;\r
+import jp.naist.se.stigmata.ExtractionResultSet;\r
+import jp.naist.se.stigmata.ExtractionTarget;\r
 import jp.naist.se.stigmata.format.AbstractBirthmarkExtractionResultFormat;\r
 \r
 /**\r
@@ -20,45 +22,44 @@ import jp.naist.se.stigmata.format.AbstractBirthmarkExtractionResultFormat;
  * @version $Revision$ $Date$\r
  */\r
 public class BirthmarkExtractionListXmlFormat extends AbstractBirthmarkExtractionResultFormat{\r
-    public void printResult(PrintWriter out, BirthmarkSet[] holders){\r
+    public void printResult(PrintWriter out, ExtractionResultSet ers){\r
         out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");\r
-        out.println("<stigmata>");\r
+        out.println("<birthmark>");\r
         out.println("  <extracted-birthmarks>");\r
-        for(int i = 0; i < holders.length; i++){\r
-            printBirthmarkHolder(out, holders[i]);\r
+        for(Iterator<BirthmarkSet> i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){\r
+            printBirthmarkSet(out, i.next());\r
         }\r
         out.println("  </extracted-birthmarks>");\r
-        out.println("</stigmata>");\r
+        out.println("</birthmark>");\r
+        out.flush();\r
     }\r
 \r
-    protected void printBirthmarkHolder(PrintWriter out, BirthmarkSet holder){\r
+    protected void printBirthmarkSet(PrintWriter out, BirthmarkSet set){\r
         out.println("    <extracted-birthmark>");\r
-        out.print("      <class-name>");\r
-        out.print(holder.getClassName());\r
-        out.println("<class-name>");\r
-        out.print("      <location>");\r
-        out.print(holder.getLocation());\r
-        out.println("</location>");\r
-        for(Iterator<String> i = holder.birthmarkTypes(); i.hasNext(); ){\r
+        out.printf("      <class-name>%s</class-name>%n", escapeToXmlString(set.getName()));\r
+        out.printf("      <location>%s</location>%n", escapeToXmlString(set.getLocation()));\r
+        for(Iterator<String> i = set.birthmarkTypes(); i.hasNext(); ){\r
             String type = i.next();\r
-            Birthmark birthmark = holder.getBirthmark(type);\r
-            out.print("      <birthmark type=\"");\r
-            out.print(birthmark.getType());\r
-            out.print("\" count=\"");\r
-            out.print(birthmark.getElementCount());\r
-            out.println("\">");\r
+            Birthmark birthmark = set.getBirthmark(type);\r
+            out.printf("      <birthmark type=\"%s\" count=\"%d\">%n",\r
+                       birthmark.getType(), birthmark.getElementCount());\r
             for(Iterator<BirthmarkElement> elements = birthmark.iterator(); elements.hasNext(); ){\r
-                out.print("        <element>");\r
-                out.print(normalizedElement(elements.next()));\r
-                out.println("</element>");\r
+                out.printf("        <element>%s</element>%n",\r
+                           escapeToXmlString(String.valueOf(elements.next())));\r
             }\r
             out.println("      </birthmark>");\r
         }\r
         out.println("    </extracted-birthmark>");\r
     }\r
 \r
-    private String normalizedElement(BirthmarkElement e){\r
-        String string = e.toString();\r
+    public String escapeToXmlString(Object o){\r
+        if(o != null){\r
+            return escapeToXmlString(o.toString());\r
+        }\r
+        return null;\r
+    }\r
+\r
+    public String escapeToXmlString(String string){\r
         string = string.replaceAll("&",  "&amp;");\r
         string = string.replaceAll("\"", "&quot;");\r
         string = string.replaceAll("<",  "&lt;");\r