View Javadoc

1   package com.wikihouse.wildcats0201.jdbcchart.dom4j;
2   
3   import java.util.Iterator;
4   
5   import org.dom4j.Document;
6   import org.dom4j.DocumentException;
7   import org.dom4j.Element;
8   
9   import com.wikihouse.wildcats0201.jdbcchart.dto.ChartFile;
10  import com.wikihouse.wildcats0201.jdbcchart.dto.ChartXMLDTO;
11  import com.wikihouse.wildcats0201.jdbcchart.dto.Item;
12  import com.wikihouse.wildcats0201.jdbcchart.dto.Label;
13  import com.wikihouse.wildcats0201.jdbcchart.dto.SQL;
14  
15  /***
16   * <B>XMLParserFactory </B>. XMLParserのFactoryです。
17   * 
18   * @author $Author: wildcats $
19   * @version $Revision: 5 $
20   */
21  public final class XMLParserFactory {
22  
23      private XMLParserFactory() {
24      }
25  
26      /***
27       * 生成.
28       * 
29       * @return XMLParser
30       */
31      public static XMLParser create() {
32          return new XMLParseImpl();
33      }
34  
35      /***
36       * <B>XMLParseImpl </B>. XMLParserの実装です。
37       * 
38       * @todo Validation未実装
39       * @author $Author: wildcats $
40       * @version $Revision: 5 $
41       */
42      private static class XMLParseImpl implements XMLParser {
43  
44          /***
45           * @see com.wikihouse.wildcats0201.jdbcchart.dom4j.XMLParser#read(java.lang.String)
46           */
47          public ChartXMLDTO read(String fileName) {
48              SAXReaderWrapper parser = SAXReaderWrapperFactory.create();
49              Document document = null;
50              try {
51                  document = parser.parse(fileName);
52              } catch (DocumentException e) {
53                  throw new RuntimeException(e);
54              }
55              Element root = document.getRootElement();
56  
57              Element labelElement = root.element("label");
58  
59              ChartXMLDTO data = new ChartXMLDTO();
60  
61              Label label = new Label(labelElement.attributeValue("title"),
62                      labelElement.attributeValue("xLabel"), labelElement
63                              .attributeValue("yLabel"));
64  
65              data.setLabel(label);
66  
67              Element seriesElement = root.element("series");
68              for (Iterator i = seriesElement.elementIterator("item"); i
69                      .hasNext();) {
70                  Element itemElement = (Element) i.next();
71                  Item item = new Item(itemElement.attributeValue("name"));
72                  data.addSeries(item);
73              }
74  
75              Element fileElement = root.element("file");
76              ChartFile file = new ChartFile(fileElement.attributeValue("path"),
77                      fileElement.attributeValue("name"), fileElement
78                              .attributeValue("type"), getIntValue(fileElement
79                              .attributeValue("width")), getIntValue(fileElement
80                              .attributeValue("height")));
81  
82              data.setFile(file);
83  
84              Element sqlElement = root.element("sql");
85              SQL sql = new SQL(sqlElement.getText());
86              data.setSQL(sql);
87              return data;
88          }
89  
90          private int getIntValue(String string) {
91              return Integer.parseInt(string);
92          }
93  
94      }
95  
96  }