OSDN Git Service

change internal process method, which introducing ExtractionResultSet
[stigmata/stigmata.git] / src / main / java / jp / naist / se / stigmata / format / xml / BirthmarkExtractionListXmlFormat.java
1 package jp.naist.se.stigmata.format.xml;\r
2 \r
3 /*\r
4  * $Id$\r
5  */\r
6 \r
7 import java.io.PrintWriter;\r
8 import java.util.Iterator;\r
9 \r
10 import jp.naist.se.stigmata.Birthmark;\r
11 import jp.naist.se.stigmata.BirthmarkElement;\r
12 import jp.naist.se.stigmata.BirthmarkSet;\r
13 import jp.naist.se.stigmata.ExtractionResultSet;\r
14 import jp.naist.se.stigmata.ExtractionTarget;\r
15 import jp.naist.se.stigmata.format.AbstractBirthmarkExtractionResultFormat;\r
16 \r
17 /**\r
18  * \r
19  * \r
20  *\r
21  * @author Haruaki TAMADA\r
22  * @version $Revision$ $Date$\r
23  */\r
24 public class BirthmarkExtractionListXmlFormat extends AbstractBirthmarkExtractionResultFormat{\r
25     public void printResult(PrintWriter out, ExtractionResultSet ers){\r
26         out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");\r
27         out.println("<birthmark>");\r
28         out.println("  <extracted-birthmarks>");\r
29         for(Iterator<BirthmarkSet> i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){\r
30             printBirthmarkSet(out, i.next());\r
31         }\r
32         out.println("  </extracted-birthmarks>");\r
33         out.println("</birthmark>");\r
34         out.flush();\r
35     }\r
36 \r
37     protected void printBirthmarkSet(PrintWriter out, BirthmarkSet set){\r
38         out.println("    <extracted-birthmark>");\r
39         out.printf("      <class-name>%s</class-name>%n", escapeToXmlString(set.getName()));\r
40         out.printf("      <location>%s</location>%n", escapeToXmlString(set.getLocation()));\r
41         for(Iterator<String> i = set.birthmarkTypes(); i.hasNext(); ){\r
42             String type = i.next();\r
43             Birthmark birthmark = set.getBirthmark(type);\r
44             out.printf("      <birthmark type=\"%s\" count=\"%d\">%n",\r
45                        birthmark.getType(), birthmark.getElementCount());\r
46             for(Iterator<BirthmarkElement> elements = birthmark.iterator(); elements.hasNext(); ){\r
47                 out.printf("        <element>%s</element>%n",\r
48                            escapeToXmlString(String.valueOf(elements.next())));\r
49             }\r
50             out.println("      </birthmark>");\r
51         }\r
52         out.println("    </extracted-birthmark>");\r
53     }\r
54 \r
55     public String escapeToXmlString(Object o){\r
56         if(o != null){\r
57             return escapeToXmlString(o.toString());\r
58         }\r
59         return null;\r
60     }\r
61 \r
62     public String escapeToXmlString(String string){\r
63         string = string.replaceAll("&",  "&amp;");\r
64         string = string.replaceAll("\"", "&quot;");\r
65         string = string.replaceAll("<",  "&lt;");\r
66         string = string.replaceAll(">",  "&gt;");\r
67 \r
68         return string;\r
69     }\r
70 }\r