UIB: remove dom4j library 75/15975/1
authorgyeongmin.ju <gyeongmin.ju@samsung.com>
Mon, 3 Feb 2014 11:33:56 +0000 (20:33 +0900)
committergyeongmin.ju <gyeongmin.ju@samsung.com>
Mon, 3 Feb 2014 11:33:56 +0000 (20:33 +0900)
Signed-off-by: gyeongmin.ju <gyeongmin.ju@samsung.com>
Change-Id: I64078ac19bd23567d44a639c7434f1c37304fa0a

46 files changed:
org.tizen.webuibuilder/.classpath
org.tizen.webuibuilder/META-INF/MANIFEST.MF
org.tizen.webuibuilder/lib/._dom4j-1.6.1.jar8983304010697422749.tmp [deleted file]
org.tizen.webuibuilder/lib/dom4j-1.6.1.jar [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/handles/TransformedFigureResizeHandleLocator.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/animator/model/descriptor/AnimatorDescriptorReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/builder/WebUIBuilderBuilder.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/AppManagerForHTML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaReader_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaReader_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaWriter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaWriter_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/AppMetaWriter_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/HtmlMetaReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/HtmlMetaReader_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/HtmlMetaWriter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/app/io/HtmlMetaWriter_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/css/io/CssDescriptorReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/descriptors/DescriptorManager.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/html/HtmlReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/html/HtmlWriter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/CodeGenerator.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_1.java [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_2.java [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/FileReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/HTMLWriter2.java [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageReader_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageReader_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageWriter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageWriter_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/PageWriter_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/SAXContentHandler2.java [deleted file]
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/TizenFileFormatter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/page/PageDataForHTML.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/ProjectManager.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectReader.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectReader_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectReader_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectWriter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectWriter_ver_1.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/project/io/ProjectWriter_ver_2.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/snippet/converter/Converter.java
org.tizen.webuibuilder/src/org/tizen/webuibuilder/ui/views/properties/style/CssStyleTab.java

index a6ac688..a4e4a3a 100644 (file)
@@ -7,7 +7,6 @@
        <classpathentry excluding="org/tizen/webuibuilder/ui/views/properties/method/StyleColorMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleComboMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleFontStyleMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleFontTextMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleFontWeightMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleGroupMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleImageMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StylePositionMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleResourceMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleSizeMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleSpinnerMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleTextAlignMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleTextDecoMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleTextMethod.java|org/tizen/webuibuilder/ui/views/properties/method/StyleToolBarMethod.java|org/tizen/webuibuilder/ui/views/properties/method/FontTextMethod.java|org/tizen/webuibuilder/ui/views/properties/method/IStyleChangedListener.java|org/tizen/webuibuilder/ui/views/properties/style/StandardViewer.java|org/tizen/webuibuilder/ui/views/properties/style/StyleContentProvider.java|org/tizen/webuibuilder/ui/views/properties/style/StyleLabelProvider.java|org/tizen/webuibuilder/ui/views/properties/style/StyleTab.java|org/tizen/webuibuilder/ui/views/properties/style/StyleEvent.java|org/tizen/webuibuilder/ui/views/properties/style/StyleTreeViewer.java|org/tizen/webuibuilder/ui/views/properties/style/Style.java" kind="src" path="src"/>
        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
        <classpathentry exported="true" kind="lib" path="lib/gson-2.2.4.jar"/>
-       <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
        <classpathentry kind="lib" path="lib/opal-0.9.5.jar"/>
        <classpathentry kind="lib" path="lib/org.eclipse.nebula.widgets.gallery_0.6.0.201307092147.jar"/>
        <classpathentry kind="lib" path="lib/org.eclipse.nebula.widgets.gallery.source_0.6.0.201307092147.jar"/>
index a45bbd5..eb0d65d 100644 (file)
@@ -43,7 +43,6 @@ Import-Package: org.eclipse.core.filesystem,
 Export-Package: org.tizen.webuibuilder.extintrf,
  org.tizen.webuibuilder.ui.editor
 Bundle-ClassPath: .,
- lib/dom4j-1.6.1.jar,
  lib/opal-0.9.5.jar,
  lib/org.eclipse.nebula.widgets.gallery_0.6.0.201307092147.jar,
  lib/org.eclipse.nebula.widgets.gallery.source_0.6.0.201307092147.jar,
diff --git a/org.tizen.webuibuilder/lib/._dom4j-1.6.1.jar8983304010697422749.tmp b/org.tizen.webuibuilder/lib/._dom4j-1.6.1.jar8983304010697422749.tmp
deleted file mode 100644 (file)
index c8c4dbb..0000000
Binary files a/org.tizen.webuibuilder/lib/._dom4j-1.6.1.jar8983304010697422749.tmp and /dev/null differ
diff --git a/org.tizen.webuibuilder/lib/dom4j-1.6.1.jar b/org.tizen.webuibuilder/lib/dom4j-1.6.1.jar
deleted file mode 100644 (file)
index c8c4dbb..0000000
Binary files a/org.tizen.webuibuilder/lib/dom4j-1.6.1.jar and /dev/null differ
index 8250c0d..8926675 100644 (file)
@@ -89,8 +89,10 @@ public class TransformedFigureResizeHandleLocator extends RelativeLocator {
         if (owner.getModel() instanceof Part) {
             Part part = (Part) owner.getModel();
             // Rectangle bounds = part.getPosition().getCopy();
-            Rectangle bounds = part.getAniPosition().getCopy();
-            return bounds;
+            if(part.getAniPosition() != null){
+                   Rectangle bounds = part.getAniPosition().getCopy();
+                   return bounds;
+            }
         }
         return super.getReferenceBox();
     }
index e85bc56..ce2e584 100644 (file)
 
 package org.tizen.webuibuilder.animator.model.descriptor;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 
 /**
@@ -71,67 +77,78 @@ public class AnimatorDescriptorReader {
      * @param descriptorPath
      */
     public void parse(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
-
+       
         try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(descriptorPath.toURI().toString());
+               } catch (URISyntaxException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
             e.printStackTrace();
         }
 
-        if (doc != null && doc.getRootElement() != null) {
-            parseRoot(doc.getRootElement());
+        if (doc != null && doc.getDocumentElement() != null) {
+            parseRoot(doc.getDocumentElement());
         }
     }
 
     private void parseRoot(Element root) {
-        for (Object childObj : root.elements(ELEM_ANIMATION)) {
-            parseAnimation((Element) childObj, new CssAnimationDescriptor());
+       NodeList elemList = root.getElementsByTagName(ELEM_ANIMATION);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            parseAnimation((Element) elemList.item(i), new CssAnimationDescriptor());
         }
     }
 
     private void parseAnimation(Element elem, CssAnimationDescriptor cssAnimation) {
-        String id = elem.attributeValue(ATTR_ID);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String iconPathSmall = elem.attributeValue(ATTR_SMALLICON);
-        String iconPath16 = elem.attributeValue(ATTR_ICON_16);
-        String description = elem.attributeValue(ATTR_DESCRIPTION);
-        String category = elem.attributeValue(ATTR_CATEGORY);
+        String id = elem.getAttribute(ATTR_ID);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String iconPathSmall = elem.getAttribute(ATTR_SMALLICON);
+        String iconPath16 = elem.getAttribute(ATTR_ICON_16);
+        String description = elem.getAttribute(ATTR_DESCRIPTION);
+        String category = elem.getAttribute(ATTR_CATEGORY);
 
         cssAnimation.init(id, displayName, iconPath16, iconPathSmall, category, description);
 
-        for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-            parseProperty((Element) propertyObj, cssAnimation);
+       NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            parseProperty((Element) elemList.item(i), cssAnimation);
         }
 
         manager.addCssAnimationDescriptor(cssAnimation);
     }
 
     private void parseProperty(Element elem, CssAnimationDescriptor animationDescriptor) {
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
+        String name = elem.getAttribute(ATTR_NAME);
+        String type = elem.getAttribute(ATTR_TYPE);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+        String initValue = elem.getAttribute(ATTR_INITVALUE);
 
         CssAnimationPropertyDescriptor property = new CssAnimationPropertyDescriptor();
         property.init(name, type, displayName, defaultValue, initValue);
 
         animationDescriptor.addProperties(property);
 
-        for (Object childObj : elem.elements(ELEM_PROPERTY)) {
-            parseChildProperty((Element) childObj, property);
+       NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+        for (int i = 0; i < elemList.getLength(); i++) {
+               parseChildProperty((Element) elemList.item(i), property);
         }
     }
 
     private void parseChildProperty(Element elem,
                                     CssAnimationPropertyDescriptor animationPropertyDescriptor) {
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
+        String name = elem.getAttribute(ATTR_NAME);
+        String type = elem.getAttribute(ATTR_TYPE);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+        String initValue = elem.getAttribute(ATTR_INITVALUE);
 
         CssAnimationPropertyDescriptor childProperty = new CssAnimationPropertyDescriptor();
         childProperty.init(name, type, displayName, defaultValue, initValue);
index fbe29d2..6063137 100644 (file)
@@ -198,7 +198,7 @@ public class WebUIBuilderBuilder extends IncrementalProjectBuilder {
             String dstFile = htmlFile.getLocation().toString();
             DescriptorManager descriptorManager = getDescriptorManager(project);
             PartFactory partFactory = new PartFactory(descriptorManager);
-            CodeGenerator.generateCode(srcFile, dstFile, descriptorManager, partFactory, project);
+            CodeGenerator.generateCode(srcFile, dstFile, descriptorManager, partFactory);
 
             // page.managed.js
             // InputStream xsltStream =
index bf04e96..783f096 100644 (file)
@@ -450,19 +450,20 @@ public class AppManagerForHTML extends AppManager {
         newElmBase.setAttribute("href", rootPathUri + "/");
         elm.insertBefore(newElmBase, elm.getFirstChild());
 
-        NodeList scripts = elm.getElementsByTagName("script");
-        if (scripts != null) {
-            int len = scripts.getLength();
-            for (int i = 0; i < len; i++) {
-                Element script = (Element) scripts.item(i);
-                String src = script.getAttribute("src");
-                int fileidx = src.lastIndexOf("/");
-                String filename = src.substring(fileidx + 1);
-                if (!filename.equals("jquery.js") && !filename.equals("tizen-web-ui-fw-libs.js")
-                        && !filename.equals("tizen-web-ui-fw.js")) {
-                    script.removeAttribute("src");
-                    script.setTextContent("");
-                }
+        NodeList elemList = elm.getChildNodes();
+        for(int i = elemList.getLength(); i >= 0; i--){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+                       if(childNode.getNodeName().equals("script")){
+                       Element script = (Element) childNode;
+                       String src = script.getAttribute("src");
+                       int fileidx = src.lastIndexOf("/");
+                       String filename = src.substring(fileidx + 1);
+                       if (!filename.equals("jquery.js") && !filename.equals("tizen-web-ui-fw-libs.js")
+                               && !filename.equals("tizen-web-ui-fw.js")) {
+                               elm.removeChild(childNode);
+                       }
+                       }
             }
         }
 
@@ -507,19 +508,20 @@ public class AppManagerForHTML extends AppManager {
         newElmBase.setAttribute("href", rootPathUri + "/");
         elm.insertBefore(newElmBase, elm.getFirstChild());
 
-        NodeList scripts = elm.getElementsByTagName("script");
-        if (scripts != null) {
-            int len = scripts.getLength();
-            for (int i = 0; i < len; i++) {
-                Element script = (Element) scripts.item(i);
-                String src = script.getAttribute("src");
-                int fileidx = src.lastIndexOf("/");
-                String filename = src.substring(fileidx + 1);
-                if (!filename.equals("jquery.js") && !filename.equals("tizen-web-ui-fw-libs.js")
-                        && !filename.equals("tizen-web-ui-fw.js")) {
-                    script.removeAttribute("src");
-                    script.setTextContent("");
-                }
+        NodeList elemList = elm.getChildNodes();
+        for(int i = elemList.getLength(); i >= 0; i--){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+                       if(childNode.getNodeName().equals("script")){
+                       Element script = (Element) childNode;
+                       String src = script.getAttribute("src");
+                       int fileidx = src.lastIndexOf("/");
+                       String filename = src.substring(fileidx + 1);
+                       if (!filename.equals("jquery.js") && !filename.equals("tizen-web-ui-fw-libs.js")
+                               && !filename.equals("tizen-web-ui-fw.js")) {
+                               elm.removeChild(childNode);
+                       }
+                       }
             }
         }
 
@@ -633,17 +635,18 @@ public class AppManagerForHTML extends AppManager {
         for (int i = 0; i < len; i++) {
             body.removeChild(body.getFirstChild());
         }
-        body.setTextContent("%html%");
 
+        if (html == null) {
+            html = "";
+        }
+        body.setTextContent("%html%");
+        
         // String tempHtml =
         // HtmlWriter.writeToString((Element)editDoc.getFirstChild().getChildNodes().item(index));
         String tempHtml = HtmlWriter.writeToString(editDoc);
 
-        if (html == null) {
-            html = "";
-        }
         tempHtml = tempHtml.replace("%html%", html);
-
+        
         return tempHtml;
     }
 
index 88ac157..4d55833 100644 (file)
 
 package org.tizen.webuibuilder.model.app.io;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
 
 
 public class AppMetaReader {
 
     public static AppFileData read(InputStream stream) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
-        AppFileData descriptor = null;
 
         try {
-            doc = reader.read(stream);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(stream);
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
 
-        if (doc != null && doc.getRootElement() != null) {
-            descriptor = AppMetaReader_ver_2.parse(doc.getRootElement());
+        AppFileData descriptor = null;
+
+        if (doc != null && doc.getDocumentElement() != null) {
+            descriptor = AppMetaReader_ver_2.parse(doc.getDocumentElement());
             if (descriptor == null) {
-                descriptor = AppMetaReader_ver_1.parse(doc.getRootElement());
+                descriptor = AppMetaReader_ver_1.parse(doc.getDocumentElement());
             }
         }
 
@@ -56,23 +67,15 @@ public class AppMetaReader {
     }
 
     public static AppFileData read(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
-        Document doc = null;
-        AppFileData descriptor = null;
-
+       AppFileData descriptor = null;
+       
         try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
-
-        if (doc != null && doc.getRootElement() != null) {
-            descriptor = AppMetaReader_ver_2.parse(doc.getRootElement());
-            if (descriptor == null) {
-                descriptor = AppMetaReader_ver_1.parse(doc.getRootElement());
-            }
-        }
-
+               descriptor = read(descriptorPath.openStream());
+               } catch (IOException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+        
         return descriptor;
     }
 }
index 5c2d90e..34ddd08 100644 (file)
 
 package org.tizen.webuibuilder.model.app.io;
 
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
 import org.tizen.webuibuilder.model.app.Page;
 import org.tizen.webuibuilder.model.app.Stylesheet;
+import org.tizen.webuibuilder.model.descriptors.DocumentPartDescriptor;
+import org.tizen.webuibuilder.model.descriptors.PagePartDescriptor;
+import org.tizen.webuibuilder.model.descriptors.WidgetPartDescriptor;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
 
 
@@ -51,67 +56,80 @@ public class AppMetaReader_ver_1 {
         descriptor = new AppFileData();
         descriptor.setProjectFileVersion("0.0.1");
 
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_PROJECTINFO)) {
-            parseProjectInfo((Element) childObj, descriptor);
-        }
-
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_PAGESYSTEM)) {
-            parsePart((Element) childObj, descriptor);
-        }
+       NodeList elemList = root.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PROJECTINFO)) {
+                       parseProjectInfo((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGESYSTEM)) {
+                       parsePart((Element) childNode, descriptor);
+               }
+               }
+       }
 
         return descriptor;
     }
 
     private static void parseProjectInfo(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_TITLE)) {
-            Element title = (Element) childObj;
-            descriptor.setTitle(title.getText());
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_AUTHOR)) {
-            Element author = (Element) childObj;
-            descriptor.setAuthor(author.getText());
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VERSION)) {
-            Element version = (Element) childObj;
-            descriptor.setVersion(version.getText());
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_TITLE)) {
+                       descriptor.setTitle(childNode.getTextContent());
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_AUTHOR)) {
+                       descriptor.setAuthor(childNode.getTextContent());
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_VERSION)) {
+                       descriptor.setVersion(childNode.getTextContent());
+               }
+               }
+       }
     }
 
     private static void parsePart(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORKS)) {
-            parseFrameworks((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARIES)) {
-            parseLibraries((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_PAGES)) {
-            parsePages((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_ENTRIES)) {
-            parseEntrys((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEETS)) {
-            parseStylesheets((Element) childObj, descriptor);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORKS)) {
+                       parseFrameworks((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_LIBRARIES)) {
+                       parseLibraries((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGES)) {
+                       parsePages((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_ENTRIES)) {
+                       parseEntrys((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_STYLESHEETS)) {
+                       parseStylesheets((Element) childNode, descriptor);
+               }
+               }
+       }
     }
 
     private static void parseFrameworks(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORK_THEME)) {
-            String theme = parseTheme((Element) childObj);
-            descriptor.addOrReplaceFrameworkVariable("theme", theme);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            FrameworkEntry frameworkentry = parseFramework((Element) childObj, descriptor);
-            descriptor.addLibrary(frameworkentry.library);
-            if (frameworkentry.framework != null) {
-                descriptor.addFramework(frameworkentry.framework);
-            }
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORK_THEME)) {
+                   String theme = parseTheme((Element) childNode);
+                   descriptor.addOrReplaceFrameworkVariable("theme", theme);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_SCRIPT)) {
+                   FrameworkEntry frameworkentry = parseFramework((Element) childNode, descriptor);
+                   descriptor.addLibrary(frameworkentry.library);
+                   if (frameworkentry.framework != null) {
+                       descriptor.addFramework(frameworkentry.framework);
+                   }
+               }
+               }
+       }
     }
 
     private static void parseLibraries(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            Library script = parseScript((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_SCRIPT);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Library script = parseScript((Element) elemList.item(i));
             descriptor.addLibrary(script);
         }
 
@@ -120,17 +138,18 @@ public class AppMetaReader_ver_1 {
     }
 
     private static void parsePages(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_PAGE)) {
-            Element element2 = (Element) childObj;
+       NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_PAGE);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String startup = element2.attributeValue(BuilderConstants.ATTRIBUTE_STARTUP);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String startup = element2.getAttribute(BuilderConstants.ATTRIBUTE_STARTUP);
             boolean boolStartup = Boolean.valueOf(startup).booleanValue();
-            String pagePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_PAGEPATH);
-            String jsPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSPATH);
+            String pagePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH);
+            String jsPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSPATH);
             String managedJsPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
-            String htmlPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_HTMLPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
+            String htmlPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH);
             String cssPath = htmlPath.replace(".html", ".css");
             String managedCssPath = htmlPath.replace(".html", ".managed.css");
 
@@ -146,8 +165,9 @@ public class AppMetaReader_ver_1 {
     }
 
     private static void parseEntrys(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            Library entry = parseEntry((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_SCRIPT);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Library entry = parseEntry((Element) elemList.item(i));
             descriptor.addLibrary(entry);
         }
     }
@@ -155,14 +175,16 @@ public class AppMetaReader_ver_1 {
     private static void parseStylesheets(Element elem, AppFileData descriptor) {
         Stylesheet stylesheet = new Stylesheet("pages", "all", "");
         descriptor.addStylesheet(stylesheet);
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEET)) {
-            stylesheet = parseStylesheet((Element) childObj);
+        
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_STYLESHEET);
+       for(int i = 0; i < elemList.getLength(); i++){
+            stylesheet = parseStylesheet((Element) elemList.item(i));
             descriptor.addStylesheet(stylesheet);
         }
     }
 
     private static String parseTheme(Element element) {
-        String theme = element.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+        String theme = element.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
 
         return theme;
     }
@@ -170,9 +192,9 @@ public class AppMetaReader_ver_1 {
     private static FrameworkEntry parseFramework(Element element, AppFileData descriptor) {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
-        String theme = element.attributeValue(BuilderConstants.ATTRIBUTE_THEME);
-        String viewport = element.attributeValue(BuilderConstants.ATTRIBUTE_SCALE);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
+        String theme = element.getAttribute(BuilderConstants.ATTRIBUTE_THEME);
+        String viewport = element.getAttribute(BuilderConstants.ATTRIBUTE_SCALE);
         String core = "";
 
         if (theme != null && !theme.isEmpty()) {
@@ -201,7 +223,7 @@ public class AppMetaReader_ver_1 {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
         String type = "user";
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Library script = new Library(type, path); // type == "user"
 
@@ -212,7 +234,7 @@ public class AppMetaReader_ver_1 {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
         String type = " entry";
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Library framework = new Library(type, path); // type == "entry"
 
@@ -220,7 +242,7 @@ public class AppMetaReader_ver_1 {
     }
 
     private static Stylesheet parseStylesheet(Element element) {
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Stylesheet stylesheet = new Stylesheet("user", path, "");
 
index f6d4937..ee0c798 100644 (file)
@@ -28,7 +28,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.dom4j.Element;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
@@ -59,73 +62,83 @@ public class AppMetaReader_ver_2 {
         descriptor = new AppFileData();
         descriptor.setProjectFileVersion(fileReader.getVersion());
 
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_TIZENPROJECT)) {
-            parsePart((Element) childObj, descriptor);
+        NodeList elemList = root.getElementsByTagName(BuilderConstants.ELEMENT_TIZENPROJECT);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            parsePart((Element) elemList.item(i), descriptor);
         }
 
         return descriptor;
     }
 
     private static void parsePart(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_METAS)) {
-            parseMetas((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARIES)) {
-            parseLibrarys((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORKS)) {
-            parseFrameworks((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_PAGES)) {
-            parsePage((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_DATABINDING)) {
-            parseDataBinding((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEETS)) {
-            parseStylesheets((Element) childObj, descriptor);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_METAS)) {
+                   parseMetas((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_LIBRARIES)) {
+                       parseLibrarys((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORKS)) {
+                       parseFrameworks((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGES)) {
+                       parsePage((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_DATABINDING)) {
+                       parseDataBinding((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_STYLESHEETS)) {
+                       parseStylesheets((Element) childNode, descriptor);
+               }                       
+               }
+       }
     }
 
     private static void parseMetas(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_META)) {
-            Meta meta = parseMeta((Element) childObj);
+        NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_META);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Meta meta = parseMeta((Element) elemList.item(i));
             descriptor.addMeta(meta);
         }
     }
 
     private static void parseFrameworks(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VARIABLES)) {
-            parseFrameworkVariables((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORK)) {
-            Framework script = parseFramework((Element) childObj);
-            descriptor.addFramework(script);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_VARIABLES)) {
+                       parseFrameworkVariables((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORK)) {
+                   Framework script = parseFramework((Element) childNode);
+                   descriptor.addFramework(script);
+               }
+               }
+       }
     }
 
     private static void parseLibrarys(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARY)) {
-            Library library = parseLibrary((Element) childObj);
+        NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_LIBRARY);
+        for (int i = 0; i < elemList.getLength(); i++) {
+               Library library = parseLibrary((Element) elemList.item(i));
             descriptor.addLibrary(library);
         }
     }
 
     private static void parsePage(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_PAGE)) {
-            Element element2 = (Element) childObj;
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_PAGE);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String startup = element2.attributeValue(BuilderConstants.ATTRIBUTE_STARTUP);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String startup = element2.getAttribute(BuilderConstants.ATTRIBUTE_STARTUP);
             boolean boolStartup = Boolean.valueOf(startup).booleanValue();
-            String pagePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_PAGEPATH);
-            String jsPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSPATH);
+            String pagePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH);
+            String jsPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSPATH);
             String managedJsPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
-            String htmlPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_HTMLPATH);
-            String cssPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_CSSPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
+            String htmlPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH);
+            String cssPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_CSSPATH);
             String managedCssPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH);
 
             Page page =
                     new Page(name, pagePath, jsPath, managedJsPath, htmlPath, cssPath,
@@ -146,11 +159,12 @@ public class AppMetaReader_ver_2 {
     }
 
     private static void parseUpdateStartUp(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_UPDATEONSTARTUP)) {
-            Element element2 = (Element) childObj;
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String updateStartUp = element2.attributeValue(BuilderConstants.ATTRIBUTE_ISCHECKED);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String updateStartUp = element2.getAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED);
             boolean isChecked = false;
 
             if (updateStartUp.equals("true")) {
@@ -165,17 +179,19 @@ public class AppMetaReader_ver_2 {
     }
 
     private static void parseHandlerInfo(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_HANDLERINFO)) {
-            Element element2 = (Element) childObj;
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_HANDLERINFO);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
 
             BindingData dataModel = new BindingData(name);
             List<String> modelInfo = new ArrayList<String>();
 
-            for (Object subChildObj : element.elements(BuilderConstants.ELEMENT_HANDLERINFO)) {
-                Element element3 = (Element) subChildObj;
-                String childName = element3.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+            NodeList elemList2 = element.getElementsByTagName(BuilderConstants.ELEMENT_HANDLERINFO);
+            for (int j = 0; j < elemList2.getLength(); j++) {
+                Element element3 = (Element) elemList2.item(i);
+                String childName = element3.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
                 modelInfo.add(childName);
             }
             dataModel.addHandlerInfos(name, modelInfo);
@@ -185,11 +201,12 @@ public class AppMetaReader_ver_2 {
     }
 
     private static void parseViewModel(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_VIEWMODEL)) {
-            Element element2 = (Element) childObj;
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_VIEWMODEL);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String dataSourceName = element2.attributeValue(BuilderConstants.ATTRIBUTE_DATASOURCE);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String dataSourceName = element2.getAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE);
 
             BindingData dataModel = new BindingData(name, dataSourceName);
             parseObservableObject(element2, dataModel, null);
@@ -198,28 +215,29 @@ public class AppMetaReader_ver_2 {
     }
 
     private static void parseDataSource(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_DATASOURCE)) {
-            Element element2 = (Element) childObj;
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_DATASOURCE);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String modelType = element2.attributeValue(BuilderConstants.ATTRIBUTE_MODELTYPE);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String modelType = element2.getAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE);
 
             if ((modelType != null) && (modelType.equals("REMOTECALL"))) {
-                String url = element2.attributeValue(BuilderConstants.ATTRIBUTE_URL);
-                String type = element2.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-                String proxy = element2.attributeValue(BuilderConstants.ATTRIBUTE_PROXY);
-                String query = element2.attributeValue(BuilderConstants.ATTRIBUTE_QUERY);
-                String sourceType = element2.attributeValue(BuilderConstants.ATTRIBUTE_SOURCETYPE);
-                String timeout = element2.attributeValue(BuilderConstants.ATTRIBUTE_TIMEOUT);
-                String jsonData = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSONDATA);
+                String url = element2.getAttribute(BuilderConstants.ATTRIBUTE_URL);
+                String type = element2.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+                String proxy = element2.getAttribute(BuilderConstants.ATTRIBUTE_PROXY);
+                String query = element2.getAttribute(BuilderConstants.ATTRIBUTE_QUERY);
+                String sourceType = element2.getAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE);
+                String timeout = element2.getAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT);
+                String jsonData = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSONDATA);
 
                 BindingData dataModel =
                         new BindingData(name, modelType, url, type, proxy, query, sourceType,
                                         timeout, jsonData);
                 descriptor.addDataSource(dataModel);
             } else if ((modelType != null) && (modelType.equals("STATIC"))) {
-                String jsonData = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSONDATA);
-                String filePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_FILEPATH);
+                String jsonData = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSONDATA);
+                String filePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_FILEPATH);
 
                 BindingData dataModel = new BindingData(name, modelType, jsonData, filePath);
 
@@ -227,7 +245,7 @@ public class AppMetaReader_ver_2 {
 
                 descriptor.addDataSource(dataModel);
             } else if ((modelType != null) && (modelType.equals("RUNTIMEAPI"))) {
-                String api = element2.attributeValue(BuilderConstants.ATTRIBUTE_API);
+                String api = element2.getAttribute(BuilderConstants.ATTRIBUTE_API);
 
                 BindingData dataModel = new BindingData(name, modelType, api);
                 descriptor.addDataSource(dataModel);
@@ -241,13 +259,14 @@ public class AppMetaReader_ver_2 {
 
     private static void parseObservableObject(Element element, BindingData dataModel,
                                               BindingObject parentObject) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_OBSERVABLEOBJECT)) {
-            Element element2 = (Element) childObj;
-
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String type = element2.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-            String value = element2.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
-            String isMarked = element2.attributeValue(BuilderConstants.ATTRIBUTE_ISMARKED);
+        NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element element2 = (Element) elemList.item(i);
+
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String type = element2.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+            String value = element2.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
+            String isMarked = element2.getAttribute(BuilderConstants.ATTRIBUTE_ISMARKED);
             boolean boolMarked = Boolean.valueOf(isMarked).booleanValue();
 
             BindingObject dataSource = new BindingObject(name, type, value, boolMarked);
@@ -263,23 +282,25 @@ public class AppMetaReader_ver_2 {
     }
 
     private static void parseStylesheets(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEET)) {
-            Stylesheet stylesheet = parseStylesheet((Element) childObj);
+        NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_STYLESHEET);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Stylesheet stylesheet = parseStylesheet((Element) elemList.item(i));
             descriptor.addStylesheet(stylesheet);
         }
     }
 
     private static void parseFrameworkVariables(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VARIABLE)) {
-            Entry<String, String> variable = parseFrameworkVariable((Element) childObj);
+        NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_VARIABLE);
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Entry<String, String> variable = parseFrameworkVariable((Element) elemList.item(i));
             descriptor.addFrameworkVariable(variable.getKey(), variable.getValue());
         }
     }
 
     private static Framework parseFramework(Element elem) {
-        String param = elem.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String path = elem.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
-        String param2 = elem.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String param = elem.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String path = elem.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
+        String param2 = elem.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Framework framework = new Framework(param, path, param2);
 
@@ -287,8 +308,8 @@ public class AppMetaReader_ver_2 {
     }
 
     private static Entry<String, String> parseFrameworkVariable(Element elem) {
-        String name = elem.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-        String value = elem.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
+        String name = elem.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+        String value = elem.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
 
         Entry<String, String> variable = new AbstractMap.SimpleEntry<String, String>(name, value);
 
@@ -296,9 +317,9 @@ public class AppMetaReader_ver_2 {
     }
 
     private static Meta parseMeta(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String param2 = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String param2 = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Meta meta = new Meta(type, param, param2);
 
@@ -306,8 +327,8 @@ public class AppMetaReader_ver_2 {
     }
 
     private static Library parseLibrary(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
 
         Library library = new Library(type, param);
 
@@ -315,9 +336,9 @@ public class AppMetaReader_ver_2 {
     }
 
     private static Stylesheet parseStylesheet(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String param2 = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String param2 = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Stylesheet stylesheet = new Stylesheet(type, param, param2);
 
index 62ffc8f..32d7c4e 100644 (file)
@@ -28,12 +28,16 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class AppMetaWriter {
@@ -41,17 +45,21 @@ public class AppMetaWriter {
     private static final int INDENT_SIZE = 4;
 
     public static void writeTo(AppFileData descriptor, Writer writer) throws IOException {
-        Element elem = writeElement(descriptor);
-
-        Document doc = DocumentHelper.createDocument();
-        doc.add(elem);
-
-        OutputFormat format = OutputFormat.createPrettyPrint();
-        format.setIndentSize(INDENT_SIZE);
+        Document doc = writeElement(descriptor);
 
-        XMLWriter xmlwriter = new XMLWriter(writer, format);
-        xmlwriter.write(doc);
-        xmlwriter.close();
+        DOMSource source = new DOMSource(doc);
+        StreamResult result = new StreamResult(writer);
+        
+        TransformerFactory factory = TransformerFactory.newInstance();
+        Transformer transformer;
+               try {
+                       transformer = factory.newTransformer();
+                       transformer.transform(source,  result);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
     }
 
     public static String writeToString(AppFileData descriptor) {
@@ -69,7 +77,7 @@ public class AppMetaWriter {
         writeTo(descriptor, new FileWriter(filePath));
     }
 
-    public static Element writeElement(AppFileData descriptor) {
+    public static Document writeElement(AppFileData descriptor) {
         // return ProjectWriter_ver0_0_1.writeElement(descriptor);
         return AppMetaWriter_ver_2.writeElement(descriptor);
     }
index d08f823..07b840d 100644 (file)
@@ -25,67 +25,85 @@ package org.tizen.webuibuilder.model.app.io;
 
 import java.util.List;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
 import org.tizen.webuibuilder.model.app.Page;
 import org.tizen.webuibuilder.model.app.Stylesheet;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class AppMetaWriter_ver_1 {
 
-    public static Element writeElement(AppFileData descriptor) {
-        Element root = DocumentHelper.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
+    public static Document writeElement(AppFileData descriptor) {
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               DocumentBuilder builder = null;
+
+               try {
+                       builder = factory.newDocumentBuilder();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+               
+               Document doc = builder.newDocument();
+
+        Element root = doc.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
 
-        Element projectInfo = DocumentHelper.createElement(BuilderConstants.ELEMENT_PROJECTINFO);
-        root.add(projectInfo);
-        writeProjectInfo(projectInfo, descriptor);
+        Element projectInfo = doc.createElement(BuilderConstants.ELEMENT_PROJECTINFO);
+        root.appendChild(projectInfo);
+        writeProjectInfo(doc, projectInfo, descriptor);
 
-        Element pageSystem = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGESYSTEM);
-        root.add(pageSystem);
+        Element pageSystem = doc.createElement(BuilderConstants.ELEMENT_PAGESYSTEM);
+        root.appendChild(pageSystem);
 
-        Element frameworks = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
-        pageSystem.add(frameworks);
-        writeFrameworks(frameworks, descriptor);
+        Element frameworks = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
+        pageSystem.appendChild(frameworks);
+        writeFrameworks(doc, frameworks, descriptor);
 
-        Element libraries = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARIES);
-        pageSystem.add(libraries);
-        writeLibraries(libraries, descriptor);
+        Element libraries = doc.createElement(BuilderConstants.ELEMENT_LIBRARIES);
+        pageSystem.appendChild(libraries);
+        writeLibraries(doc, libraries, descriptor);
 
-        Element pages = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGES);
-        pageSystem.add(pages);
-        writePages(pages, descriptor);
+        Element pages = doc.createElement(BuilderConstants.ELEMENT_PAGES);
+        pageSystem.appendChild(pages);
+        writePages(doc, pages, descriptor);
 
-        Element entries = DocumentHelper.createElement(BuilderConstants.ELEMENT_ENTRIES);
-        pageSystem.add(entries);
-        writeEntries(entries, descriptor);
+        Element entries = doc.createElement(BuilderConstants.ELEMENT_ENTRIES);
+        pageSystem.appendChild(entries);
+        writeEntries(doc, entries, descriptor);
 
-        Element stylesheets = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
-        pageSystem.add(stylesheets);
-        writeStylesheets(stylesheets, descriptor);
+        Element stylesheets = doc.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
+        pageSystem.appendChild(stylesheets);
+        writeStylesheets(doc, stylesheets, descriptor);
 
-        return root;
+        doc.appendChild(root);
+        
+        return doc;
     }
 
-    private static void writeProjectInfo(Element element, AppFileData descriptor) {
-        Element title = DocumentHelper.createElement(BuilderConstants.ELEMENT_TITLE);
-        title.addText(descriptor.getTitle());
-        element.add(title);
+    private static void writeProjectInfo(Document doc, Element element, AppFileData descriptor) {
+        Element title = doc.createElement(BuilderConstants.ELEMENT_TITLE);
+        title.setTextContent(descriptor.getTitle());
+        element.appendChild(title);
 
-        Element author = DocumentHelper.createElement(BuilderConstants.ELEMENT_AUTHOR);
-        author.addText(descriptor.getAuthor());
-        element.add(author);
+        Element author = doc.createElement(BuilderConstants.ELEMENT_AUTHOR);
+        author.setTextContent(descriptor.getAuthor());
+        element.appendChild(author);
 
-        Element version = DocumentHelper.createElement(BuilderConstants.ELEMENT_VERSION);
-        version.addText(descriptor.getVersion());
-        element.add(version);
+        Element version = doc.createElement(BuilderConstants.ELEMENT_VERSION);
+        version.setTextContent(descriptor.getVersion());
+        element.appendChild(version);
     }
 
-    private static void writeFrameworks(Element element, AppFileData descriptor) {
-        element.add(writeTheme(descriptor.getFrameworkVariable("theme")));
+    private static void writeFrameworks(Document doc, Element element, AppFileData descriptor) {
+        element.appendChild(writeTheme(doc, descriptor.getFrameworkVariable("theme")));
 
         List<Library> frameworks = descriptor.getLibraries();
 
@@ -95,14 +113,14 @@ public class AppMetaWriter_ver_1 {
             if (!framework.getType().equals("framework") && !framework.getType().equals("system")) {
                 continue;
             }
-            Element elm = writeFramework(framework, descriptor);
+            Element elm = writeFramework(doc, framework, descriptor);
             if (elm != null) {
-                element.add(elm);
+                element.appendChild(elm);
             }
         }
     }
 
-    private static void writeLibraries(Element element, AppFileData descriptor) {
+    private static void writeLibraries(Document doc, Element element, AppFileData descriptor) {
         List<Library> libraries = descriptor.getLibraries();
 
         int size = libraries.size();
@@ -110,20 +128,20 @@ public class AppMetaWriter_ver_1 {
             if (!libraries.get(i).getType().equals("user")) {
                 continue;
             }
-            element.add(writeScript(libraries.get(i)));
+            element.appendChild(writeScript(doc, libraries.get(i)));
         }
     }
 
-    private static void writePages(Element element, AppFileData descriptor) {
+    private static void writePages(Document doc, Element element, AppFileData descriptor) {
         List<Page> pages = descriptor.getPages();
 
         int size = pages.size();
         for (int i = 0; i < size; i++) {
-            element.add(writePage(pages.get(i), i == descriptor.getStartupPage()));
+            element.appendChild(writePage(doc, pages.get(i), i == descriptor.getStartupPage()));
         }
     }
 
-    private static void writeEntries(Element element, AppFileData descriptor) {
+    private static void writeEntries(Document doc, Element element, AppFileData descriptor) {
         List<Library> entries = descriptor.getLibraries();
 
         int size = entries.size();
@@ -131,11 +149,11 @@ public class AppMetaWriter_ver_1 {
             if (!entries.get(i).getType().equals("entry")) {
                 continue;
             }
-            element.add(writeEntry(entries.get(i)));
+            element.appendChild(writeEntry(doc, entries.get(i)));
         }
     }
 
-    private static void writeStylesheets(Element element, AppFileData descriptor) {
+    private static void writeStylesheets(Document doc, Element element, AppFileData descriptor) {
         List<Stylesheet> stylesheets = descriptor.getStylesheets();
 
         int size = stylesheets.size();
@@ -143,19 +161,19 @@ public class AppMetaWriter_ver_1 {
             if (!stylesheets.get(i).getType().equals("user")) {
                 continue;
             }
-            element.add(writeStylesheet(stylesheets.get(i)));
+            element.appendChild(writeStylesheet(doc, stylesheets.get(i)));
         }
     }
 
-    private static Element writeTheme(String theme) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORK_THEME);
+    private static Element writeTheme(Document doc, String theme) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORK_THEME);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, theme);
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, theme);
 
         return element;
     }
 
-    private static Element writeFramework(Library framework, AppFileData descriptor) {
+    private static Element writeFramework(Document doc, Library framework, AppFileData descriptor) {
         Framework data = null;
         if (framework.getType().equals("framework")) {
             data = descriptor.findFramework(framework.getParam());
@@ -164,65 +182,65 @@ public class AppMetaWriter_ver_1 {
             }
         }
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
         if (data != null) {
             String path = new String(data.getPath());
             path = path.replaceAll("%tizen-web-ui-fw-path%", "./tizen-web-ui-fw/latest");
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
 
             if (data.getParam2() != null && !data.getParam2().isEmpty()) {
-                element.addAttribute(BuilderConstants.ATTRIBUTE_THEME,
+                element.setAttribute(BuilderConstants.ATTRIBUTE_THEME,
                                      descriptor.getFrameworkVariable("theme"));
-                element.addAttribute(BuilderConstants.ATTRIBUTE_SCALE,
+                element.setAttribute(BuilderConstants.ATTRIBUTE_SCALE,
                                      descriptor.getFrameworkVariable("viewport-scale"));
             }
         } else {
             String path = new String(framework.getParam());
             path = path.replaceAll("%tizen-web-ui-fw-path%", "./tizen-web-ui-fw/latest");
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
         }
 
         return element;
     }
 
-    private static Element writeEntry(Library framework) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+    private static Element writeEntry(Document doc, Library framework) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getParam());
 
         return element;
     }
 
-    private static Element writeScript(Library script) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+    private static Element writeScript(Document doc, Library script) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "user");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, script.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "user");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, script.getParam());
 
         return element;
     }
 
-    private static Element writePage(Page page, boolean isStartup) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGE);
+    private static Element writePage(Document doc, Page page, boolean isStartup) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_PAGE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
 
         return element;
     }
 
-    private static Element writeStylesheet(Stylesheet stylesheet) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEET);
+    private static Element writeStylesheet(Document doc, Stylesheet stylesheet) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_STYLESHEET);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, stylesheet.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, stylesheet.getParam());
 
         return element;
     }
index 8d4539f..e124385 100644 (file)
@@ -28,8 +28,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
@@ -39,104 +37,106 @@ import org.tizen.webuibuilder.model.filedata.AppFileData;
 import org.tizen.webuibuilder.model.io.TizenFileFormatter;
 import org.tizen.webuibuilder.ui.views.databinding.model.BindingData;
 import org.tizen.webuibuilder.ui.views.databinding.model.BindingObject;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class AppMetaWriter_ver_2 {
 
-    public static Element writeElement(AppFileData descriptor) {
+    public static Document writeElement(AppFileData descriptor) {
         TizenFileFormatter fmt =
                 new TizenFileFormatter("tizen-project", "2", "Tizen Web UI Builder Project");
 
-        Element root = fmt.GenerateFileFormat();
+        Document doc = fmt.GenerateFileFormat();
 
-        Element pageSystem = DocumentHelper.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
-        root.add(pageSystem);
+        Element pageSystem = doc.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
+        doc.appendChild(pageSystem);
 
-        Element libraries = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARIES);
-        pageSystem.add(libraries);
-        writeLibraries(libraries, descriptor);
+        Element libraries = doc.createElement(BuilderConstants.ELEMENT_LIBRARIES);
+        pageSystem.appendChild(libraries);
+        writeLibraries(doc, libraries, descriptor);
 
-        Element frameworks = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
-        pageSystem.add(frameworks);
-        writeFrameworks(frameworks, descriptor);
+        Element frameworks = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
+        pageSystem.appendChild(frameworks);
+        writeFrameworks(doc, frameworks, descriptor);
 
-        Element pages = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGES);
-        pageSystem.add(pages);
-        writePages(pages, descriptor);
+        Element pages = doc.createElement(BuilderConstants.ELEMENT_PAGES);
+        pageSystem.appendChild(pages);
+        writePages(doc, pages, descriptor);
 
-        Element dataModels = DocumentHelper.createElement(BuilderConstants.ELEMENT_DATABINDING);
-        pageSystem.add(dataModels);
-        writeDataModels(dataModels, descriptor);
+        Element dataModels = doc.createElement(BuilderConstants.ELEMENT_DATABINDING);
+        pageSystem.appendChild(dataModels);
+        writeDataModels(doc, dataModels, descriptor);
 
-        Element stylesheets = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
-        pageSystem.add(stylesheets);
-        writeStylesheets(stylesheets, descriptor);
+        Element stylesheets = doc.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
+        pageSystem.appendChild(stylesheets);
+        writeStylesheets(doc, stylesheets, descriptor);
 
-        return root;
+        return doc;
     }
 
-    private static void writeFrameworks(Element element, AppFileData descriptor) {
-        element.add(writeFrameworkVariables(element, descriptor));
+    private static void writeFrameworks(Document doc, Element element, AppFileData descriptor) {
+        element.appendChild(writeFrameworkVariables(doc, element, descriptor));
 
         List<Framework> frameworks = descriptor.getFrameworks();
 
         int size = frameworks.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeFramework(frameworks.get(i)));
+            element.appendChild(writeFramework(doc, frameworks.get(i)));
         }
     }
 
-    private static Element writeFrameworkVariables(Element element, AppFileData descriptor) {
-        Element element2 = DocumentHelper.createElement(BuilderConstants.ELEMENT_VARIABLES);
+    private static Element writeFrameworkVariables(Document doc, Element element, AppFileData descriptor) {
+        Element element2 = doc.createElement(BuilderConstants.ELEMENT_VARIABLES);
 
         Map<String, String> variables = descriptor.getFrameworkVariables();
 
         for (Entry<String, String> variable : variables.entrySet()) {
-            element2.add(writeFrameworkVariable(variable));
+            element2.appendChild(writeFrameworkVariable(doc, variable));
         }
 
         return element2;
     }
 
-    private static void writeLibraries(Element element, AppFileData descriptor) {
+    private static void writeLibraries(Document doc, Element element, AppFileData descriptor) {
         List<Library> libraries = descriptor.getLibraries();
 
         int size = libraries.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeLibrary(libraries.get(i)));
+            element.appendChild(writeLibrary(doc, libraries.get(i)));
         }
     }
 
-    private static void writePages(Element element, AppFileData descriptor) {
+    private static void writePages(Document doc, Element element, AppFileData descriptor) {
         List<Page> pages = descriptor.getPages();
 
         int size = pages.size();
         for (int i = 0; i < size; i++) {
-            element.add(writePage(pages.get(i), i == descriptor.getStartupPage()));
+            element.appendChild(writePage(doc, pages.get(i), i == descriptor.getStartupPage()));
         }
     }
 
-    private static void writeDataModels(Element element, AppFileData descriptor) {
+    private static void writeDataModels(Document doc, Element element, AppFileData descriptor) {
         List<BindingData> dataSources = descriptor.getDataSources();
         for (BindingData dataSource : dataSources) {
-            element.add(writeDataSourceInfo(dataSource));
+            element.appendChild(writeDataSourceInfo(doc, dataSource));
         }
 
         List<BindingData> viewModels = descriptor.getViewModels();
         for (BindingData viewModel : viewModels) {
-            element.add(writeViewModelInfo(viewModel));
+            element.appendChild(writeViewModelInfo(doc, viewModel));
         }
 
-        writeHandlerInfoFromViewModels(element, viewModels);
+        writeHandlerInfoFromViewModels(doc, element, viewModels);
 
         for (BindingData dataSource : dataSources) {
             if (dataSource.getUpdateOnStartup()) {
-                element.add(writeUpdateOnStartUp(dataSource));
+                element.appendChild(writeUpdateOnStartUp(doc, dataSource));
             }
         }
     }
 
-    private static void writeHandlerInfoFromViewModels(Element element, List<BindingData> dataModels) {
+    private static void writeHandlerInfoFromViewModels(Document doc, Element element, List<BindingData> dataModels) {
         List<String> handlerModelInfo = new ArrayList<String>();
         List<String> handlerSourceInfo = new ArrayList<String>();
 
@@ -157,170 +157,170 @@ public class AppMetaWriter_ver_2 {
             if ((handlerSourceInfo.get(i) != null) && (handlerSourceInfo.get(i).equals(""))) {
                 continue;
             }
-            Element subElement = DocumentHelper.createElement(BuilderConstants.ELEMENT_HANDLERINFO);
-            subElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerSourceInfo.get(i));
+            Element subElement = doc.createElement(BuilderConstants.ELEMENT_HANDLERINFO);
+            subElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerSourceInfo.get(i));
 
             Element subSubElement =
-                    DocumentHelper.createElement(BuilderConstants.ELEMENT_MODELINFO);
-            subSubElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerModelInfo.get(i));
-            subElement.add(subSubElement);
+                       doc.createElement(BuilderConstants.ELEMENT_MODELINFO);
+            subSubElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerModelInfo.get(i));
+            subElement.appendChild(subSubElement);
 
             for (int j = i + 1; j < handlerSourceInfo.size(); j++) {
 
                 if ((handlerSourceInfo.get(i) != null) && (handlerSourceInfo.get(j) != null)
                         && (handlerSourceInfo.get(i).equals(handlerSourceInfo.get(j)))) {
                     Element testElement =
-                            DocumentHelper.createElement(BuilderConstants.ELEMENT_MODELINFO);
-                    testElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME,
+                               doc.createElement(BuilderConstants.ELEMENT_MODELINFO);
+                    testElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME,
                                              handlerModelInfo.get(j));
-                    subElement.add(testElement);
+                    subElement.appendChild(testElement);
 
                     handlerSourceInfo.set(j, "");
                 }
             }
-            element.add(subElement);
+            element.appendChild(subElement);
         }
     }
 
-    private static Element writeUpdateOnStartUp(BindingData dataModel) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED, dataModel.getUpdateOnStartup()
+    private static Element writeUpdateOnStartUp(Document doc, BindingData dataModel) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED, dataModel.getUpdateOnStartup()
                 .toString());
         return element;
     }
 
-    private static Element writeDataSourceInfo(BindingData dataModel) {
+    private static Element writeDataSourceInfo(Document doc, BindingData dataModel) {
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_DATASOURCE);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_DATASOURCE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE, dataModel.getModelType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE, dataModel.getModelType());
 
         if ((dataModel.getModelType() != null) && (dataModel.getModelType().equals("REMOTECALL"))) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_URL, dataModel.getURL());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getMethod());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PROXY, dataModel.getProxy());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_QUERY, dataModel.getQuery());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE, dataModel.getSourceType());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT, dataModel.getTimeout());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, dataModel.getJsonData());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_URL, dataModel.getURL());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getMethod());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PROXY, dataModel.getProxy());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_QUERY, dataModel.getQuery());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE, dataModel.getSourceType());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT, dataModel.getTimeout());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, dataModel.getJsonData());
 
         } else if ((dataModel.getModelType() != null)
                 && (dataModel.getModelType().equals("STATIC"))) {
             List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
             int size = observableObjects.size();
             for (int i = 0; i < size; i++) {
-                element.add(writeObservableObjects(observableObjects.get(i)));
+                element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
             }
             String jsonData = dataModel.getJsonData();
             if ((jsonData == null) || (jsonData.equals(""))) {
                 jsonData = "{}";
             }
-            element.addAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, jsonData);
-            element.addAttribute(BuilderConstants.ATTRIBUTE_FILEPATH, dataModel.getStaticFilePath());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, jsonData);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_FILEPATH, dataModel.getStaticFilePath());
         } else if ((dataModel.getModelType() != null)
                 && (dataModel.getModelType().equals("RUNTIMEAPI"))) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_API, dataModel.getRuntimeApiName());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_API, dataModel.getRuntimeApiName());
         }
         return element;
     }
 
-    private static Element writeViewModelInfo(BindingData dataModel) {
+    private static Element writeViewModelInfo(Document doc, BindingData dataModel) {
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_VIEWMODEL);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_VIEWMODEL);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE, dataModel.getSourceName());
 
         List<BindingObject> observableObjects = dataModel.getViewModelObjects();
 
         int size = observableObjects.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeObservableObjects(observableObjects.get(i)));
+            element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
         }
 
         return element;
     }
 
-    private static Element writeObservableObjects(BindingObject observableObject) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
-        // Element element = DocumentHelper.createElement("dataSourceTreeNode");
+    private static Element writeObservableObjects(Document doc, BindingObject observableObject) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
+        // Element element = doc.createElement("dataSourceTreeNode");
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, observableObject.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, observableObject.getName());
         if (observableObject.getMarked() != null) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_ISMARKED, observableObject.getMarked()
+            element.setAttribute(BuilderConstants.ATTRIBUTE_ISMARKED, observableObject.getMarked()
                     .toString());
         }
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, observableObject.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, observableObject.getValue());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, observableObject.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, observableObject.getValue());
 
         List<BindingObject> observableObjects = observableObject.getItems();
         int size = observableObjects.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeObservableObjects(observableObjects.get(i)));
+            element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
         }
 
         return element;
     }
 
-    private static void writeStylesheets(Element element, AppFileData descriptor) {
+    private static void writeStylesheets(Document doc, Element element, AppFileData descriptor) {
         List<Stylesheet> stylesheets = descriptor.getStylesheets();
 
         int size = stylesheets.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeStylesheet(stylesheets.get(i)));
+            element.appendChild(writeStylesheet(doc, stylesheets.get(i)));
         }
     }
 
-    private static Element writeLibrary(Library library) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARY);
+    private static Element writeLibrary(Document doc, Library library) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_LIBRARY);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, library.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, library.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, library.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, library.getParam());
 
         return element;
     }
 
-    private static Element writeFramework(Framework framework) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORK);
+    private static Element writeFramework(Document doc, Framework framework) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORK);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, framework.getParam());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM2, framework.getParam2());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, framework.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM2, framework.getParam2());
 
         return element;
     }
 
-    private static Element writeFrameworkVariable(Entry<String, String> variable) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_VARIABLE);
+    private static Element writeFrameworkVariable(Document doc, Entry<String, String> variable) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_VARIABLE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, variable.getKey());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, variable.getValue());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, variable.getKey());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, variable.getValue());
 
         return element;
     }
 
-    private static Element writePage(Page page, boolean isStartup) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGE);
+    private static Element writePage(Document doc, Page page, boolean isStartup) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_PAGE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_CSSPATH, page.getCssPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH, page.getManagedCssPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_CSSPATH, page.getCssPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH, page.getManagedCssPath());
 
         return element;
     }
 
-    private static Element writeStylesheet(Stylesheet stylesheet) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEET);
+    private static Element writeStylesheet(Document doc, Stylesheet stylesheet) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_STYLESHEET);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, stylesheet.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, stylesheet.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, stylesheet.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, stylesheet.getParam());
 
         return element;
     }
index cfed45a..79c52c0 100644 (file)
  *
  */
 
-
 package org.tizen.webuibuilder.model.app.io;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.MalformedURLException;
+import java.net.URISyntaxException;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
 import org.tizen.webuibuilder.model.PartFactory;
 import org.tizen.webuibuilder.model.app.AppManager;
 import org.tizen.webuibuilder.model.filedata.HtmlMetaFileData;
 
-
 public class HtmlMetaReader {
 
-    public static HtmlMetaFileData read(AppManager appManager, String filePath,
-                                        PartFactory partFactory) {
-        HtmlMetaFileData fileData = null;
-
-        try {
-            fileData = read(appManager, new File(filePath).toURI().toURL(), partFactory);
-        } catch (MalformedURLException e) {
-            e.printStackTrace();
-        }
-
-        return fileData;
-    }
-
-    public static HtmlMetaFileData read(AppManager appManager, URL url, PartFactory partFactory) {
-        SAXReader reader = new SAXReader();
-        Document doc = null;
-
-        try {
-            doc = reader.read(url);
-        } catch (DocumentException e) {
-            if (doc == null) {
-                return null;
-            }
-        }
-
-        HtmlMetaFileData fileData = parsePage(appManager, doc, partFactory);
-        if (fileData == null) {
-            return null;
-        }
-
-        // if (fileData.getRootPart(0) instanceof DocumentPart) {
-        return fileData;
-        // } else {
-        // TODO log error
-        // return null;
-        // }
-    }
-
-    public static HtmlMetaFileData parsePage(AppManager appManager, Document doc,
-                                             PartFactory partFactory) {
-        HtmlMetaFileData fileData = HtmlMetaReader_ver_1.parsePage(appManager, doc, partFactory);
-
-        return fileData;
-    }
+       public static HtmlMetaFileData read(AppManager appManager, String filePath,
+                       PartFactory partFactory) {
+               HtmlMetaFileData fileData = null;
+
+               File file = new File(filePath);
+
+               if (!file.exists()) {
+                       return null;
+               }
+
+               try {
+                       fileData = read(appManager, file.toURI().toURL(), partFactory);
+               } catch (MalformedURLException e) {
+                       e.printStackTrace();
+               }
+
+               return fileData;
+       }
+
+       public static HtmlMetaFileData read(AppManager appManager, URL url,
+                       PartFactory partFactory) {
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               DocumentBuilder builder = null;
+               Document doc = null;
+
+               try {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(url.toURI().toString());
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+                       return null;
+               } catch (URISyntaxException e) {
+                       e.printStackTrace();
+               }
+
+               HtmlMetaFileData fileData = parsePage(appManager, doc, partFactory);
+               if (fileData == null) {
+                       return null;
+               }
+
+               return fileData;
+       }
+
+       public static HtmlMetaFileData parsePage(AppManager appManager,
+                       Document doc, PartFactory partFactory) {
+               HtmlMetaFileData fileData = HtmlMetaReader_ver_1.parsePage(appManager,
+                               doc, partFactory);
+
+               return fileData;
+       }
 }
\ No newline at end of file
index a03709e..13c6b2e 100644 (file)
@@ -27,9 +27,12 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.Element;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.DocumentPart;
 import org.tizen.webuibuilder.model.PagePart;
@@ -53,7 +56,7 @@ public class HtmlMetaReader_ver_1 {
             return null;
         }
 
-        Element root = doc.getRootElement();
+        Element root = doc.getDocumentElement();
 
         FileReader fileReader = new FileReader(root);
         if (!fileReader.isValidate()) {
@@ -68,52 +71,59 @@ public class HtmlMetaReader_ver_1 {
 
         HtmlMetaFileData fileData = new HtmlMetaFileData();
 
-        for (Object childObj : root.elements("document")) {
-            parsePart(fileData, (Element) childObj, partFactory);
+       NodeList elementList = root.getElementsByTagName("document");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            parsePart(fileData, (Element) elementList.item(i), partFactory);
         }
 
         return fileData;
     }
 
     private static void parsePart(HtmlMetaFileData fileData, Element elem, PartFactory partFactory) {
-        for (Object childObj : elem.elements("documentInfo")) {
-            parsePageInfo(fileData, (Element) childObj);
+       NodeList elementList = elem.getElementsByTagName("documentInfo");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            parsePageInfo(fileData, (Element) elementList.item(i));
         }
-        for (Object childObj : elem.elements("documentData")) {
-            parsePageData(fileData, (Element) childObj, partFactory);
+       elementList = elem.getElementsByTagName("documentData");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            parsePageData(fileData, (Element) elementList.item(i), partFactory);
         }
     }
 
     private static void parsePageInfo(HtmlMetaFileData fileData, Element elem) {
-        for (Object childObj : elem.elements("documentInfo")) {
-            parsePageInfo(fileData, (Element) childObj);
+       NodeList elementList = elem.getElementsByTagName("documentInfo");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            parsePageInfo(fileData, (Element) elementList.item(i));
         }
     }
 
     private static void parsePageData(HtmlMetaFileData fileData, Element elem,
                                       PartFactory partFactory) {
-        for (Iterator<Element> i_nscreen = elem.elementIterator("tizen.nscreen"); i_nscreen
-                .hasNext();) {
-            Element nscreen = i_nscreen.next();
-            for (Iterator<Element> i_screen = nscreen.elementIterator("screen"); i_screen.hasNext();) {
-                Element screen = i_screen.next();
+       NodeList elementList = elem.getElementsByTagName("tizen.nscreen");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element nscreen = (Element) elementList.item(i);
+               NodeList elementList2 = nscreen.getElementsByTagName("screen");
+            for (int j = 0; j < elementList.getLength(); j++) {
+                Element screen = (Element) elementList.item(j);
                 NScreenModel model = new NScreenModel();
 
-                model.setTitle(screen.attributeValue("title"));
-                model.setWidth(Integer.parseInt(screen.attributeValue("width")));
-                model.setHeight(Integer.parseInt(screen.attributeValue("height")));
-                model.setFileName(screen.attributeValue("cssFileName"));
+                model.setTitle(screen.getAttribute("title"));
+                model.setWidth(Integer.parseInt(screen.getAttribute("width")));
+                model.setHeight(Integer.parseInt(screen.getAttribute("height")));
+                model.setFileName(screen.getAttribute("cssFileName"));
 
                 fileData.getNscreenModelList().add(model);
             }
         }
 
-        for (Object childObj : elem.elements("pageData")) {
-            parsePagePart(fileData, (Element) childObj, partFactory);
+       elementList = elem.getElementsByTagName("pageData");
+       for (int i = 0; i < elementList.getLength(); i++) {
+            parsePagePart(fileData, (Element) elementList.item(i), partFactory);
         }
 
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_DATABINDING)) {
-            parseDataBinding(fileData, (Element) childObj);
+       elementList = elem.getElementsByTagName(BuilderConstants.ELEMENT_DATABINDING);
+       for (int i = 0; i < elementList.getLength(); i++) {
+               parseDataBinding(fileData, (Element) elementList.item(i));
         }
     }
 
@@ -125,11 +135,12 @@ public class HtmlMetaReader_ver_1 {
     }
 
     private static void parseUpdateStartUp(HtmlMetaFileData fileData, Element element) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_UPDATEONSTARTUP)) {
-            Element element2 = (Element) childObj;
+       NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element2 = (Element) elementList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String updateStartUp = element2.attributeValue(BuilderConstants.ATTRIBUTE_ISCHECKED);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String updateStartUp = element2.getAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED);
             boolean isChecked = false;
 
             if (updateStartUp.equals("true")) {
@@ -144,17 +155,19 @@ public class HtmlMetaReader_ver_1 {
     }
 
     private static void parseHandlerInfo(HtmlMetaFileData fileData, Element element) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_HANDLERINFO)) {
-            Element element2 = (Element) childObj;
+       NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_HANDLERINFO);
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element2 = (Element)elementList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
 
             BindingData dataModel = new BindingData(name);
             List<String> modelInfo = new ArrayList<String>();
 
-            for (Object subChildObj : element.elements(BuilderConstants.ELEMENT_HANDLERINFO)) {
-                Element element3 = (Element) subChildObj;
-                String childName = element3.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+               NodeList elementList2 = element.getElementsByTagName(BuilderConstants.ELEMENT_HANDLERINFO);
+            for (int j = 0; j < elementList2.getLength(); j++) {
+                Element element3 = (Element)elementList2.item(j);
+                String childName = element3.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
                 modelInfo.add(childName);
             }
             dataModel.addHandlerInfos(name, modelInfo);
@@ -164,20 +177,21 @@ public class HtmlMetaReader_ver_1 {
     }
 
     private static void parseDataSource(HtmlMetaFileData fileData, Element element) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_DATASOURCE)) {
-            Element element2 = (Element) childObj;
+       NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_DATASOURCE);
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element2 = (Element)elementList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String modelType = element2.attributeValue(BuilderConstants.ATTRIBUTE_MODELTYPE);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String modelType = element2.getAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE);
 
             if ((modelType != null) && (modelType.equals("REMOTECALL"))) {
-                String url = element2.attributeValue(BuilderConstants.ATTRIBUTE_URL);
-                String type = element2.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-                String proxy = element2.attributeValue(BuilderConstants.ATTRIBUTE_PROXY);
-                String query = element2.attributeValue(BuilderConstants.ATTRIBUTE_QUERY);
-                String sourceType = element2.attributeValue(BuilderConstants.ATTRIBUTE_SOURCETYPE);
-                String timeout = element2.attributeValue(BuilderConstants.ATTRIBUTE_TIMEOUT);
-                String jsonData = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSONDATA);
+                String url = element2.getAttribute(BuilderConstants.ATTRIBUTE_URL);
+                String type = element2.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+                String proxy = element2.getAttribute(BuilderConstants.ATTRIBUTE_PROXY);
+                String query = element2.getAttribute(BuilderConstants.ATTRIBUTE_QUERY);
+                String sourceType = element2.getAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE);
+                String timeout = element2.getAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT);
+                String jsonData = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSONDATA);
 
                 BindingData dataModel =
                         new BindingData(name, modelType, url, type, proxy, query, sourceType,
@@ -187,8 +201,8 @@ public class HtmlMetaReader_ver_1 {
 
                 fileData.addDataSource(dataModel);
             } else if ((modelType != null) && (modelType.equals("STATIC"))) {
-                String jsonData = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSONDATA);
-                String filePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_FILEPATH);
+                String jsonData = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSONDATA);
+                String filePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_FILEPATH);
 
                 BindingData dataModel = new BindingData(name, modelType, jsonData, filePath);
 
@@ -196,7 +210,7 @@ public class HtmlMetaReader_ver_1 {
 
                 fileData.addDataSource(dataModel);
             } else if ((modelType != null) && (modelType.equals("RUNTIMEAPI"))) {
-                String api = element2.attributeValue(BuilderConstants.ATTRIBUTE_API);
+                String api = element2.getAttribute(BuilderConstants.ATTRIBUTE_API);
 
                 BindingData dataModel = new BindingData(name, modelType, api);
                 fileData.addDataSource(dataModel);
@@ -209,11 +223,12 @@ public class HtmlMetaReader_ver_1 {
     }
 
     private static void parseViewModel(HtmlMetaFileData fileData, Element element) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_VIEWMODEL)) {
-            Element element2 = (Element) childObj;
+       NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_VIEWMODEL);
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element2 = (Element) elementList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String dataSourceName = element2.attributeValue(BuilderConstants.ATTRIBUTE_DATASOURCE);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String dataSourceName = element2.getAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE);
 
             BindingData dataModel = new BindingData(name, dataSourceName);
             parseObservableObject(element2, dataModel, null);
@@ -223,13 +238,14 @@ public class HtmlMetaReader_ver_1 {
 
     private static void parseObservableObject(Element element, BindingData dataModel,
                                               BindingObject parentObject) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_OBSERVABLEOBJECT)) {
-            Element element2 = (Element) childObj;
-
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String type = element2.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-            String value = element2.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
-            String isMarked = element2.attributeValue(BuilderConstants.ATTRIBUTE_ISMARKED);
+       NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element2 = (Element) elementList.item(i);
+
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String type = element2.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+            String value = element2.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
+            String isMarked = element2.getAttribute(BuilderConstants.ATTRIBUTE_ISMARKED);
             boolean boolMarked = Boolean.valueOf(isMarked).booleanValue();
 
             BindingObject dataSource = new BindingObject(name, type, value, boolMarked);
@@ -248,13 +264,15 @@ public class HtmlMetaReader_ver_1 {
                                       PartFactory partFactory) {
         List<CssSelector> selectors = null;
 
-        for (Object childObj : elem.elements("tizen.css")) {
-            Element elem2 = (Element) childObj;
+       NodeList elementList = elem.getElementsByTagName("tizen.css");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element elem2 = (Element) elementList.item(i);
             selectors = parseStyle(elem2);
         }
 
-        for (Object childObj : elem.elements("tizen.doc")) {
-            Element elem2 = (Element) childObj;
+       elementList = elem.getElementsByTagName("tizen.doc");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element elem2 = (Element) elementList.item(i);
             Part part = parseElement(fileData, elem2, partFactory, selectors);
             if (part instanceof DocumentPart) {
                 fileData.addRootPart("", part);
@@ -267,20 +285,22 @@ public class HtmlMetaReader_ver_1 {
         List<CssSelector> selectors = new ArrayList<CssSelector>();
 
         // Sets selectors.
-        for (Object childObj : elem.elements("tizen.selector")) {
-            Element element = (Element) childObj;
-
-            String selectorName = element.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String partId = element.attributeValue(BuilderConstants.ATTRIBUTE_PARTID);
+       NodeList elementList = elem.getElementsByTagName("tizen.selector");
+        for (int i = 0; i < elementList.getLength(); i++) {
+            Element element = (Element) elementList.item(i);
+            
+            String selectorName = element.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String partId = element.getAttribute(BuilderConstants.ATTRIBUTE_PARTID);
             CssSelector selector = new CssSelector(selectorName, "", partId);
             selectors.add(selector);
 
             // Sets styles.
-            for (Object childObj2 : element.elements("tizen.style")) {
-                Element element2 = (Element) childObj2;
+               elementList = elem.getElementsByTagName("tizen.style");
+            for (int j = 0; j < elementList.getLength(); j++) {
+                Element element2 = (Element) elementList.item(j);
 
-                String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-                String value = element2.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
+                String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+                String value = element2.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
 
                 selector.setPropertyValue(name, value);
             }
@@ -291,18 +311,18 @@ public class HtmlMetaReader_ver_1 {
 
     private static Part parseElement(HtmlMetaFileData fileData, Element elem,
                                      PartFactory partFactory, List<CssSelector> selectors) {
-        Part part = partFactory.createPart(elem.getName());
+        Part part = partFactory.createPart(elem.getNodeName());
 
         if (part == null) {
         } else {
             if (part instanceof PagePart) {
-                fileData.setName(0, elem.attribute(BuilderConstants.PROPERTY_ID).getValue());
+                fileData.setName(0, elem.getAttribute(BuilderConstants.PROPERTY_ID));
             }
 
             // Sets events and properties.
-            Attribute attr = null;
-            for (Object attrObj : elem.attributes()) {
-                attr = (Attribute) attrObj;
+               NamedNodeMap attrList = elem.getAttributes();
+            for (int i = 0; i < attrList.getLength(); i++) {
+                Attr attr = (Attr) attrList.item(i);
                 // if (BuilderConstants.ATTRIBUTE_EVENT_PREFIX.equals((attr
                 // .getName()).substring(0,
                 // BuilderConstants.ATTRIBUTE_EVENT_PREFIX.length()))) {
@@ -313,7 +333,7 @@ public class HtmlMetaReader_ver_1 {
             }
 
             if (part instanceof WidgetPart) {
-                String text = elem.getText();
+                String text = elem.getTextContent();
 
                 if (!text.isEmpty()) {
                     ((WidgetPart) part).setHtmlString(text);
@@ -332,20 +352,20 @@ public class HtmlMetaReader_ver_1 {
             // Adds children.
             Element child = null;
             Part childpart = null;
-            for (Object childObj : elem.elements()) {
-                child = (Element) childObj;
-                if (child.getName().equals("event")) {
-                    Attribute eventAttr = null;
-                    for (Object attrObj : child.attributes()) {
-                        eventAttr = (Attribute) attrObj;
+            for (int i = 0; i < elem.getChildNodes().getLength(); i++) {
+                child = (Element) elem.getChildNodes().item(i);
+                if (child.getNodeName().equals("event")) {
+                       attrList = child.getAttributes();
+                    for (int j = 0; j < attrList.getLength(); j++) {
+                        Attr eventAttr = (Attr) attrList.item(j);
                         part.setEventValue(eventAttr.getName(), eventAttr.getValue());
                     }
-                } else if (child.getName().equals("gotoPage")) {
-                    Attribute eventAttr = null;
+                } else if (child.getNodeName().equals("gotoPage")) {
                     List<String> strList = new ArrayList<String>();
 
-                    for (Object attrObj : child.attributes()) {
-                        eventAttr = (Attribute) attrObj;
+                       attrList = child.getAttributes();
+                    for (int j = 0; j < attrList.getLength(); j++) {
+                        Attr eventAttr = (Attr) attrList.item(j);
                         strList.add(eventAttr.getValue());
                     }
                     part.setGotoPageEventValue(strList.get(0), strList.get(1), strList.get(2));
@@ -359,35 +379,5 @@ public class HtmlMetaReader_ver_1 {
 
         return part;
     }
-
-    // private static boolean parseNScreen(HtmlMetaFileData fileData, Element
-    // elem) {
-    // int index = fileData.getPageCount() - 1;
-    // if(index < 0){
-    // return false;
-    // }
-    //
-    // for(Iterator<Element> i_screen = elem.elementIterator("screen");
-    // i_screen.hasNext(); ) {
-    // Element screen = i_screen.next();
-    // NScreenModel model = new NScreenModel();
-    // for(Iterator<Element> i_child = screen.elementIterator();
-    // i_child.hasNext(); ) {
-    // Element child = i_child.next();
-    // String tagName = child.getName();
-    // if( "title".equals(tagName) ) {
-    // model.setTitle(child.getText());
-    // } else if( "width".equals(tagName) ) {
-    // model.setWidth(Integer.parseInt(child.getText()));
-    // } else if( "height".equals(tagName) ) {
-    // model.setHeight(Integer.parseInt(child.getText()));
-    // } else if( "cssFileName".equals(tagName) ) {
-    // model.setFileName(child.getText());
-    // }
-    // }
-    // fileData.addNScreenModel(index, model);
-    // }
-    //
-    // return true;
-    // }
+    
 }
index 1defb5b..39e1b80 100644 (file)
@@ -28,12 +28,20 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.tizen.webuibuilder.model.app.AppManager;
+import org.tizen.webuibuilder.model.filedata.AppFileData;
 
 
 public class HtmlMetaWriter {
@@ -41,19 +49,23 @@ public class HtmlMetaWriter {
     private static final int INDENT_SIZE = 4;
 
     public static void writeTo(AppManager appManager, Writer writer) throws IOException {
-        Element elem = writeElement(appManager);
-
-        Document doc = DocumentHelper.createDocument();
-        doc.add(elem);
-
-        OutputFormat format = OutputFormat.createPrettyPrint();
-        format.setIndentSize(INDENT_SIZE);
-
-        XMLWriter xmlwriter = new XMLWriter(writer, format);
-        xmlwriter.write(doc);
-        xmlwriter.close();
+        Document doc = writeElement(appManager);
+
+        DOMSource source = new DOMSource(doc);
+        StreamResult result = new StreamResult(writer);
+        
+        TransformerFactory factory = TransformerFactory.newInstance();
+        Transformer transformer;
+               try {
+                       transformer = factory.newTransformer();
+                       transformer.transform(source,  result);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
     }
-
+    
     public static String writeToString(AppManager appManager) {
         StringWriter writer = new StringWriter();
         try {
@@ -69,7 +81,7 @@ public class HtmlMetaWriter {
         writeTo(appManager, new FileWriter(filePath));
     }
 
-    public static Element writeElement(AppManager appManager) {
+    public static Document writeElement(AppManager appManager) {
         return HtmlMetaWriter_ver_1.writeElement(appManager);
     }
 
index 3c767fe..2a9c52d 100644 (file)
@@ -29,8 +29,8 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.GotoPageProperty;
 import org.tizen.webuibuilder.model.Part;
@@ -49,89 +49,89 @@ import org.tizen.webuibuilder.ui.views.databinding.model.BindingObject;
 
 public class HtmlMetaWriter_ver_1 {
 
-    public static Element writeElement(AppManager appManager) {
+    public static Document writeElement(AppManager appManager) {
         TizenFileFormatter fmt =
                 new TizenFileFormatter("tizen-app", "1", "Tizen Web UI Builder Project");
 
-        Element root = fmt.GenerateFileFormat();
+        Document doc = fmt.GenerateFileFormat();
 
-        Element elem0 = DocumentHelper.createElement("document");
-        root.add(elem0);
+        Element elem0 = doc.createElement("document");
+        doc.appendChild(elem0);
 
-        Element pageInfoelem = DocumentHelper.createElement("documentInfo");
+        Element pageInfoelem = doc.createElement("documentInfo");
         Element elem;
-        elem = DocumentHelper.createElement("title");
-        elem.addText("test");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("author");
-        elem.addText("noname");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("version");
-        elem.addText("0.1.1");
-        pageInfoelem.add(elem);
-        elem0.add(pageInfoelem);
-
-        Element docDataElem = DocumentHelper.createElement("documentData");
-
-        Element nscreenElement = DocumentHelper.createElement("tizen.nscreen");
-        docDataElem.add(writeNScreen(nscreenElement, appManager.getPageData(0).getCssFiles()));
+        elem = doc.createElement("title");
+        elem.setTextContent("test");
+        pageInfoelem.appendChild(elem);
+        elem = doc.createElement("author");
+        elem.setTextContent("noname");
+        pageInfoelem.appendChild(elem);
+        elem = doc.createElement("version");
+        elem.setTextContent("0.1.1");
+        pageInfoelem.appendChild(elem);
+        elem0.appendChild(pageInfoelem);
+
+        Element docDataElem = doc.createElement("documentData");
+
+        Element nscreenElement = doc.createElement("tizen.nscreen");
+        docDataElem.appendChild(writeNScreen(doc, nscreenElement, appManager.getPageData(0).getCssFiles()));
 
         for (int i = 0; i < appManager.getNumberOfPages(); i++) {
             PageData pageData = appManager.getPageData(i);
 
-            Element pageDataElem = DocumentHelper.createElement("pageData");
-            pageDataElem.setAttributeValue("id", pageData.getName());
+            Element pageDataElem = doc.createElement("pageData");
+            pageDataElem.setAttribute("id", pageData.getName());
 
-            // Element cssElement = DocumentHelper.createElement("tizen.css");
+            // Element cssElement = doc.createElement("tizen.css");
             // pageDataElem.add(writeCss(cssElement, pageData.getRootPart()));
 
-            pageDataElem.add(writePart(pageData.getRootPart(), false));
+            pageDataElem.appendChild(writePart(doc, pageData.getRootPart(), false));
 
-            docDataElem.add(pageDataElem);
+            docDataElem.appendChild(pageDataElem);
         }
 
-        Element dataModels = DocumentHelper.createElement(BuilderConstants.ELEMENT_DATABINDING);
-        docDataElem.add(dataModels);
-        writeDataModels(dataModels, appManager.getAppFileData());
+        Element dataModels = doc.createElement(BuilderConstants.ELEMENT_DATABINDING);
+        docDataElem.appendChild(dataModels);
+        writeDataModels(doc, dataModels, appManager.getAppFileData());
 
-        elem0.add(docDataElem);
+        elem0.appendChild(docDataElem);
 
-        return root;
+        return doc;
     }
 
-    public static Element writeCss(Element cssElement, Part part) {
+    public static Element writeCss(Document doc, Element cssElement, Part part) {
         // Adds selector attribute.
         for (CssSelector selector : part.getSelectors()) {
             if (selector == null) {
                 continue;
             }
 
-            Element selectorElement = DocumentHelper.createElement("tizen.selector");
-            selectorElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME,
+            Element selectorElement = doc.createElement("tizen.selector");
+            selectorElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME,
                                          selector.getSelectorName());
-            selectorElement.addAttribute(BuilderConstants.ATTRIBUTE_PARTID, selector.getPartId());
+            selectorElement.setAttribute(BuilderConstants.ATTRIBUTE_PARTID, selector.getPartId());
 
             // Adds style attribute.
             for (Entry<String, String> child : selector.getProperties()) {
-                Element styleElement = DocumentHelper.createElement("tizen.style");
-                styleElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, child.getKey());
-                styleElement.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, child.getValue());
-                selectorElement.add(styleElement);
+                Element styleElement = doc.createElement("tizen.style");
+                styleElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, child.getKey());
+                styleElement.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, child.getValue());
+                selectorElement.appendChild(styleElement);
             }
-            cssElement.add(selectorElement);
+            cssElement.appendChild(selectorElement);
         }
 
         List<Part> children = part.getChildren();
         int size = children.size();
         for (int i = 0; i < size; i++) {
-            writeCss(cssElement, children.get(i));
+            writeCss(doc, cssElement, children.get(i));
         }
 
         return cssElement;
     }
 
     // public static Element writeDataBinding(Part part) {
-    // Element elem = DocumentHelper.createElement("tizen.dataModel");
+    // Element elem = doc.createElement("tizen.dataModel");
     //
     // String value = part.getPropertyValue("data-bind");
     // if ((value != null) && (!value.equals(""))) {
@@ -150,7 +150,7 @@ public class HtmlMetaWriter_ver_1 {
     // return elem;
     // }
 
-    public static Element writeNScreen(Element nscreenElement, List<CssFile> list) {
+    public static Element writeNScreen(Document doc, Element nscreenElement, List<CssFile> list) {
         Collections.sort(list, new Comparator<CssFile>() {
             @Override
             public int compare(CssFile o1, CssFile o2) {
@@ -167,28 +167,28 @@ public class HtmlMetaWriter_ver_1 {
 
         int preWidth = 0;
         for (CssFile model : list) {
-            Element screenElement = DocumentHelper.createElement("screen");
-            screenElement.addAttribute("title", model.getTitle());
-            screenElement.addAttribute("width", String.valueOf(model.getWidth()));
-            screenElement.addAttribute("height", String.valueOf(model.getHeight()));
-            screenElement.addAttribute("cssFileName", model.getFileName());
-            screenElement.addAttribute("minWidth", String.valueOf(preWidth));
+            Element screenElement = doc.createElement("screen");
+            screenElement.setAttribute("title", model.getTitle());
+            screenElement.setAttribute("width", String.valueOf(model.getWidth()));
+            screenElement.setAttribute("height", String.valueOf(model.getHeight()));
+            screenElement.setAttribute("cssFileName", model.getFileName());
+            screenElement.setAttribute("minWidth", String.valueOf(preWidth));
 
             preWidth = model.getWidth();
             if (preWidth != 0) {
                 preWidth++;
             }
 
-            nscreenElement.add(screenElement);
+            nscreenElement.appendChild(screenElement);
         }
         return nscreenElement;
     }
 
-    public static Element writePart(Part part, boolean includePid) {
-        Element elem = DocumentHelper.createElement(part.getDescriptorId());
+    public static Element writePart(Document doc, Part part, boolean includePid) {
+        Element elem = doc.createElement(part.getDescriptorId());
 
         if (includePid) {
-            elem.addAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
+            elem.setAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
 
             // Adds height style attribute.
             PartDescriptor descriptor = part.getPartDescriptor();
@@ -199,12 +199,12 @@ public class HtmlMetaWriter_ver_1 {
                     String value =
                             BuilderConstants.ATTRIBUTE_VALUE_HEIGHT + BuilderConstants.COLON
                                     + height + BuilderConstants.ATTRIBUTE_VALUE_PX;
-                    elem.addAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
+                    elem.setAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
 
-                    Element textElem = DocumentHelper.createElement(BuilderConstants.PART_TEXT);
-                    textElem.addAttribute(BuilderConstants.ATTRIBUTE_TEXT,
+                    Element textElem = doc.createElement(BuilderConstants.PART_TEXT);
+                    textElem.setAttribute(BuilderConstants.ATTRIBUTE_TEXT,
                                           descriptor.getGuideText());
-                    elem.add(textElem);
+                    elem.appendChild(textElem);
                 }
             }
         }
@@ -213,10 +213,10 @@ public class HtmlMetaWriter_ver_1 {
             String value = part.getPropertyValue(property.getPropertyName());
             if ((value != null) && (!value.isEmpty())) {
                 if (property.getPropertyType().equals(TypeDescriptor.ID_OF_HTMLSTRING)) {
-                    elem.setText(value);
+                    elem.setTextContent(value);
                 } else if (property.getPropertyType()
                         .indexOf(BuilderConstants.PROPERTY_GROUP_PREFIX) != 0) {
-                    elem.addAttribute(property.getPropertyName(), value);
+                    elem.setAttribute(property.getPropertyName(), value);
                 }
             }
         }
@@ -231,9 +231,9 @@ public class HtmlMetaWriter_ver_1 {
             for (int i = 0; i < values.size(); i++) {
                 value = values.get(i);
                 if (value != null) {
-                    Element element = DocumentHelper.createElement("event");
-                    element.addAttribute(event.getKey(), value);
-                    elem.add(element);
+                    Element element = doc.createElement("event");
+                    element.setAttribute(event.getKey(), value);
+                    elem.appendChild(element);
                 }
             }
         }
@@ -243,42 +243,42 @@ public class HtmlMetaWriter_ver_1 {
             GotoPageProperty value = gotoPageEvent.getValue();
             if ((value != null) && (value.getDestinationPage() != null)
                     && (value.getTransition() != null)) {
-                Element element = DocumentHelper.createElement("gotoPage");
-                element.addAttribute("event", gotoPageEvent.getKey());
-                element.addAttribute("destinationPage", value.getDestinationPage());
-                element.addAttribute("transition", value.getTransition());
-                elem.add(element);
+                Element element = doc.createElement("gotoPage");
+                element.setAttribute("event", gotoPageEvent.getKey());
+                element.setAttribute("destinationPage", value.getDestinationPage());
+                element.setAttribute("transition", value.getTransition());
+                elem.appendChild(element);
             }
         }
 
         for (Part child : part.getChildren()) {
-            elem.add(writePart(child, includePid));
+            elem.appendChild(writePart(doc, child, includePid));
         }
 
         return elem;
     }
 
-    private static void writeDataModels(Element element, AppFileData descriptor) {
+    private static void writeDataModels(Document doc, Element element, AppFileData descriptor) {
         List<BindingData> dataSources = descriptor.getDataSources();
         for (BindingData dataSource : dataSources) {
-            element.add(writeDataSourceInfo(dataSource));
+            element.appendChild(writeDataSourceInfo(doc, dataSource));
         }
 
         List<BindingData> viewModels = descriptor.getViewModels();
         for (BindingData viewModel : viewModels) {
-            element.add(writeViewModelInfo(viewModel));
+            element.appendChild(writeViewModelInfo(doc, viewModel));
         }
 
-        writeHandlerInfoFromViewModels(element, viewModels);
+        writeHandlerInfoFromViewModels(doc, element, viewModels);
 
         for (BindingData dataSource : dataSources) {
             if (dataSource.getUpdateOnStartup()) {
-                element.add(writeUpdateOnStartUp(dataSource));
+                element.appendChild(writeUpdateOnStartUp(doc, dataSource));
             }
         }
     }
 
-    private static void writeHandlerInfoFromViewModels(Element element, List<BindingData> dataModels) {
+    private static void writeHandlerInfoFromViewModels(Document doc, Element element, List<BindingData> dataModels) {
         List<String> handlerModelInfo = new ArrayList<String>();
         List<String> handlerSourceInfo = new ArrayList<String>();
 
@@ -299,113 +299,113 @@ public class HtmlMetaWriter_ver_1 {
             if ((handlerSourceInfo.get(i) != null) && (handlerSourceInfo.get(i).equals(""))) {
                 continue;
             }
-            Element subElement = DocumentHelper.createElement(BuilderConstants.ELEMENT_HANDLERINFO);
-            subElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerSourceInfo.get(i));
+            Element subElement = doc.createElement(BuilderConstants.ELEMENT_HANDLERINFO);
+            subElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerSourceInfo.get(i));
 
             Element subSubElement =
-                    DocumentHelper.createElement(BuilderConstants.ELEMENT_MODELINFO);
-            subSubElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerModelInfo.get(i));
-            subElement.add(subSubElement);
+                    doc.createElement(BuilderConstants.ELEMENT_MODELINFO);
+            subSubElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, handlerModelInfo.get(i));
+            subElement.appendChild(subSubElement);
 
             for (int j = i + 1; j < handlerSourceInfo.size(); j++) {
 
                 if ((handlerSourceInfo.get(i) != null) && (handlerSourceInfo.get(j) != null)
                         && (handlerSourceInfo.get(i).equals(handlerSourceInfo.get(j)))) {
                     Element testElement =
-                            DocumentHelper.createElement(BuilderConstants.ELEMENT_MODELINFO);
-                    testElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME,
+                            doc.createElement(BuilderConstants.ELEMENT_MODELINFO);
+                    testElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME,
                                              handlerModelInfo.get(j));
-                    subElement.add(testElement);
+                    subElement.appendChild(testElement);
 
                     handlerSourceInfo.set(j, "");
                 }
             }
-            element.add(subElement);
+            element.appendChild(subElement);
         }
     }
 
-    private static Element writeUpdateOnStartUp(BindingData dataModel) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED, dataModel.getUpdateOnStartup()
+    private static Element writeUpdateOnStartUp(Document doc, BindingData dataModel) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_UPDATEONSTARTUP);
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_ISCHECKED, dataModel.getUpdateOnStartup()
                 .toString());
         return element;
     }
 
-    private static Element writeDataSourceInfo(BindingData dataModel) {
+    private static Element writeDataSourceInfo(Document doc, BindingData dataModel) {
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_DATASOURCE);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_DATASOURCE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE, dataModel.getModelType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE, dataModel.getModelType());
 
         if ((dataModel.getModelType() != null) && (dataModel.getModelType().equals("REMOTECALL"))) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_URL, dataModel.getURL());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getMethod());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PROXY, dataModel.getProxy());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_QUERY, dataModel.getQuery());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE, dataModel.getSourceType());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT, dataModel.getTimeout());
-            element.addAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, dataModel.getJsonData());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_URL, dataModel.getURL());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getMethod());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PROXY, dataModel.getProxy());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_QUERY, dataModel.getQuery());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE, dataModel.getSourceType());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT, dataModel.getTimeout());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, dataModel.getJsonData());
 
             List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
             int size = observableObjects.size();
             for (int i = 0; i < size; i++) {
-                element.add(writeObservableObjects(observableObjects.get(i)));
+                element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
             }
         } else if ((dataModel.getModelType() != null)
                 && (dataModel.getModelType().equals("STATIC"))) {
             List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
             int size = observableObjects.size();
             for (int i = 0; i < size; i++) {
-                element.add(writeObservableObjects(observableObjects.get(i)));
+                element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
             }
             String jsonData = dataModel.getJsonData();
             if ((jsonData == null) || (jsonData.equals(""))) {
                 jsonData = "{}";
             }
-            element.addAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, jsonData);
-            element.addAttribute(BuilderConstants.ATTRIBUTE_FILEPATH, dataModel.getStaticFilePath());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, jsonData);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_FILEPATH, dataModel.getStaticFilePath());
         } else if ((dataModel.getModelType() != null)
                 && (dataModel.getModelType().equals("RUNTIMEAPI"))) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_API, dataModel.getRuntimeApiName());
+            element.setAttribute(BuilderConstants.ATTRIBUTE_API, dataModel.getRuntimeApiName());
         }
         return element;
     }
 
-    private static Element writeViewModelInfo(BindingData dataModel) {
+    private static Element writeViewModelInfo(Document doc, BindingData dataModel) {
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_VIEWMODEL);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_VIEWMODEL);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE, dataModel.getSourceName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, dataModel.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_DATASOURCE, dataModel.getSourceName());
 
         List<BindingObject> observableObjects = dataModel.getViewModelObjects();
 
         int size = observableObjects.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeObservableObjects(observableObjects.get(i)));
+            element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
         }
 
         return element;
     }
 
-    private static Element writeObservableObjects(BindingObject observableObject) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
-        // Element element = DocumentHelper.createElement("dataSourceTreeNode");
+    private static Element writeObservableObjects(Document doc, BindingObject observableObject) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_OBSERVABLEOBJECT);
+        // Element element = doc.createElement("dataSourceTreeNode");
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, observableObject.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, observableObject.getName());
         if (observableObject.getMarked() != null) {
-            element.addAttribute(BuilderConstants.ATTRIBUTE_ISMARKED, observableObject.getMarked()
+            element.setAttribute(BuilderConstants.ATTRIBUTE_ISMARKED, observableObject.getMarked()
                     .toString());
         }
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, observableObject.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, observableObject.getValue());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, observableObject.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, observableObject.getValue());
 
         List<BindingObject> observableObjects = observableObject.getItems();
         int size = observableObjects.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeObservableObjects(observableObjects.get(i)));
+            element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
         }
 
         return element;
index 040d987..d94eb5e 100644 (file)
 
 package org.tizen.webuibuilder.model.css.io;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.css.descriptors.CssCategoryDescriptor;
 import org.tizen.webuibuilder.model.css.descriptors.CssDescriptor;
@@ -36,6 +38,10 @@ import org.tizen.webuibuilder.model.css.descriptors.CssPropertyDescriptor;
 import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
 import org.tizen.webuibuilder.model.descriptors.PropertyConditionDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 
 /**
@@ -80,19 +86,27 @@ public class CssDescriptorReader {
      *            a {@link URL} of descriptor XML
      */
     public void parse(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
-
+       
         try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(descriptorPath.toURI().toString());
+               } catch (URISyntaxException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
             e.printStackTrace();
         }
 
         CssDescriptor cssDescriptor = new CssDescriptor();
 
-        if (doc != null && doc.getRootElement() != null) {
-            parseRoot(doc.getRootElement(), cssDescriptor);
+        if (doc != null && doc.getDocumentElement() != null) {
+            parseRoot(doc.getDocumentElement(), cssDescriptor);
         }
 
         manager.setCssDescriptor(cssDescriptor);
@@ -107,8 +121,9 @@ public class CssDescriptorReader {
      *            a {@link CssDescriptor}
      */
     private void parseRoot(Element root, CssDescriptor cssDescriptor) {
-        for (Object childObj : root.elements(ELEM_CATEGORY)) {
-            parseCategory((Element) childObj, cssDescriptor);
+       NodeList elemList = root.getElementsByTagName(ELEM_CATEGORY);
+       for(int i = 0; i < elemList.getLength(); i++){
+               parseCategory((Element) elemList.item(i), cssDescriptor);
         }
     }
 
@@ -121,14 +136,15 @@ public class CssDescriptorReader {
      *            a {@link CssCategoryDescriptor}
      */
     private void parseCategory(Element elem, CssDescriptor cssDescriptor) {
-        String name = elem.attributeValue(ATTR_NAME);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String brief = elem.attributeValue(ATTR_BRIEF);
+        String name = elem.getAttribute(ATTR_NAME);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String brief = elem.getAttribute(ATTR_BRIEF);
         CssCategoryDescriptor cssCategoryDescriptor =
                 new CssCategoryDescriptor(name, displayName, brief);
 
-        for (Object childObj : elem.elements(ELEM_PROPERTY)) {
-            parseProperty((Element) childObj, cssCategoryDescriptor);
+       NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+       for(int i = 0; i < elemList.getLength(); i++){
+               parseProperty((Element) elemList.item(i), cssCategoryDescriptor);
         }
 
         cssDescriptor.addCssCategoryDescriptor(cssCategoryDescriptor);
@@ -147,13 +163,13 @@ public class CssDescriptorReader {
             return;
         }
 
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String toolip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String inlineText = elem.attributeValue(ATTR_INLINE);
+        String name = elem.getAttribute(ATTR_NAME);
+        String type = elem.getAttribute(ATTR_TYPE);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String toolip = elem.getAttribute(ATTR_TOOLTIP);
+        String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+        String initValue = elem.getAttribute(ATTR_INITVALUE);
+        String inlineText = elem.getAttribute(ATTR_INLINE);
 
         boolean inline = false;
         if (BuilderConstants.TRUE.equals(inlineText)) {
@@ -165,13 +181,15 @@ public class CssDescriptorReader {
                                           defaultValue, initValue, manager, inline);
 
         if (type.startsWith(TypeDescriptor.ID_OF_GROUP)) {
-            for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-                parseChildProperty((Element) propertyObj, cssPropertyDescriptor);
+               NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+               for(int i = 0; i < elemList.getLength(); i++){
+                       parseChildProperty((Element) elemList.item(i), cssPropertyDescriptor);
             }
         }
 
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, cssPropertyDescriptor);
+       NodeList elemList = elem.getElementsByTagName(ELEM_CONDITION);
+       for(int i = 0; i < elemList.getLength(); i++){
+               parseCondition((Element) elemList.item(i), cssPropertyDescriptor);
         }
 
         cssCategoryDescriptor.addCssPropertyDescriptor(cssPropertyDescriptor);
@@ -190,12 +208,12 @@ public class CssDescriptorReader {
             return;
         }
 
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
+        String name = elem.getAttribute(ATTR_NAME);
+        String type = elem.getAttribute(ATTR_TYPE);
+        String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+        String tooltip = elem.getAttribute(ATTR_TOOLTIP);
+        String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+        String initValue = elem.getAttribute(ATTR_INITVALUE);
 
         // child property must be not inline
         CssPropertyDescriptor childProperty =
@@ -206,22 +224,24 @@ public class CssDescriptorReader {
 
         if (type.startsWith(TypeDescriptor.ID_OF_GROUP)
                 || type.startsWith(TypeDescriptor.ID_OF_SCALE)) {
-            for (Object childObj : elem.elements(ELEM_PROPERTY)) {
-                parseChildProperty((Element) childObj, childProperty);
+               NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+               for(int i = 0; i < elemList.getLength(); i++){
+                       parseChildProperty((Element) elemList.item(i), childProperty);
             }
         }
 
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, childProperty);
+       NodeList elemList = elem.getElementsByTagName(ELEM_CONDITION);
+       for(int i = 0; i < elemList.getLength(); i++){
+               parseCondition((Element) elemList.item(i), childProperty);
         }
     }
 
     private void parseCondition(Element elem, CssPropertyDescriptor cssPropertyDescriptor) {
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-        String error = elem.attributeValue(ATTR_ERROR);
+        String name = elem.getAttribute(ATTR_NAME);
+        String value = elem.getAttribute(ATTR_VALUE);
+        String target = elem.getAttribute(ATTR_TARGET);
+        String targetValue = elem.getAttribute(ATTR_TARGETVALUE);
+        String error = elem.getAttribute(ATTR_ERROR);
 
         PropertyConditionDescriptor condition =
                 new PropertyConditionDescriptor(name, value, target, targetValue, error);
index 1bd9855..af0311e 100644 (file)
@@ -32,7 +32,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.dom4j.Document;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
index 66b3e89..6a124a2 100644 (file)
@@ -234,7 +234,7 @@ public class HtmlReader {
         }
 
         String xpath = descriptor.getXpath();
-        if (xpath == null) {
+        if (xpath == null || xpath.isEmpty()) {
             return;
         }
         XPathFactory xpathFactory = XPathFactory.newInstance();
@@ -242,7 +242,7 @@ public class HtmlReader {
         NodeList nodes = null;
         Object nodeset = null;
         try {
-            if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
+            if (xpath != null && !xpath.isEmpty()) {
                 nodeset = expr.evaluate(xpath, document, XPathConstants.NODESET);
             }
         } catch (XPathExpressionException e) {
@@ -275,7 +275,7 @@ public class HtmlReader {
         }
 
         String xpath = descriptor.getChildXpath();
-        if (xpath == null) {
+        if (xpath == null || xpath.isEmpty()) {
             return;
         }
         XPathFactory xpathFactory = XPathFactory.newInstance();
@@ -283,7 +283,7 @@ public class HtmlReader {
         NodeList nodes = null;
         Object nodeset = null;
         try {
-            if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
+            if (xpath != null && !xpath.isEmpty()) {
                 nodeset = expr.evaluate(xpath, document, XPathConstants.NODESET);
             }
         } catch (XPathExpressionException e) {
@@ -326,7 +326,7 @@ public class HtmlReader {
         try {
             List<PagePartDescriptor> pagePartDescriptor = manager.getPageDescriptors();
             String xpath = pagePartDescriptor.get(0).getXpath();
-            if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
+            if (xpath != null && !xpath.isEmpty()) {
                 nodeset = expr.evaluate(xpath, document, XPathConstants.NODESET);
             }
         } catch (XPathExpressionException e) {
@@ -342,11 +342,12 @@ public class HtmlReader {
             int size = nodes.getLength();
             for (int i = 0; i < size; i++) {
                 Node node = nodes.item(i);
-                Element element = (Element) node;
-                Part childPart = parseElement(pageFileData, part, element, manager, factory);
-                part.addChildWhenPageRead(childPart);
-                if (childPart.getDescriptorId().equals("tizen.page")) {
-                    pageFileData.addRootPart(childPart.getIdPropertyValue(), childPart);
+                if(node instanceof Element){
+                       Part childPart = parseElement(pageFileData, part, (Element) node, manager, factory);
+                       part.addChildWhenPageRead(childPart);
+                       if (childPart.getDescriptorId().equals("tizen.page")) {
+                           pageFileData.addRootPart(childPart.getIdPropertyValue(), childPart);
+                       }
                 }
             }
         }
@@ -412,7 +413,7 @@ public class HtmlReader {
 
                     String xpath = propertyDescriptor.getXpath();
 
-                    if (xpath != null && !xpath.equals(BuilderConstants.EMPTY)) {
+                    if (xpath != null && !xpath.isEmpty()) {
                         XPathFactory xpathFactory = XPathFactory.newInstance();
                         XPath expr = xpathFactory.newXPath();
                         Object node = null;
index eff72b0..8b255bc 100644 (file)
@@ -79,7 +79,7 @@ public class HtmlWriter {
             // StreamSource(new StringBufferInputStream(xslt)));
             Transformer transformer = transformerFactory.newTransformer();
             transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
-            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.NO);
+            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
             transformer.setOutputProperty(OutputKeys.INDENT, BuilderConstants.NO);
             DOMSource source = new DOMSource(element);
             StreamResult result = new StreamResult(writer);
index 787db4e..aa224c0 100644 (file)
  *
  */
 
-
 package org.tizen.webuibuilder.model.io;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,6 +33,9 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map.Entry;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
@@ -40,18 +43,13 @@ import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.URIResolver;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.DocumentResult;
-import org.dom4j.io.DocumentSource;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.SAXContentHandler;
-import org.dom4j.io.SAXReader;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
 import org.eclipse.core.resources.IProject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -65,363 +63,339 @@ import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
 import org.tizen.webuibuilder.model.filedata.PageFileData;
 import org.tizen.webuibuilder.utility.ResourceManager;
 
-
 /**
  * A code generator.
  */
 public class CodeGenerator {
 
-    /**
-     * A logger instance.
-     */
-    private static Logger logger = LoggerFactory.getLogger(PartFactory.class);
-
-    /**
-     * A {@link Transformer}.
-     */
-    private static Transformer transformer;
-
-    /**
-     * Gets a {@link Transformer}.
-     * 
-     * @param xslt
-     *            a {@link Document}
-     * @return {@link Transformer}
-     */
-    private static Transformer getTransformer(Document xslt) {
-        if (transformer == null) {
-            TransformerFactory factory = TransformerFactory.newInstance();
-            try {
-                transformer = factory.newTransformer(new DocumentSource(xslt));
-                transformer
-                        .setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
-                transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
-                transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
-            } catch (TransformerConfigurationException e) {
-                e.printStackTrace();
-            }
-        }
-
-        return transformer;
-    }
-
-    // private static Transformer getTransformer(
-    // DescriptorManager descriptorManager) {
-    // if (transformer == null) {
-    // Document xslt = descriptorManager.getXsltDocument();
-    // return getTransformer(xslt);
-    // }
-    //
-    // return transformer;
-    // }
-
-    /**
-     * Generates HTML code.
-     * 
-     * @param part
-     *            a root {@link Part}
-     * @param includePid
-     *            whether to write part-id
-     * @param descriptorManager
-     *            a {@link DescriptorManager}
-     * @return HTML code if generating succeed.
-     */
-    // public static String generateCode(Part part, boolean includePid,
-    // DescriptorManager descriptorManager, boolean partialGen) {
-    // StringWriter stringwriter = new StringWriter();
-    // try {
-    // generateCode(part, stringwriter, includePid, descriptorManager,
-    // partialGen);
-    // } catch (IOException e) {
-    // e.printStackTrace();
-    // }
-    //
-    // String code = stringwriter.toString();
-    //
-    // return code;
-    // }
-
-    /**
-     * Generates HTML code.
-     * 
-     * @param part
-     *            a {@link Part}
-     * @param includePid
-     *            whether to write part-id
-     * @param xslt
-     *            a {@link Document}
-     * @param partialGen
-     *            whether to generate partially
-     * @return HTML code
-     */
-    public static String generateCode(Part part, boolean includePid, Document xslt,
-                                      boolean partialGen) {
-        StringWriter stringwriter = new StringWriter();
-        try {
-            generateCode(part, stringwriter, includePid, xslt, partialGen);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        String code = stringwriter.toString();
-
-        return code;
-    }
-
-    /**
-     * Generates HTML code.
-     * 
-     * @param part
-     *            a {@link Part}
-     * @param writer
-     *            a writer
-     * @param includePid
-     *            whether to write part-id
-     * @param xslt
-     *            a {@link Document}
-     * @param partialGen
-     *            whether to generate partially
-     * @throws IOException
-     */
-    private static void generateCode(Part part, Writer writer, boolean includePid, Document xslt,
-                                     boolean partialGen) throws IOException {
-        Element elem = PageWriter.writePart(part, includePid);
-
-        Element elem0 = null;
-        if (partialGen) {
-            elem0 = DocumentHelper.createElement("tizen.dummy");
-            elem0.add(elem);
-        } else {
-            elem0 = elem;
-        }
-
-        Document doc = elem.getDocument();
-        if (doc == null) {
-            doc = DocumentHelper.createDocument();
-            doc.add(elem0);
-        }
-
-        DocumentSource source = new DocumentSource(doc);
-        SAXContentHandler handler = new SAXContentHandler();
-        DocumentResult result = new DocumentResult(handler);
-        try {
-            getTransformer(xslt).transform(source, result);
-        } catch (TransformerException e) {
-            e.printStackTrace();
-        }
-
-        OutputFormat format = OutputFormat.createPrettyPrint();
-        format.setExpandEmptyElements(true);
-        format.setTrimText(false);
-        HTMLWriter2 htmlwriter = new HTMLWriter2(writer, format);
-        if (partialGen) {
-            @SuppressWarnings("unchecked")
-            List<Element> lst = result.getDocument().getRootElement().content();
-            for (Element elm : lst) {
-                htmlwriter.write(elm);
-            }
-        } else {
-            htmlwriter.write(result.getDocument());
-        }
-        htmlwriter.close();
-    }
-
-    // private static void generateCode(Part part, Writer writer,
-    // boolean includePid, DescriptorManager descriptorManager,
-    // boolean partialGen) throws IOException {
-    // generateCode(part, writer, includePid,
-    // descriptorManager.getXsltDocument(), partialGen);
-    // }
-    //
-
-    /**
-     * Generates HTML code.
-     * 
-     * @param part
-     *            a {@link Part}
-     * @param writer
-     *            a writer
-     * @param includePid
-     *            whether to write part-id
-     * @param xslt
-     *            a {@link Document}
-     * @param partialGen
-     *            whether to generate partially
-     * @throws IOException
-     */
-
-    /**
-     * Generates HTML code.
-     * 
-     * @param srcFile
-     *            a source file
-     * @param dstFile
-     *            a destination file
-     * @param descriptorManager
-     *            a {@link DescriptorManager}
-     * @param partFactory
-     *            a {@link PartFactory}
-     * @param project
-     *            an {@link IProject}
-     * @throws IOException
-     */
-    public static void generateCode(String srcFile, String dstFile,
-                                    DescriptorManager descriptorManager, PartFactory partFactory,
-                                    IProject project) throws IOException {
-        PageFileData page = PageReader.read(srcFile, partFactory);
-        if (page == null) {
-            return;
-        }
-
-        generateCode(page.getRootPart(0), new FileWriter(dstFile), false,
-                     descriptorManager.getXsltDocument(), false);
-    }
-
-    public static void generateCode(String srcFile, InputStream xsltFile, String dstFile,
-                                    Document xslt) throws IOException {
-        SAXReader reader = new SAXReader();
-        Document doc = DocumentHelper.createDocument();
-
-        try {
-            doc = reader.read(new File(srcFile).toURI().toURL());
-        } catch (DocumentException e) {
-            logger.error(BuilderConstants.LOG_READ_PAGE_ERROR);
-        }
-
-        DocumentSource source = new DocumentSource(doc);
-        StreamResult result = new StreamResult(dstFile);
-
-        Transformer transformer = null;
-        TransformerFactory factory = TransformerFactory.newInstance();
-        factory.setURIResolver(new URIResolver() {
-
-            @Override
-            public Source resolve(String href, String base) throws TransformerException {
-                String uri = BuilderConstants.XSLT_DIR + href;
-                try {
-                    InputStream stream = ResourceManager.openStream(uri);
-                    return new StreamSource(stream);
-                } catch (IOException e) {
-                    logger.error(uri + BuilderConstants.CANNOT_BE_FOUND_ERROR);
-                    e.printStackTrace();
-                }
-
-                return null;
-            }
-        });
-
-        try {
-            transformer = factory.newTransformer(new StreamSource(xsltFile));
-            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
-            transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
-            transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
-            transformer.transform(source, result);
-        } catch (TransformerConfigurationException e) {
-            e.printStackTrace();
-        } catch (TransformerException e) {
-            e.printStackTrace();
-        }
-    }
-
-    // public static void generateCode(String srcFile, InputStream xsltFile,
-    // String dstFile, DescriptorManager descriptorManager)
-    // throws IOException {
-    // generateCode(srcFile, xsltFile, dstFile,
-    // descriptorManager.getXsltDocument());
-    // }
-
-    /**
-     * Generates css code using a root {@link Part}.
-     * 
-     * @param rootPart
-     *            a root {@link Part}
-     * @return css code if generating succeed, and empty string otherwise
-     */
-    public static String generateCssCode(Part rootPart) {
-        if (rootPart == null) {
-            return BuilderConstants.EMPTY;
-        }
-
-        String css = getCssCode(rootPart, true);
-
-        return css;
-    }
-
-    /**
-     * Generates css code using a {@link Part}.
-     * 
-     * @param part
-     *            a {@link Part}
-     * @param deep
-     *            whether recursive generation is done
-     * @return css code
-     */
-    private static String getCssCode(Part part, boolean deep) {
-        StringBuilder css = new StringBuilder();
-        Iterator<CssSelector> selectors = part.getSelectors().iterator();
-        while (selectors.hasNext()) {
-            // Generates selector.
-            CssSelector selector = selectors.next();
-            css.append(selector.getSelectorName());
-            css.append(BuilderConstants.SPACE);
-            css.append(BuilderConstants.OPEN_CURLY_BRACKET);
-            css.append(BuilderConstants.NEW_LINE);
-            Iterator<Entry<String, String>> properties = selector.getProperties().iterator();
-
-            while (properties.hasNext()) {
-                // Generates property.
-                Entry<String, String> property = properties.next();
-                css.append(BuilderConstants.TAB);
-                css.append(property.getKey());
-                css.append(BuilderConstants.SPACE);
-                css.append(BuilderConstants.COLON);
-                css.append(BuilderConstants.SPACE);
-                css.append(property.getValue());
-                css.append(BuilderConstants.SEMICOLON);
-                css.append(BuilderConstants.NEW_LINE);
-            }
-            css.append(BuilderConstants.CLOSE_CURLY_BRACKET);
-            css.append(BuilderConstants.NEW_LINE);
-        }
-
-        if (deep) {
-            List<Part> children = part.getChildren();
-            int size = children.size();
-            for (int i = 0; i < size; i++) {
-                Part child = children.get(i);
-                css.append(getCssCode(child, true));
-            }
-        }
-
-        return css.toString();
-    }
-
-    /**
-     * Generates css code of specific {@link Part} using a root {@link Part}.
-     * 
-     * @param crootPart
-     *            a root {@link Part}
-     * @param partId
-     *            an id property of a {@link Part}
-     * @return css code if generating succeed, and empty string otherwise
-     */
-    public static String generateCssCode(Part rootPart, String partId) {
-        if (rootPart == null) {
-            return BuilderConstants.EMPTY;
-        }
-
-        Part part = rootPart.getChildOfIdPropertyValue(partId, true);
-        String css = getCssCode(part, false);
-
-        return css;
-    }
-
-    public static String generateCssCode(CssFile cssFile) {
-        return new CssWriter().generateSelectors(cssFile);
-    }
-
-    public static void generateCSS(CssFile cssFile) {
-        new CssWriter().generate(cssFile);
-    }
+       /**
+        * A logger instance.
+        */
+       private static Logger logger = LoggerFactory.getLogger(PartFactory.class);
+
+       /**
+        * A {@link Transformer}.
+        */
+       // private static Transformer transformer;
+
+       /**
+        * Gets a {@link Transformer}.
+        * 
+        * @param xslt
+        *            a {@link Document}
+        * @return {@link Transformer}
+        */
+       private static Transformer getTransformer(Document xslt) {
+               // if (transformer == null) {
+               TransformerFactory factory = TransformerFactory.newInstance();
+
+               DOMSource source = new DOMSource(xslt);
+               Transformer transformer = null;
+               try {
+                       transformer = factory.newTransformer(source);
+                       transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.ENCODING,
+                                       BuilderConstants.ENCODING);
+                       transformer.setOutputProperty(OutputKeys.INDENT,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.METHOD,
+                                       BuilderConstants.HTML);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               }
+               // }
+
+               return transformer;
+       }
+
+       /**
+        * Generates HTML code.
+        * 
+        * @param part
+        *            a {@link Part}
+        * @param includePid
+        *            whether to write part-id
+        * @param xslt
+        *            a {@link Document}
+        * @param partialGen
+        *            whether to generate partially
+        * @return HTML code
+        */
+       public static String generateCode(Part part, boolean includePid,
+                       Document xslt, boolean partialGen) {
+               StringWriter stringwriter = new StringWriter();
+
+               try {
+                       generateCode(part, stringwriter, includePid, xslt, partialGen);
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+               String code = stringwriter.toString();
+
+               return code;
+       }
+
+       /**
+        * Generates HTML code.
+        * 
+        * @param part
+        *            a {@link Part}
+        * @param writer
+        *            a writer
+        * @param includePid
+        *            whether to write part-id
+        * @param xslt
+        *            a {@link Document}
+        * @param partialGen
+        *            whether to generate partially
+        * @throws IOException
+        */
+       private static void generateCode(Part part, Writer writer,
+                       boolean includePid, Document xslt, boolean partialGen)
+                       throws IOException {
+               Document doc = PageWriter.writePart(part, includePid);
+
+               Element elem0 = null;
+               if (partialGen) {
+                       elem0 = doc.createElement("tizen.dummy");
+                       Element elem = (Element) doc.getFirstChild();
+                       doc.removeChild(elem);
+                       elem0.appendChild(elem);
+                       doc.appendChild(elem0);
+               }
+
+               DOMSource source = new DOMSource(doc);
+               StreamResult result = new StreamResult(writer);
+               try {
+                       getTransformer(xslt).transform(source, result);
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
+
+               // OutputFormat format = OutputFormat.createPrettyPrint();
+               // format.setExpandEmptyElements(true);
+               // format.setTrimText(false);
+               // HTMLWriter2 htmlwriter = new HTMLWriter2(writer, format);
+               // if (partialGen) {
+               // @SuppressWarnings("unchecked")
+               // List<Element> lst = result.getDocument().getRootElement().content();
+               // for (Element elm : lst) {
+               // htmlwriter.write(elm);
+               // }
+               // } else {
+               // htmlwriter.write(result.getDocument());
+               // }
+               // htmlwriter.close();
+       }
+
+       // private static void generateCode(Part part, Writer writer,
+       // boolean includePid, DescriptorManager descriptorManager,
+       // boolean partialGen) throws IOException {
+       // generateCode(part, writer, includePid,
+       // descriptorManager.getXsltDocument(), partialGen);
+       // }
+       //
+
+       /**
+        * Generates HTML code.
+        * 
+        * @param part
+        *            a {@link Part}
+        * @param writer
+        *            a writer
+        * @param includePid
+        *            whether to write part-id
+        * @param xslt
+        *            a {@link Document}
+        * @param partialGen
+        *            whether to generate partially
+        * @throws IOException
+        */
+
+       /**
+        * Generates HTML code.
+        * 
+        * @param srcFile
+        *            a source file
+        * @param dstFile
+        *            a destination file
+        * @param descriptorManager
+        *            a {@link DescriptorManager}
+        * @param partFactory
+        *            a {@link PartFactory}
+        * @param project
+        *            an {@link IProject}
+        * @throws IOException
+        */
+       public static void generateCode(String srcFile, String dstFile,
+                       DescriptorManager descriptorManager, PartFactory partFactory)
+                       throws IOException {
+               PageFileData page = PageReader.read(srcFile, partFactory);
+               if (page == null) {
+                       return;
+               }
+
+               generateCode(page.getRootPart(0), new FileWriter(dstFile), false,
+                               descriptorManager.getXsltDocument(), false);
+       }
+
+       public static void generateCode(String srcFile, InputStream xsltFile,
+                       String dstFile, Document xslt) throws IOException {
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               DocumentBuilder builder = null;
+               Document doc = null;
+
+               try {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(srcFile);
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               }
+
+               DOMSource source = new DOMSource(doc);
+               StreamResult result = new StreamResult(dstFile);
+
+               Transformer transformer = null;
+               TransformerFactory transFactory = TransformerFactory.newInstance();
+               transFactory.setURIResolver(new URIResolver() {
+
+                       @Override
+                       public Source resolve(String href, String base)
+                                       throws TransformerException {
+                               String uri = BuilderConstants.XSLT_DIR + href;
+                               try {
+                                       InputStream stream = ResourceManager.openStream(uri);
+                                       return new StreamSource(stream);
+                               } catch (IOException e) {
+                                       logger.error(uri + BuilderConstants.CANNOT_BE_FOUND_ERROR);
+                                       e.printStackTrace();
+                               }
+
+                               return null;
+                       }
+               });
+
+               try {
+                       transformer = transFactory
+                                       .newTransformer(new StreamSource(xsltFile));
+                       transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.ENCODING,
+                                       BuilderConstants.ENCODING);
+                       transformer.setOutputProperty(OutputKeys.METHOD,
+                                       BuilderConstants.HTML);
+                       transformer.transform(source, result);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
+       }
+
+       // public static void generateCode(String srcFile, InputStream xsltFile,
+       // String dstFile, DescriptorManager descriptorManager)
+       // throws IOException {
+       // generateCode(srcFile, xsltFile, dstFile,
+       // descriptorManager.getXsltDocument());
+       // }
+
+       /**
+        * Generates css code using a root {@link Part}.
+        * 
+        * @param rootPart
+        *            a root {@link Part}
+        * @return css code if generating succeed, and empty string otherwise
+        */
+       public static String generateCssCode(Part rootPart) {
+               if (rootPart == null) {
+                       return BuilderConstants.EMPTY;
+               }
+
+               String css = getCssCode(rootPart, true);
+
+               return css;
+       }
+
+       /**
+        * Generates css code using a {@link Part}.
+        * 
+        * @param part
+        *            a {@link Part}
+        * @param deep
+        *            whether recursive generation is done
+        * @return css code
+        */
+       private static String getCssCode(Part part, boolean deep) {
+               StringBuilder css = new StringBuilder();
+               Iterator<CssSelector> selectors = part.getSelectors().iterator();
+               while (selectors.hasNext()) {
+                       // Generates selector.
+                       CssSelector selector = selectors.next();
+                       css.append(selector.getSelectorName());
+                       css.append(BuilderConstants.SPACE);
+                       css.append(BuilderConstants.OPEN_CURLY_BRACKET);
+                       css.append(BuilderConstants.NEW_LINE);
+                       Iterator<Entry<String, String>> properties = selector
+                                       .getProperties().iterator();
+
+                       while (properties.hasNext()) {
+                               // Generates property.
+                               Entry<String, String> property = properties.next();
+                               css.append(BuilderConstants.TAB);
+                               css.append(property.getKey());
+                               css.append(BuilderConstants.SPACE);
+                               css.append(BuilderConstants.COLON);
+                               css.append(BuilderConstants.SPACE);
+                               css.append(property.getValue());
+                               css.append(BuilderConstants.SEMICOLON);
+                               css.append(BuilderConstants.NEW_LINE);
+                       }
+                       css.append(BuilderConstants.CLOSE_CURLY_BRACKET);
+                       css.append(BuilderConstants.NEW_LINE);
+               }
+
+               if (deep) {
+                       List<Part> children = part.getChildren();
+                       int size = children.size();
+                       for (int i = 0; i < size; i++) {
+                               Part child = children.get(i);
+                               css.append(getCssCode(child, true));
+                       }
+               }
+
+               return css.toString();
+       }
+
+       /**
+        * Generates css code of specific {@link Part} using a root {@link Part}.
+        * 
+        * @param crootPart
+        *            a root {@link Part}
+        * @param partId
+        *            an id property of a {@link Part}
+        * @return css code if generating succeed, and empty string otherwise
+        */
+       public static String generateCssCode(Part rootPart, String partId) {
+               if (rootPart == null) {
+                       return BuilderConstants.EMPTY;
+               }
+
+               Part part = rootPart.getChildOfIdPropertyValue(partId, true);
+               String css = getCssCode(part, false);
+
+               return css;
+       }
+
+       public static String generateCssCode(CssFile cssFile) {
+               return new CssWriter().generateSelectors(cssFile);
+       }
+
+       public static void generateCSS(CssFile cssFile) {
+               new CssWriter().generate(cssFile);
+       }
 
 }
index b3d226d..55742e7 100644 (file)
  *
  */
 
-
 package org.tizen.webuibuilder.model.io;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.StringBufferInputStream;
+import java.io.StringWriter;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Arrays;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.descriptors.ChildPropertyDescriptor;
 import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
@@ -51,663 +66,718 @@ import org.tizen.webuibuilder.model.descriptors.RelationDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
 import org.tizen.webuibuilder.model.descriptors.WidgetPartDescriptor;
 
-
 /**
  * A descriptor reader.
  */
 public class DescriptorReader {
 
-    // Element name
-    private static final String ELEM_DOC = "doc"; //$NON-NLS-1$
-    private static final String ELEM_PAGE = "page"; //$NON-NLS-1$
-    private static final String ELEM_WIDGET = "widget"; //$NON-NLS-1$
-    private static final String ELEM_CONTENT = "content"; //$NON-NLS-1$
-    private static final String ELEM_NOCONTENT = "nocontent"; //$NON-NLS-1$
-    private static final String ELEM_PARENT = "parent"; //$NON-NLS-1$
-    private static final String ELEM_NOPARENT = "noparent"; //$NON-NLS-1$
-    private static final String ELEM_RELATIONS = "relations"; //$NON-NLS-1$
-    private static final String ELEM_PROPERTY = "property"; //$NON-NLS-1$
-    private static final String ELEM_CONDITION = "condition"; //$NON-NLS-1$
-    private static final String ELEM_EVENT = "event"; //$NON-NLS-1$
-    private static final String ELEM_XSL_FOR_OUTPUT = "xsl-for-output"; //$NON-NLS-1$
-    private static final String ELEM_TYPES = "types"; //$NON-NLS-1$
-    private static final String ELEM_TYPE = "type"; //$NON-NLS-1$
-    private static final String ELEM_CONSTANT = "constant"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPES = "eventTypes"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPE = "eventType"; //$NON-NLS-1$
-    private static final String ELEM_DEFAULTCODE = "defaultCode"; //$NON-NLS-1$
-    private static final String ELEM_PARAM = "param"; //$NON-NLS-1$
-
-    // Attribute name
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_DISPLAYNAME = "displayName"; //$NON-NLS-1$
-    private static final String ATTR_SMALLICON = "smallIcon"; //$NON-NLS-1$
-    private static final String ATTR_ICON_16 = "icon.16"; //$NON-NLS-1$
-    private static final String ATTR_ICON = "icon"; //$NON-NLS-1$
-    private static final String ATTR_CATEGORY = "category"; //$NON-NLS-1$
-    private static final String ATTR_DESCRIPTION = "description"; //$NON-NLS-1$
-    private static final String ATTR_PALETTE_VISIBLE = "paletteVisible"; //$NON-NLS-1$
-    private static final String ATTR_HELPCATEGORY = "helpCategory"; //$NON-NLS-1$
-    private static final String ATTR_HELPCONTENS = "helpContents"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKWIDTH = "feedbackWidth"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKHEIGHT = "feedbackHeight"; //$NON-NLS-1$
-    private static final String ATTR_BORDER_VISIBLE = "borderVisible"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKCONDITION = "feedbackCondition"; //$NON-NLS-1$
-    private static final String ATTR_GUIDE_TEXT = "guideText"; //$NON-NLS-1$
-    private static final String ATTR_SET_STYLE = "setStyle"; //$NON-NLS-1$
-    private static final String ATTR_UI_SELECTOR = "uiSelector"; //$NON-NLS-1$
-    private static final String ATTR_XPATH = "xpath"; //$NON-NLS-1$
-    private static final String ATTR_CHILDXPATH = "childXpath"; //$NON-NLS-1$
-    private static final String ATTR_IDS = "ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUDE_IDS = "exclude-ids"; //$NON-NLS-1$
-    private static final String ATTR_PARENT_IDS = "parent-ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUSIVE_GROUP = "exclusiveGroup"; //$NON-NLS-1$
-    private static final String ATTR_MIN = "min"; //$NON-NLS-1$
-    private static final String ATTR_MAX = "max"; //$NON-NLS-1$
-    private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-    private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
-    private static final String ATTR_DEFAULT = "default"; //$NON-NLS-1$
-    private static final String ATTR_INITVALUE = "initValue"; //$NON-NLS-1$
-    private static final String ATTR_SELECTOR = "selector"; //$NON-NLS-1$
-    private static final String ATTR_NOT_SUPPORTED = "notsupported"; //$NON-NLS-1$
-    private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
-    private static final String ATTR_TARGET = "target"; //$NON-NLS-1$
-    private static final String ATTR_TARGETVALUE = "targetValue"; //$NON-NLS-1$
-    private static final String ATTR_TOOLTIP = "tooltip"; //$NON-NLS-1$
-    private static final String ATTR_ERROR = "error"; //$NON-NLS-1$
-    private static final String ATTR_EVENTTYPE = "eventType"; //$NON-NLS-1$
-
-    private static final Namespace XSLT_NAMESPACE =
-            new Namespace("xsl", "http://www.w3.org/1999/XSL/Transform"); //$NON-NLS-1$ //$NON-NLS-2$
-    private static final String ELEM_STYLESHEET = "stylesheet"; //$NON-NLS-1$
-    private static final String ATTR_STYLESHEET_VERSION = "version"; //$NON-NLS-1$
-    private static final String VALUE_STYLESHEET_VERSION = "1.0"; //$NON-NLS-1$
-
-    private static final String PART_TYPE_DOC = "doc"; //$NON-NLS-1$
-    private static final String PART_TYPE_PAGE = "page"; //$NON-NLS-1$
-    private static final String PART_TYPE_WIDGET = "widget"; //$NON-NLS-1$
-
-    /**
-     * A {@link DescriptorManager}.
-     */
-    private DescriptorManager manager;
-
-    /**
-     * A xsl-for-output document.
-     */
-    private Document xslt;
-
-    /**
-     * Constructor.
-     * 
-     * @param manager
-     *            a {@link DescriptorManager}
-     */
-    public DescriptorReader(DescriptorManager manager) {
-        this.manager = manager;
-        this.xslt = DocumentHelper.createDocument();
-        xslt.addElement(new QName(ELEM_STYLESHEET, XSLT_NAMESPACE))
-                .addAttribute(ATTR_STYLESHEET_VERSION, VALUE_STYLESHEET_VERSION);
-    }
-
-    /**
-     * Gets a {@link Document}.
-     * 
-     * @return a {@link Document}
-     */
-    public Document getXsltForOutput() {
-        return xslt;
-    }
-
-    /**
-     * Parses a descriptor XML.
-     * 
-     * @param descriptorPath
-     *            a path of descriptor XML
-     */
-    public void parse(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
-        Document doc = null;
-
-        try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
-
-        if (doc != null && doc.getRootElement() != null) {
-            parseRoot(doc.getRootElement());
-        }
-    }
-
-    /**
-     * Parses a root element of descriptor XML.
-     * 
-     * @param root
-     *            a root element
-     */
-    private void parseRoot(Element root) {
-        if (root == null) {
-            return;
-        }
-
-        for (Object childObj : root.elements(ELEM_DOC)) {
-            parsePart((Element) childObj, new DocumentPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_PAGE)) {
-            parsePart((Element) childObj, new PagePartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_WIDGET)) {
-            parsePart((Element) childObj, new WidgetPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_TYPES)) {
-            parseTypes((Element) childObj);
-        }
-        for (Object childObj : root.elements(ELEM_EVENTTYPES)) {
-            parseEventTypes((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a doc, page or widget element of descriptor XML.
-     * 
-     * @param elem
-     *            a doc, page or widget element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePart(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String smallIcon = elem.attributeValue(ATTR_SMALLICON);
-        String icon16 = elem.attributeValue(ATTR_ICON_16);
-        String description = elem.attributeValue(ATTR_DESCRIPTION);
-        String paletteVisible = elem.attributeValue(ATTR_PALETTE_VISIBLE);
-        String helpCategory = elem.attributeValue(ATTR_HELPCATEGORY);
-        String helpContens = elem.attributeValue(ATTR_HELPCONTENS);
-        String width = elem.attributeValue(ATTR_FEEDBACKWIDTH);
-        String height = elem.attributeValue(ATTR_FEEDBACKHEIGHT);
-        String borderVisible = elem.attributeValue(ATTR_BORDER_VISIBLE);
-        String feedbackCondition = elem.attributeValue(ATTR_FEEDBACKCONDITION);
-        String guideText = elem.attributeValue(ATTR_GUIDE_TEXT);
-        String setStyle = elem.attributeValue(ATTR_SET_STYLE);
-        String uiSelector = elem.attributeValue(ATTR_UI_SELECTOR);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String childXpath = elem.attributeValue(ATTR_CHILDXPATH);
-
-        boolean boolpaletteVisible = true;
-        if (paletteVisible != null) {
-            boolpaletteVisible = Boolean.parseBoolean(paletteVisible);
-        }
-        boolean boolBorderVisible = Boolean.parseBoolean(borderVisible);
-        boolean boolSetStyle = Boolean.parseBoolean(setStyle);
-
-        part.init(id, displayName, smallIcon, icon16, description, boolpaletteVisible,
-                  helpCategory, helpContens, width, height, boolBorderVisible, feedbackCondition,
-                  guideText, boolSetStyle, uiSelector, xpath, childXpath);
-
-        if (part instanceof WidgetPartDescriptor) {
-            String categories = elem.attributeValue(ATTR_CATEGORY);
-            if (categories != null) {
-                String[] categoriesArray = categories.split(BuilderConstants.COMMA);
-                ((WidgetPartDescriptor) part).setCategories(Arrays.asList(categoriesArray));
-            }
-        }
-
-        boolean isNoRelation = true;
-        for (Object contentObj : elem.elements(ELEM_RELATIONS)) {
-            parseRelations((Element) contentObj, part);
-            isNoRelation = false;
-        }
-
-        // This code remains for compatibility.
-        if (isNoRelation) {
-            for (Object contentObj : elem.elements(ELEM_CONTENT)) {
-                parseContent((Element) contentObj, part);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parsePartCondition((Element) childObj, part);
-        }
-
-        for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-            parseProperty((Element) propertyObj, part);
-        }
-
-        for (Object contentObj : elem.elements(ELEM_EVENT)) {
-            parseEvent((Element) contentObj, part);
-        }
-
-        parseXsltForOutput(elem);
-
-        manager.addPartDescriptor(part);
-    }
-
-    /**
-     * Parses a relation element of descriptor XML.
-     * 
-     * @param elem
-     *            a relation element
-     * @param property
-     *            a {@link PartDescriptor}
-     */
-    private void parseRelations(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOPARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONTENT)) {
-            Element childElem = (Element) childObj;
-            parseContent2(childElem, relation);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOCONTENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoContentPartIds(ids);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML. This method remains for compatibility.
-     * 
-     * @param elem
-     *            a content element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseContent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        parseContent2(elem, relation);
-
-        String excludeIds = elem.attributeValue(ATTR_EXCLUDE_IDS);
-        String parentIds = elem.attributeValue(ATTR_PARENT_IDS);
-
-        if (excludeIds != null) {
-            relation.addNoContentPartIds(excludeIds);
-        }
-        if (parentIds != null) {
-            relation.addParentPartIds(parentIds);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML.
-     * 
-     * @param elem
-     *            a content element
-     * @param relation
-     *            a {@link RelationDescriptor}
-     */
-    private void parseContent2(Element elem, RelationDescriptor relation) {
-        if (elem == null || relation == null) {
-            return;
-        }
-
-        String ids = elem.attributeValue(ATTR_IDS);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String min = elem.attributeValue(ATTR_MIN);
-        String max = elem.attributeValue(ATTR_MAX);
-        String exclusiveGroup = elem.attributeValue(ATTR_EXCLUSIVE_GROUP);
-        ContentDescriptor.PartType partType = ContentDescriptor.PartType.ANY_PART;
-
-        if (type != null) {
-            if (type.equals(PART_TYPE_DOC)) {
-                partType = ContentDescriptor.PartType.DOCUMENT_PART;
-            } else if (type.equals(PART_TYPE_PAGE)) {
-                partType = ContentDescriptor.PartType.PAGE_PART;
-            } else if (type.equals(PART_TYPE_WIDGET)) {
-                partType = ContentDescriptor.PartType.WIDGET_PART;
-            }
-        }
-
-        ContentDescriptor content = new ContentDescriptor();
-        content.setPartType(partType);
-        if (ids != null) {
-            content.setPartIds(ids);
-        }
-        if (min != null) {
-            content.setMin(Integer.valueOf(min).intValue());
-        }
-        if (max != null) {
-            content.setMax(Integer.valueOf(max).intValue());
-        }
-        if (exclusiveGroup != null) {
-            content.setExclusiveGroup(exclusiveGroup);
-        }
-        relation.addContent(content);
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePartCondition(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-
-        PartConditionDescriptor condition =
-                new PartConditionDescriptor(name, value, target, targetValue);
-        part.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses a property element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseProperty(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String notsupported = elem.attributeValue(ATTR_NOT_SUPPORTED);
-        if (notsupported != null && notsupported.equals(BuilderConstants.TRUE)) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-
-        if (tooltip == null) {
-            tooltip = displayName;
-        } else {
-            tooltip =
-                    displayName + BuilderConstants.SPACE + BuilderConstants.DASH
-                            + BuilderConstants.SPACE + tooltip;
-        }
-
-        PropertyDescriptor property =
-                new PropertyDescriptor(name, type, displayName, tooltip, defaultValue, initValue,
-                                       category, xpath, manager);
-        part.addPropertyDescriptor(property);
-
-        if (TypeDescriptor.ID_OF_GROUP.equals(type) || TypeDescriptor.ID_OF_GROUP_TEXT.equals(type)
-                || TypeDescriptor.ID_OF_GROUP_POSITION.equals(type)) {
-            for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-                parseChildProperty((Element) propertyObj, property);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, property);
-        }
-    }
-
-    /**
-     * Parses a child property element of descriptor XML.
-     * 
-     * @param elem
-     *            a child property
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseChildProperty(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String selector = elem.attributeValue(ATTR_SELECTOR);
-
-        PropertyDescriptor childProperty =
-                new ChildPropertyDescriptor(name, type, displayName, tooltip, defaultValue,
-                                            initValue, category, xpath, selector, manager);
-        property.addChildPropertyDescriptor(childProperty);
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, childProperty);
-        }
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a condition element
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseCondition(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-        String error = elem.attributeValue(ATTR_ERROR);
-
-        PropertyConditionDescriptor condition =
-                new PropertyConditionDescriptor(name, value, target, targetValue, error);
-        property.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses an event element of descriptor XML.
-     * 
-     * @param elem
-     *            an event element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseEvent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String eventType = elem.attributeValue(ATTR_EVENTTYPE);
-        EventDescriptor event = new EventDescriptor(name, displayName, eventType, manager);
-        part.addEventDescriptor(event);
-    }
-
-    /**
-     * Parses a types element of descriptor XML.
-     * 
-     * @param elem
-     *            a types element
-     */
-    private void parseTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_TYPE)) {
-            parseType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a type element of descriptor XML.
-     * 
-     * @param elem
-     *            a type element
-     */
-    private void parseType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-
-        TypeDescriptor type = manager.getTypeDescriptor(id);
-
-        if (type == null) {
-            type = new TypeDescriptor(id);
-            manager.addTypeDescriptor(type);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONSTANT)) {
-            type.addAvailableConstant(parseConstant((Element) childObj));
-        }
-
-    }
-
-    /**
-     * Parses a constant element of descriptor XML.
-     * 
-     * @param elem
-     *            a constant element
-     */
-    private ConstantDescriptor parseConstant(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String value = elem.attributeValue(ATTR_VALUE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String icon = elem.attributeValue(ATTR_ICON);
-
-        if (displayName == null) {
-            displayName = value;
-        }
-
-        return new ConstantDescriptor(value, displayName, icon);
-    }
-
-    /**
-     * Parses an eventTypes element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventTypes element
-     */
-    private void parseEventTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_EVENTTYPE)) {
-            parseEventType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses an eventType element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventType element
-     */
-    private void parseEventType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        if (manager.getEventTypeDescriptor(id) != null) {
-            return;
-        }
-
-        EventTypeDescriptor eventType = new EventTypeDescriptor(id);
-
-        for (Object childObj : elem.elements(ELEM_DEFAULTCODE)) {
-            eventType.setDefaultCode(((Element) childObj).getText());
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARAM)) {
-            eventType.addEventParameter(parseParameter((Element) childObj));
-        }
-
-        manager.addEventTypeDescriptor(eventType);
-    }
-
-    /**
-     * Parses a param element of descriptor XML.
-     * 
-     * @param elem
-     *            a param element
-     */
-    private EventParamDescriptor parseParameter(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-
-        return new EventParamDescriptor(name, type);
-    }
-
-    /**
-     * Parses a xsl-for-output element of descriptor XML.
-     * 
-     * @param elem
-     *            a xsl-for-output element
-     */
-    private void parseXsltForOutput(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        Element code = elem.element(ELEM_XSL_FOR_OUTPUT);
-        if (code != null) {
-            Element child = null;
-            for (Object nodeObj : code.elements()) {
-                child = (Element) nodeObj;
-                xslt.getRootElement().add(child.createCopy());
-            }
-        }
-    }
+       // Element name
+       private static final String ELEM_DOC = "doc"; //$NON-NLS-1$
+       private static final String ELEM_PAGE = "page"; //$NON-NLS-1$
+       private static final String ELEM_WIDGET = "widget"; //$NON-NLS-1$
+       private static final String ELEM_CONTENT = "content"; //$NON-NLS-1$
+       private static final String ELEM_NOCONTENT = "nocontent"; //$NON-NLS-1$
+       private static final String ELEM_PARENT = "parent"; //$NON-NLS-1$
+       private static final String ELEM_NOPARENT = "noparent"; //$NON-NLS-1$
+       private static final String ELEM_RELATIONS = "relations"; //$NON-NLS-1$
+       private static final String ELEM_PROPERTY = "property"; //$NON-NLS-1$
+       private static final String ELEM_CONDITION = "condition"; //$NON-NLS-1$
+       private static final String ELEM_EVENT = "event"; //$NON-NLS-1$
+       private static final String ELEM_XSL_FOR_OUTPUT = "xsl-for-output"; //$NON-NLS-1$
+       private static final String ELEM_TYPES = "types"; //$NON-NLS-1$
+       private static final String ELEM_TYPE = "type"; //$NON-NLS-1$
+       private static final String ELEM_CONSTANT = "constant"; //$NON-NLS-1$
+       private static final String ELEM_EVENTTYPES = "eventTypes"; //$NON-NLS-1$
+       private static final String ELEM_EVENTTYPE = "eventType"; //$NON-NLS-1$
+       private static final String ELEM_DEFAULTCODE = "defaultCode"; //$NON-NLS-1$
+       private static final String ELEM_PARAM = "param"; //$NON-NLS-1$
+
+       // Attribute name
+       private static final String ATTR_ID = "id"; //$NON-NLS-1$
+       private static final String ATTR_DISPLAYNAME = "displayName"; //$NON-NLS-1$
+       private static final String ATTR_SMALLICON = "smallIcon"; //$NON-NLS-1$
+       private static final String ATTR_ICON_16 = "icon.16"; //$NON-NLS-1$
+       private static final String ATTR_ICON = "icon"; //$NON-NLS-1$
+       private static final String ATTR_CATEGORY = "category"; //$NON-NLS-1$
+       private static final String ATTR_DESCRIPTION = "description"; //$NON-NLS-1$
+       private static final String ATTR_PALETTE_VISIBLE = "paletteVisible"; //$NON-NLS-1$
+       private static final String ATTR_HELPCATEGORY = "helpCategory"; //$NON-NLS-1$
+       private static final String ATTR_HELPCONTENS = "helpContents"; //$NON-NLS-1$
+       private static final String ATTR_FEEDBACKWIDTH = "feedbackWidth"; //$NON-NLS-1$
+       private static final String ATTR_FEEDBACKHEIGHT = "feedbackHeight"; //$NON-NLS-1$
+       private static final String ATTR_BORDER_VISIBLE = "borderVisible"; //$NON-NLS-1$
+       private static final String ATTR_FEEDBACKCONDITION = "feedbackCondition"; //$NON-NLS-1$
+       private static final String ATTR_GUIDE_TEXT = "guideText"; //$NON-NLS-1$
+       private static final String ATTR_SET_STYLE = "setStyle"; //$NON-NLS-1$
+       private static final String ATTR_UI_SELECTOR = "uiSelector"; //$NON-NLS-1$
+       private static final String ATTR_XPATH = "xpath"; //$NON-NLS-1$
+       private static final String ATTR_CHILDXPATH = "childXpath"; //$NON-NLS-1$
+       private static final String ATTR_IDS = "ids"; //$NON-NLS-1$
+       private static final String ATTR_EXCLUDE_IDS = "exclude-ids"; //$NON-NLS-1$
+       private static final String ATTR_PARENT_IDS = "parent-ids"; //$NON-NLS-1$
+       private static final String ATTR_EXCLUSIVE_GROUP = "exclusiveGroup"; //$NON-NLS-1$
+       private static final String ATTR_MIN = "min"; //$NON-NLS-1$
+       private static final String ATTR_MAX = "max"; //$NON-NLS-1$
+       private static final String ATTR_NAME = "name"; //$NON-NLS-1$
+       private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
+       private static final String ATTR_DEFAULT = "default"; //$NON-NLS-1$
+       private static final String ATTR_INITVALUE = "initValue"; //$NON-NLS-1$
+       private static final String ATTR_SELECTOR = "selector"; //$NON-NLS-1$
+       private static final String ATTR_NOT_SUPPORTED = "notsupported"; //$NON-NLS-1$
+       private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
+       private static final String ATTR_TARGET = "target"; //$NON-NLS-1$
+       private static final String ATTR_TARGETVALUE = "targetValue"; //$NON-NLS-1$
+       private static final String ATTR_TOOLTIP = "tooltip"; //$NON-NLS-1$
+       private static final String ATTR_ERROR = "error"; //$NON-NLS-1$
+       private static final String ATTR_EVENTTYPE = "eventType"; //$NON-NLS-1$
+
+       // private static final Namespace XSLT_NAMESPACE =
+       //        new Namespace("xsl", "http://www.w3.org/1999/XSL/Transform"); //$NON-NLS-1$ //$NON-NLS-2$
+
+       private static final String XSLT_TAG = "xsl"; //$NON-NLS-1$
+       private static final String XSLT_NAMESPACE = "http://www.w3.org/1999/XSL/Transform"; //$NON-NLS-1$
+       private static final String ELEM_STYLESHEET = "stylesheet"; //$NON-NLS-1$
+       private static final String ATTR_STYLESHEET_VERSION = "version"; //$NON-NLS-1$
+       private static final String VALUE_STYLESHEET_VERSION = "1.0"; //$NON-NLS-1$
+
+       private static final String PART_TYPE_DOC = "doc"; //$NON-NLS-1$
+       private static final String PART_TYPE_PAGE = "page"; //$NON-NLS-1$
+       private static final String PART_TYPE_WIDGET = "widget"; //$NON-NLS-1$
+
+       /**
+        * A {@link DescriptorManager}.
+        */
+       private DescriptorManager manager;
+
+       /**
+        * A xsl-for-output document.
+        */
+       private Document xslt;
+       private Element xslRoot;
+
+       /**
+        * Constructor.
+        * 
+        * @param manager
+        *            a {@link DescriptorManager}
+        */
+       public DescriptorReader(DescriptorManager manager) {
+               this.manager = manager;
+       }
+
+       /**
+        * Gets a {@link Document}.
+        * 
+        * @return a {@link Document}
+        */
+       public Document getXsltForOutput() {
+               return xslt;
+       }
+
+       /**
+        * Parses a descriptor XML.
+        * 
+        * @param descriptorPath
+        *            a path of descriptor XML
+        */
+       public void parse(URL descriptorPath) {
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               factory.setNamespaceAware(true);
+
+               DocumentBuilder builder = null;
+               Document doc = null;
+
+               try {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(descriptorPath.toURI().toString());
+               } catch (URISyntaxException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               }
+
+               xslRoot = doc.createElement("xsl:stylesheet");
+               xslRoot.setAttribute("xmlns:xsl", XSLT_NAMESPACE);
+               xslRoot.setAttribute(ATTR_STYLESHEET_VERSION, VALUE_STYLESHEET_VERSION);
+
+               if (doc != null && doc.getDocumentElement() != null) {
+                       parseRoot(doc.getDocumentElement());
+               }
+
+               xslt = builder.newDocument();
+               xslt.appendChild(xslt.importNode(xslRoot, true));
+               
+               // TODO: Temporary code. Expected to be simplified. 
+               TransformerFactory transFactory = TransformerFactory.newInstance();
+               StringWriter stringwriter = new StringWriter();
+               try {
+                       Transformer transformerx = transFactory.newTransformer();
+                       transformerx.transform(new DOMSource(xslt), new StreamResult(stringwriter));
+                       xslt = builder.parse(new StringBufferInputStream(stringwriter.toString()));
+               } catch (TransformerConfigurationException e1) {
+                       e1.printStackTrace();
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               } catch (FileNotFoundException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+       }
+
+       /**
+        * Parses a root element of descriptor XML.
+        * 
+        * @param root
+        *            a root element
+        */
+       private void parseRoot(Element root) {
+               if (root == null) {
+                       return;
+               }
+
+               NodeList elemList = root.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               if (childNode.getNodeName().equals(ELEM_DOC)) {
+                                       parsePart((Element) childNode, new DocumentPartDescriptor());
+                               } else if (childNode.getNodeName().equals(ELEM_PAGE)) {
+                                       parsePart((Element) childNode, new PagePartDescriptor());
+                               } else if (childNode.getNodeName().equals(ELEM_WIDGET)) {
+                                       parsePart((Element) childNode, new WidgetPartDescriptor());
+                               } else if (childNode.getNodeName().equals(ELEM_TYPES)) {
+                                       parseTypes((Element) childNode);
+                               } else if (childNode.getNodeName().equals(ELEM_EVENTTYPES)) {
+                                       parseEventTypes((Element) childNode);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Parses a doc, page or widget element of descriptor XML.
+        * 
+        * @param elem
+        *            a doc, page or widget element
+        * @param part
+        *            a {@link PartDescriptor}
+        */
+       private void parsePart(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               String id = elem.getAttribute(ATTR_ID);
+               String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+               String smallIcon = elem.getAttribute(ATTR_SMALLICON);
+               String icon16 = elem.getAttribute(ATTR_ICON_16);
+               String description = elem.getAttribute(ATTR_DESCRIPTION);
+               String paletteVisible = elem.getAttribute(ATTR_PALETTE_VISIBLE);
+               String helpCategory = elem.getAttribute(ATTR_HELPCATEGORY);
+               String helpContens = elem.getAttribute(ATTR_HELPCONTENS);
+               String width = elem.getAttribute(ATTR_FEEDBACKWIDTH);
+               String height = elem.getAttribute(ATTR_FEEDBACKHEIGHT);
+               String borderVisible = elem.getAttribute(ATTR_BORDER_VISIBLE);
+               String feedbackCondition = elem.getAttribute(ATTR_FEEDBACKCONDITION);
+               String guideText = elem.getAttribute(ATTR_GUIDE_TEXT);
+               String setStyle = elem.getAttribute(ATTR_SET_STYLE);
+               String uiSelector = elem.getAttribute(ATTR_UI_SELECTOR);
+               String xpath = elem.getAttribute(ATTR_XPATH);
+               String childXpath = elem.getAttribute(ATTR_CHILDXPATH);
+
+               boolean boolpaletteVisible = true;
+               if (paletteVisible != null) {
+                       boolpaletteVisible = Boolean.parseBoolean(paletteVisible);
+               }
+               boolean boolBorderVisible = Boolean.parseBoolean(borderVisible);
+               boolean boolSetStyle = Boolean.parseBoolean(setStyle);
+
+               part.init(id, displayName, smallIcon, icon16, description,
+                               boolpaletteVisible, helpCategory, helpContens, width, height,
+                               boolBorderVisible, feedbackCondition, guideText, boolSetStyle,
+                               uiSelector, xpath, childXpath);
+
+               if (part instanceof WidgetPartDescriptor) {
+                       String categories = elem.getAttribute(ATTR_CATEGORY);
+                       if (categories != null) {
+                               String[] categoriesArray = categories
+                                               .split(BuilderConstants.COMMA);
+                               ((WidgetPartDescriptor) part).setCategories(Arrays
+                                               .asList(categoriesArray));
+                       }
+               }
+
+               boolean isNoRelation = true;
+               NodeList elemList1 = elem.getElementsByTagName(ELEM_RELATIONS);
+               for (int i = 0; i < elemList1.getLength(); i++) {
+                       parseRelations((Element) elemList1.item(i), part);
+                       isNoRelation = false;
+               }
+
+               // This code remains for compatibility.
+               if (isNoRelation) {
+                       NodeList elemList = elem.getElementsByTagName(ELEM_CONTENT);
+                       for (int i = 0; i < elemList.getLength(); i++) {
+                               parseContent((Element) elemList.item(i), part);
+                       }
+               }
+
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               if (childNode.getNodeName().equals(ELEM_CONDITION)) {
+                                       parsePartCondition((Element) childNode, part);
+                               } else if (childNode.getNodeName().equals(ELEM_PROPERTY)) {
+                                       parseProperty((Element) childNode, part);
+                               } else if (childNode.getNodeName().equals(ELEM_EVENT)) {
+                                       parseEvent((Element) childNode, part);
+                               } else if (childNode.getNodeName().equals(ELEM_XSL_FOR_OUTPUT)) {
+                                       parseXsltForOutput((Element) childNode, xslRoot);
+                               }
+                       }
+               }
+
+               //parseXsltForOutput(elem);
+
+               manager.addPartDescriptor(part);
+       }
+
+       /**
+        * Parses a relation element of descriptor XML.
+        * 
+        * @param elem
+        *            a relation element
+        * @param property
+        *            a {@link PartDescriptor}
+        */
+       private void parseRelations(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               RelationDescriptor relation = part.getRelation();
+               if (relation == null) {
+                       return;
+               }
+
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               Element childElem = (Element) childNode;
+                               if (childNode.getNodeName().equals(ELEM_PARENT)) {
+                                       String ids = childElem.getAttribute(ATTR_IDS);
+                                       relation.addParentPartIds(ids);
+                               } else if (childNode.getNodeName().equals(ELEM_NOPARENT)) {
+                                       String ids = childElem.getAttribute(ATTR_IDS);
+                                       relation.addNoParentPartIds(ids);
+                               } else if (childNode.getNodeName().equals(ELEM_CONTENT)) {
+                                       parseContent2(childElem, relation);
+                               } else if (childNode.getNodeName().equals(ELEM_NOPARENT)) {
+                                       String ids = childElem.getAttribute(ATTR_IDS);
+                                       relation.addNoContentPartIds(ids);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Parses a content element of descriptor XML. This method remains for
+        * compatibility.
+        * 
+        * @param elem
+        *            a content element
+        * @param part
+        *            a {@link PartDescriptor}
+        */
+       private void parseContent(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               RelationDescriptor relation = part.getRelation();
+               if (relation == null) {
+                       return;
+               }
+
+               parseContent2(elem, relation);
+
+               String excludeIds = elem.getAttribute(ATTR_EXCLUDE_IDS);
+               String parentIds = elem.getAttribute(ATTR_PARENT_IDS);
+
+               if (excludeIds != null) {
+                       relation.addNoContentPartIds(excludeIds);
+               }
+               if (parentIds != null) {
+                       relation.addParentPartIds(parentIds);
+               }
+       }
+
+       /**
+        * Parses a content element of descriptor XML.
+        * 
+        * @param elem
+        *            a content element
+        * @param relation
+        *            a {@link RelationDescriptor}
+        */
+       private void parseContent2(Element elem, RelationDescriptor relation) {
+               if (elem == null || relation == null) {
+                       return;
+               }
+
+               String ids = elem.getAttribute(ATTR_IDS);
+               String type = elem.getAttribute(ATTR_TYPE);
+               String min = elem.getAttribute(ATTR_MIN);
+               String max = elem.getAttribute(ATTR_MAX);
+               String exclusiveGroup = elem.getAttribute(ATTR_EXCLUSIVE_GROUP);
+               ContentDescriptor.PartType partType = ContentDescriptor.PartType.ANY_PART;
+
+               if (type != null && !type.isEmpty()) {
+                       if (type.equals(PART_TYPE_DOC)) {
+                               partType = ContentDescriptor.PartType.DOCUMENT_PART;
+                       } else if (type.equals(PART_TYPE_PAGE)) {
+                               partType = ContentDescriptor.PartType.PAGE_PART;
+                       } else if (type.equals(PART_TYPE_WIDGET)) {
+                               partType = ContentDescriptor.PartType.WIDGET_PART;
+                       }
+               }
+
+               ContentDescriptor content = new ContentDescriptor();
+               content.setPartType(partType);
+               if (ids != null) {
+                       content.setPartIds(ids);
+               }
+               if (min != null && !min.isEmpty()) {
+                       content.setMin(Integer.valueOf(min).intValue());
+               }
+               if (max != null && !max.isEmpty()) {
+                       content.setMax(Integer.valueOf(max).intValue());
+               }
+               if (exclusiveGroup != null && !exclusiveGroup.isEmpty()) {
+                       content.setExclusiveGroup(exclusiveGroup);
+               }
+               relation.addContent(content);
+       }
+
+       /**
+        * Parses a condition element of descriptor XML.
+        * 
+        * @param elem
+        *            a property element
+        * @param part
+        *            a {@link PartDescriptor}
+        */
+       private void parsePartCondition(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String value = elem.getAttribute(ATTR_VALUE);
+               String target = elem.getAttribute(ATTR_TARGET);
+               String targetValue = elem.getAttribute(ATTR_TARGETVALUE);
+
+               PartConditionDescriptor condition = new PartConditionDescriptor(name,
+                               value, target, targetValue);
+               part.addConditionDescriptor(condition);
+       }
+
+       /**
+        * Parses a property element of descriptor XML.
+        * 
+        * @param elem
+        *            a property element
+        * @param part
+        *            a {@link PartDescriptor}
+        */
+       private void parseProperty(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               String notsupported = elem.getAttribute(ATTR_NOT_SUPPORTED);
+               if (notsupported != null && notsupported.equals(BuilderConstants.TRUE)) {
+                       return;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String type = elem.getAttribute(ATTR_TYPE);
+               String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+               String tooltip = elem.getAttribute(ATTR_TOOLTIP);
+               String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+               String initValue = elem.getAttribute(ATTR_INITVALUE);
+               String category = elem.getAttribute(ATTR_CATEGORY);
+               String xpath = elem.getAttribute(ATTR_XPATH);
+
+               if (tooltip == null) {
+                       tooltip = displayName;
+               } else {
+                       tooltip = displayName + BuilderConstants.SPACE
+                                       + BuilderConstants.DASH + BuilderConstants.SPACE + tooltip;
+               }
+
+               PropertyDescriptor property = new PropertyDescriptor(name, type,
+                               displayName, tooltip, defaultValue, initValue, category, xpath,
+                               manager);
+               part.addPropertyDescriptor(property);
+
+               if (TypeDescriptor.ID_OF_GROUP.equals(type)
+                               || TypeDescriptor.ID_OF_GROUP_TEXT.equals(type)
+                               || TypeDescriptor.ID_OF_GROUP_POSITION.equals(type)) {
+                       NodeList elemList = elem.getElementsByTagName(ELEM_PROPERTY);
+                       for (int i = 0; i < elemList.getLength(); i++) {
+                               parseChildProperty((Element) elemList.item(i), property);
+                       }
+               }
+
+               NodeList elemList = elem.getElementsByTagName(ELEM_CONDITION);
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       parseCondition((Element) elemList.item(i), property);
+               }
+       }
+
+       /**
+        * Parses a child property element of descriptor XML.
+        * 
+        * @param elem
+        *            a child property
+        * @param property
+        *            a {@link PropertyDescriptor}
+        */
+       private void parseChildProperty(Element elem, PropertyDescriptor property) {
+               if (elem == null || property == null) {
+                       return;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String type = elem.getAttribute(ATTR_TYPE);
+               String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+               String tooltip = elem.getAttribute(ATTR_TOOLTIP);
+               String defaultValue = elem.getAttribute(ATTR_DEFAULT);
+               String initValue = elem.getAttribute(ATTR_INITVALUE);
+               String category = elem.getAttribute(ATTR_CATEGORY);
+               String xpath = elem.getAttribute(ATTR_XPATH);
+               String selector = elem.getAttribute(ATTR_SELECTOR);
+
+               PropertyDescriptor childProperty = new ChildPropertyDescriptor(name,
+                               type, displayName, tooltip, defaultValue, initValue, category,
+                               xpath, selector, manager);
+               property.addChildPropertyDescriptor(childProperty);
+
+               NodeList elemList = elem.getElementsByTagName(ELEM_CONDITION);
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       parseCondition((Element) elemList.item(i), childProperty);
+               }
+       }
+
+       /**
+        * Parses a condition element of descriptor XML.
+        * 
+        * @param elem
+        *            a condition element
+        * @param property
+        *            a {@link PropertyDescriptor}
+        */
+       private void parseCondition(Element elem, PropertyDescriptor property) {
+               if (elem == null || property == null) {
+                       return;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String value = elem.getAttribute(ATTR_VALUE);
+               String target = elem.getAttribute(ATTR_TARGET);
+               String targetValue = elem.getAttribute(ATTR_TARGETVALUE);
+               String error = elem.getAttribute(ATTR_ERROR);
+
+               PropertyConditionDescriptor condition = new PropertyConditionDescriptor(
+                               name, value, target, targetValue, error);
+               property.addConditionDescriptor(condition);
+       }
+
+       /**
+        * Parses an event element of descriptor XML.
+        * 
+        * @param elem
+        *            an event element
+        * @param part
+        *            a {@link PartDescriptor}
+        */
+       private void parseEvent(Element elem, PartDescriptor part) {
+               if (elem == null || part == null) {
+                       return;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+               String eventType = elem.getAttribute(ATTR_EVENTTYPE);
+               EventDescriptor event = new EventDescriptor(name, displayName,
+                               eventType, manager);
+               part.addEventDescriptor(event);
+       }
+
+       /**
+        * Parses a types element of descriptor XML.
+        * 
+        * @param elem
+        *            a types element
+        */
+       private void parseTypes(Element elem) {
+               if (elem == null) {
+                       return;
+               }
+
+               NodeList elemList = elem.getElementsByTagName(ELEM_TYPE);
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       parseType((Element) elemList.item(i));
+               }
+       }
+
+       /**
+        * Parses a type element of descriptor XML.
+        * 
+        * @param elem
+        *            a type element
+        */
+       private void parseType(Element elem) {
+               if (elem == null) {
+                       return;
+               }
+
+               String id = elem.getAttribute(ATTR_ID);
+
+               TypeDescriptor type = manager.getTypeDescriptor(id);
+
+               if (type == null) {
+                       type = new TypeDescriptor(id);
+                       manager.addTypeDescriptor(type);
+               }
+
+               NodeList elemList = elem.getElementsByTagName(ELEM_CONSTANT);
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       type.addAvailableConstant(parseConstant((Element) elemList.item(i)));
+               }
+       }
+
+       /**
+        * Parses a constant element of descriptor XML.
+        * 
+        * @param elem
+        *            a constant element
+        */
+       private ConstantDescriptor parseConstant(Element elem) {
+               if (elem == null) {
+                       return null;
+               }
+
+               String value = elem.getAttribute(ATTR_VALUE);
+               String displayName = elem.getAttribute(ATTR_DISPLAYNAME);
+               String icon = elem.getAttribute(ATTR_ICON);
+
+               if (displayName == null) {
+                       displayName = value;
+               }
+
+               return new ConstantDescriptor(value, displayName, icon);
+       }
+
+       /**
+        * Parses an eventTypes element of descriptor XML.
+        * 
+        * @param elem
+        *            an eventTypes element
+        */
+       private void parseEventTypes(Element elem) {
+               if (elem == null) {
+                       return;
+               }
+
+               NodeList elemList = elem.getElementsByTagName(ELEM_EVENTTYPE);
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       parseEventType((Element) elemList.item(i));
+               }
+       }
+
+       /**
+        * Parses an eventType element of descriptor XML.
+        * 
+        * @param elem
+        *            an eventType element
+        */
+       private void parseEventType(Element elem) {
+               if (elem == null) {
+                       return;
+               }
+
+               String id = elem.getAttribute(ATTR_ID);
+               if (manager.getEventTypeDescriptor(id) != null) {
+                       return;
+               }
+
+               EventTypeDescriptor eventType = new EventTypeDescriptor(id);
+
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               Element childElem = (Element) childNode;
+                               if (childNode.getNodeName().equals(ELEM_DEFAULTCODE)) {
+                                       eventType.setDefaultCode(((Element) elemList.item(i))
+                                                       .getTextContent());
+                               } else if (childNode.getNodeName().equals(ELEM_PARAM)) {
+                                       eventType
+                                                       .addEventParameter(parseParameter((Element) elemList
+                                                                       .item(i)));
+                               }
+                       }
+               }
+
+               manager.addEventTypeDescriptor(eventType);
+       }
+
+       /**
+        * Parses a param element of descriptor XML.
+        * 
+        * @param elem
+        *            a param element
+        */
+       private EventParamDescriptor parseParameter(Element elem) {
+               if (elem == null) {
+                       return null;
+               }
+
+               String name = elem.getAttribute(ATTR_NAME);
+               String type = elem.getAttribute(ATTR_TYPE);
+
+               return new EventParamDescriptor(name, type);
+       }
+
+       /**
+        * Parses a xsl-for-output element of descriptor XML.
+        * 
+        * @param elem
+        *            a xsl-for-output element
+        */
+       private void parseXsltForOutput(Element elem, Element xslRoot) {
+               if (elem == null) {
+                       return;
+               }
+
+               NodeList elemList2 = elem.getChildNodes();
+               for (int j = 0; j < elemList2.getLength(); j++) {
+                       Node childNode = elemList2.item(j);
+                       if (childNode instanceof Element) {
+                               xslRoot.appendChild(childNode);
+                       }
+               }
+       }
 
 }
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_1.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_1.java
deleted file mode 100644 (file)
index 37825e8..0000000
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * UI Builder
- *
- * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-
-package org.tizen.webuibuilder.model.io;
-
-import java.net.URL;
-import java.util.Arrays;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
-import org.dom4j.io.SAXReader;
-import org.tizen.webuibuilder.BuilderConstants;
-import org.tizen.webuibuilder.model.descriptors.ChildPropertyDescriptor;
-import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
-import org.tizen.webuibuilder.model.descriptors.ContentDescriptor;
-import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
-import org.tizen.webuibuilder.model.descriptors.DocumentPartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventParamDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventTypeDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PagePartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PartConditionDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PropertyConditionDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PropertyDescriptor;
-import org.tizen.webuibuilder.model.descriptors.RelationDescriptor;
-import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
-import org.tizen.webuibuilder.model.descriptors.WidgetPartDescriptor;
-
-
-/**
- * A descriptor reader.
- */
-public class DescriptorReader_ver_1 {
-
-    // Element name
-    private static final String ELEM_DOC = "doc"; //$NON-NLS-1$
-    private static final String ELEM_PAGE = "page"; //$NON-NLS-1$
-    private static final String ELEM_WIDGET = "widget"; //$NON-NLS-1$
-    private static final String ELEM_CONTENT = "content"; //$NON-NLS-1$
-    private static final String ELEM_NOCONTENT = "nocontent"; //$NON-NLS-1$
-    private static final String ELEM_PARENT = "parent"; //$NON-NLS-1$
-    private static final String ELEM_NOPARENT = "noparent"; //$NON-NLS-1$
-    private static final String ELEM_RELATIONS = "relations"; //$NON-NLS-1$
-    private static final String ELEM_PROPERTY = "property"; //$NON-NLS-1$
-    private static final String ELEM_CONDITION = "condition"; //$NON-NLS-1$
-    private static final String ELEM_EVENT = "event"; //$NON-NLS-1$
-    private static final String ELEM_XSL_FOR_OUTPUT = "xsl-for-output"; //$NON-NLS-1$
-    private static final String ELEM_TYPES = "types"; //$NON-NLS-1$
-    private static final String ELEM_TYPE = "type"; //$NON-NLS-1$
-    private static final String ELEM_CONSTANT = "constant"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPES = "eventTypes"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPE = "eventType"; //$NON-NLS-1$
-    private static final String ELEM_DEFAULTCODE = "defaultCode"; //$NON-NLS-1$
-    private static final String ELEM_PARAM = "param"; //$NON-NLS-1$
-
-    // Attribute name
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_DISPLAYNAME = "displayName"; //$NON-NLS-1$
-    private static final String ATTR_SMALLICON = "smallIcon"; //$NON-NLS-1$
-    private static final String ATTR_ICON_16 = "icon.16"; //$NON-NLS-1$
-    private static final String ATTR_CATEGORY = "category"; //$NON-NLS-1$
-    private static final String ATTR_DESCRIPTION = "description"; //$NON-NLS-1$
-    private static final String ATTR_PALETTE_VISIBLE = "paletteVisible"; //$NON-NLS-1$
-    private static final String ATTR_HELPCATEGORY = "helpCategory"; //$NON-NLS-1$
-    private static final String ATTR_HELPCONTENS = "helpContents"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKWIDTH = "feedbackWidth"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKHEIGHT = "feedbackHeight"; //$NON-NLS-1$
-    private static final String ATTR_BORDER_VISIBLE = "borderVisible"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKCONDITION = "feedbackCondition"; //$NON-NLS-1$
-    private static final String ATTR_GUIDE_TEXT = "guideText"; //$NON-NLS-1$
-    private static final String ATTR_SET_STYLE = "setStyle"; //$NON-NLS-1$
-    private static final String ATTR_UI_SELECTOR = "uiSelector"; //$NON-NLS-1$
-    private static final String ATTR_XPATH = "xpath"; //$NON-NLS-1$
-    private static final String ATTR_CHILDXPATH = "childXpath"; //$NON-NLS-1$
-    private static final String ATTR_IDS = "ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUDE_IDS = "exclude-ids"; //$NON-NLS-1$
-    private static final String ATTR_PARENT_IDS = "parent-ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUSIVE_GROUP = "exclusiveGroup"; //$NON-NLS-1$
-    private static final String ATTR_MIN = "min"; //$NON-NLS-1$
-    private static final String ATTR_MAX = "max"; //$NON-NLS-1$
-    private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-    private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
-    private static final String ATTR_DEFAULT = "default"; //$NON-NLS-1$
-    private static final String ATTR_INITVALUE = "initValue"; //$NON-NLS-1$
-    private static final String ATTR_SELECTOR = "selector"; //$NON-NLS-1$
-    private static final String ATTR_NOT_SUPPORTED = "notsupported"; //$NON-NLS-1$
-    private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
-    private static final String ATTR_TARGET = "target"; //$NON-NLS-1$
-    private static final String ATTR_TARGETVALUE = "targetValue"; //$NON-NLS-1$
-    private static final String ATTR_TOOLTIP = "tooltip"; //$NON-NLS-1$
-    private static final String ATTR_ERROR = "error"; //$NON-NLS-1$
-    private static final String ATTR_EVENTTYPE = "eventType"; //$NON-NLS-1$
-
-    private static final Namespace XSLT_NAMESPACE =
-            new Namespace("xsl", "http://www.w3.org/1999/XSL/Transform"); //$NON-NLS-1$ //$NON-NLS-2$
-    private static final String ELEM_STYLESHEET = "stylesheet"; //$NON-NLS-1$
-    private static final String ATTR_STYLESHEET_VERSION = "version"; //$NON-NLS-1$
-    private static final String VALUE_STYLESHEET_VERSION = "1.0"; //$NON-NLS-1$
-
-    private static final String PART_TYPE_DOC = "doc"; //$NON-NLS-1$
-    private static final String PART_TYPE_PAGE = "page"; //$NON-NLS-1$
-    private static final String PART_TYPE_WIDGET = "widget"; //$NON-NLS-1$
-
-    /**
-     * A {@link DescriptorManager}.
-     */
-    private DescriptorManager manager;
-
-    /**
-     * A xsl-for-output document.
-     */
-    private Document xslt;
-
-    /**
-     * Constructor.
-     * 
-     * @param manager
-     *            a {@link DescriptorManager}
-     */
-    public DescriptorReader_ver_1(DescriptorManager manager) {
-        this.manager = manager;
-        this.xslt = DocumentHelper.createDocument();
-        xslt.addElement(new QName(ELEM_STYLESHEET, XSLT_NAMESPACE))
-                .addAttribute(ATTR_STYLESHEET_VERSION, VALUE_STYLESHEET_VERSION);
-    }
-
-    /**
-     * Gets a {@link Document}.
-     * 
-     * @return a {@link Document}
-     */
-    public Document getXsltForOutput() {
-        return xslt;
-    }
-
-    /**
-     * Parses a descriptor XML.
-     * 
-     * @param descriptorPath
-     *            a path of descriptor XML
-     */
-    public void parse(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
-        Document doc = null;
-
-        try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
-
-        if (doc != null && doc.getRootElement() != null) {
-            parseRoot(doc.getRootElement());
-        }
-    }
-
-    /**
-     * Parses a root element of descriptor XML.
-     * 
-     * @param root
-     *            a root element
-     */
-    private void parseRoot(Element root) {
-        if (root == null) {
-            return;
-        }
-
-        for (Object childObj : root.elements(ELEM_DOC)) {
-            parsePart((Element) childObj, new DocumentPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_PAGE)) {
-            parsePart((Element) childObj, new PagePartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_WIDGET)) {
-            parsePart((Element) childObj, new WidgetPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_TYPES)) {
-            parseTypes((Element) childObj);
-        }
-        for (Object childObj : root.elements(ELEM_EVENTTYPES)) {
-            parseEventTypes((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a doc, page or widget element of descriptor XML.
-     * 
-     * @param elem
-     *            a doc, page or widget element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePart(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String smallIcon = elem.attributeValue(ATTR_SMALLICON);
-        String icon16 = elem.attributeValue(ATTR_ICON_16);
-        String description = elem.attributeValue(ATTR_DESCRIPTION);
-        String paletteVisible = elem.attributeValue(ATTR_PALETTE_VISIBLE);
-        String helpCategory = elem.attributeValue(ATTR_HELPCATEGORY);
-        String helpContens = elem.attributeValue(ATTR_HELPCONTENS);
-        String width = elem.attributeValue(ATTR_FEEDBACKWIDTH);
-        String height = elem.attributeValue(ATTR_FEEDBACKHEIGHT);
-        String borderVisible = elem.attributeValue(ATTR_BORDER_VISIBLE);
-        String feedbackCondition = elem.attributeValue(ATTR_FEEDBACKCONDITION);
-        String guideText = elem.attributeValue(ATTR_GUIDE_TEXT);
-        String setStyle = elem.attributeValue(ATTR_SET_STYLE);
-        String uiSelector = elem.attributeValue(ATTR_UI_SELECTOR);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String childXpath = elem.attributeValue(ATTR_CHILDXPATH);
-
-        boolean boolpaletteVisible = true;
-        if (paletteVisible != null) {
-            boolpaletteVisible = Boolean.parseBoolean(paletteVisible);
-        }
-        boolean boolBorderVisible = Boolean.parseBoolean(borderVisible);
-        boolean boolSetStyle = Boolean.parseBoolean(setStyle);
-
-        part.init(id, displayName, smallIcon, icon16, description, boolpaletteVisible,
-                  helpCategory, helpContens, width, height, boolBorderVisible, feedbackCondition,
-                  guideText, boolSetStyle, uiSelector, xpath, childXpath);
-
-        if (part instanceof WidgetPartDescriptor) {
-            String categories = elem.attributeValue(ATTR_CATEGORY);
-            if (categories != null) {
-                String[] categoriesArray = categories.split(BuilderConstants.COMMA);
-                ((WidgetPartDescriptor) part).setCategories(Arrays.asList(categoriesArray));
-            }
-        }
-
-        boolean isNoRelation = true;
-        for (Object contentObj : elem.elements(ELEM_RELATIONS)) {
-            parseRelations((Element) contentObj, part);
-            isNoRelation = false;
-        }
-
-        // This code remains for compatibility.
-        if (isNoRelation) {
-            for (Object contentObj : elem.elements(ELEM_CONTENT)) {
-                parseContent((Element) contentObj, part);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parsePartCondition((Element) childObj, part);
-        }
-
-        for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-            parseProperty((Element) propertyObj, part);
-        }
-
-        for (Object contentObj : elem.elements(ELEM_EVENT)) {
-            parseEvent((Element) contentObj, part);
-        }
-
-        parseXsltForOutput(elem);
-
-        manager.addPartDescriptor(part);
-    }
-
-    /**
-     * Parses a relation element of descriptor XML.
-     * 
-     * @param elem
-     *            a relation element
-     * @param property
-     *            a {@link PartDescriptor}
-     */
-    private void parseRelations(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOPARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONTENT)) {
-            Element childElem = (Element) childObj;
-            parseContent2(childElem, relation);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOCONTENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoContentPartIds(ids);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML. This method remains for compatibility.
-     * 
-     * @param elem
-     *            a content element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseContent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        parseContent2(elem, relation);
-
-        String excludeIds = elem.attributeValue(ATTR_EXCLUDE_IDS);
-        String parentIds = elem.attributeValue(ATTR_PARENT_IDS);
-
-        if (excludeIds != null) {
-            relation.addNoContentPartIds(excludeIds);
-        }
-        if (parentIds != null) {
-            relation.addParentPartIds(parentIds);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML.
-     * 
-     * @param elem
-     *            a content element
-     * @param relation
-     *            a {@link RelationDescriptor}
-     */
-    private void parseContent2(Element elem, RelationDescriptor relation) {
-        if (elem == null || relation == null) {
-            return;
-        }
-
-        String ids = elem.attributeValue(ATTR_IDS);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String min = elem.attributeValue(ATTR_MIN);
-        String max = elem.attributeValue(ATTR_MAX);
-        String exclusiveGroup = elem.attributeValue(ATTR_EXCLUSIVE_GROUP);
-        ContentDescriptor.PartType partType = ContentDescriptor.PartType.ANY_PART;
-
-        if (type != null) {
-            if (type.equals(PART_TYPE_DOC)) {
-                partType = ContentDescriptor.PartType.DOCUMENT_PART;
-            } else if (type.equals(PART_TYPE_PAGE)) {
-                partType = ContentDescriptor.PartType.PAGE_PART;
-            } else if (type.equals(PART_TYPE_WIDGET)) {
-                partType = ContentDescriptor.PartType.WIDGET_PART;
-            }
-        }
-
-        ContentDescriptor content = new ContentDescriptor();
-        content.setPartType(partType);
-        if (ids != null) {
-            content.setPartIds(ids);
-        }
-        if (min != null) {
-            content.setMin(Integer.valueOf(min).intValue());
-        }
-        if (max != null) {
-            content.setMax(Integer.valueOf(max).intValue());
-        }
-        if (exclusiveGroup != null) {
-            content.setExclusiveGroup(exclusiveGroup);
-        }
-        relation.addContent(content);
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePartCondition(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-
-        PartConditionDescriptor condition =
-                new PartConditionDescriptor(name, value, target, targetValue);
-        part.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses a property element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseProperty(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String notsupported = elem.attributeValue(ATTR_NOT_SUPPORTED);
-        if (notsupported != null && notsupported.equals(BuilderConstants.TRUE)) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-
-        if (tooltip == null) {
-            tooltip = displayName;
-        } else {
-            tooltip =
-                    displayName + BuilderConstants.SPACE + BuilderConstants.DASH
-                            + BuilderConstants.SPACE + tooltip;
-        }
-
-        PropertyDescriptor property =
-                new PropertyDescriptor(name, type, displayName, tooltip, defaultValue, initValue,
-                                       category, xpath, manager);
-        part.addPropertyDescriptor(property);
-
-        if (TypeDescriptor.ID_OF_GROUP.equals(type) || TypeDescriptor.ID_OF_GROUP_TEXT.equals(type)
-                || TypeDescriptor.ID_OF_GROUP_POSITION.equals(type)) {
-            for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-                parseChildProperty((Element) propertyObj, property);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, property);
-        }
-    }
-
-    /**
-     * Parses a child property element of descriptor XML.
-     * 
-     * @param elem
-     *            a child property
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseChildProperty(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String selector = elem.attributeValue(ATTR_SELECTOR);
-
-        PropertyDescriptor childProperty =
-                new ChildPropertyDescriptor(name, type, displayName, tooltip, defaultValue,
-                                            initValue, category, xpath, selector, manager);
-        property.addChildPropertyDescriptor(childProperty);
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, childProperty);
-        }
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a condition element
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseCondition(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-        String error = elem.attributeValue(ATTR_ERROR);
-
-        PropertyConditionDescriptor condition =
-                new PropertyConditionDescriptor(name, value, target, targetValue, error);
-        property.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses an event element of descriptor XML.
-     * 
-     * @param elem
-     *            an event element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseEvent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String eventType = elem.attributeValue(ATTR_EVENTTYPE);
-        EventDescriptor event = new EventDescriptor(name, displayName, eventType, manager);
-        part.addEventDescriptor(event);
-    }
-
-    /**
-     * Parses a types element of descriptor XML.
-     * 
-     * @param elem
-     *            a types element
-     */
-    private void parseTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_TYPE)) {
-            parseType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a type element of descriptor XML.
-     * 
-     * @param elem
-     *            a type element
-     */
-    private void parseType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-
-        TypeDescriptor type = manager.getTypeDescriptor(id);
-
-        if (type == null) {
-            type = new TypeDescriptor(id);
-            manager.addTypeDescriptor(type);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONSTANT)) {
-            type.addAvailableConstant(parseConstant((Element) childObj));
-        }
-
-    }
-
-    /**
-     * Parses a constant element of descriptor XML.
-     * 
-     * @param elem
-     *            a constant element
-     */
-    private ConstantDescriptor parseConstant(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String value = elem.attributeValue(ATTR_VALUE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        if (displayName == null) {
-            displayName = value;
-        }
-
-        return new ConstantDescriptor(value, displayName);
-    }
-
-    /**
-     * Parses an eventTypes element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventTypes element
-     */
-    private void parseEventTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_EVENTTYPE)) {
-            parseEventType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses an eventType element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventType element
-     */
-    private void parseEventType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        if (manager.getEventTypeDescriptor(id) != null) {
-            return;
-        }
-
-        EventTypeDescriptor eventType = new EventTypeDescriptor(id);
-
-        for (Object childObj : elem.elements(ELEM_DEFAULTCODE)) {
-            eventType.setDefaultCode(((Element) childObj).getText());
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARAM)) {
-            eventType.addEventParameter(parseParameter((Element) childObj));
-        }
-
-        manager.addEventTypeDescriptor(eventType);
-    }
-
-    /**
-     * Parses a param element of descriptor XML.
-     * 
-     * @param elem
-     *            a param element
-     */
-    private EventParamDescriptor parseParameter(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-
-        return new EventParamDescriptor(name, type);
-    }
-
-    /**
-     * Parses a xsl-for-output element of descriptor XML.
-     * 
-     * @param elem
-     *            a xsl-for-output element
-     */
-    private void parseXsltForOutput(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        Element code = elem.element(ELEM_XSL_FOR_OUTPUT);
-        if (code != null) {
-            Element child = null;
-            for (Object nodeObj : code.elements()) {
-                child = (Element) nodeObj;
-                xslt.getRootElement().add(child.createCopy());
-            }
-        }
-    }
-
-}
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_2.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/DescriptorReader_ver_2.java
deleted file mode 100644 (file)
index a96874b..0000000
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * UI Builder
- *
- * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-
-package org.tizen.webuibuilder.model.io;
-
-import java.net.URL;
-import java.util.Arrays;
-
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
-import org.dom4j.io.SAXReader;
-import org.tizen.webuibuilder.BuilderConstants;
-import org.tizen.webuibuilder.model.descriptors.ChildPropertyDescriptor;
-import org.tizen.webuibuilder.model.descriptors.ConstantDescriptor;
-import org.tizen.webuibuilder.model.descriptors.ContentDescriptor;
-import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
-import org.tizen.webuibuilder.model.descriptors.DocumentPartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventParamDescriptor;
-import org.tizen.webuibuilder.model.descriptors.EventTypeDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PagePartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PartConditionDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PartDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PropertyConditionDescriptor;
-import org.tizen.webuibuilder.model.descriptors.PropertyDescriptor;
-import org.tizen.webuibuilder.model.descriptors.RelationDescriptor;
-import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
-import org.tizen.webuibuilder.model.descriptors.WidgetPartDescriptor;
-
-
-/**
- * A descriptor reader.
- */
-public class DescriptorReader_ver_2 {
-
-    // Element name
-    private static final String ELEM_DOC = "doc"; //$NON-NLS-1$
-    private static final String ELEM_PAGE = "page"; //$NON-NLS-1$
-    private static final String ELEM_WIDGET = "widget"; //$NON-NLS-1$
-    private static final String ELEM_CONTENT = "content"; //$NON-NLS-1$
-    private static final String ELEM_NOCONTENT = "nocontent"; //$NON-NLS-1$
-    private static final String ELEM_PARENT = "parent"; //$NON-NLS-1$
-    private static final String ELEM_NOPARENT = "noparent"; //$NON-NLS-1$
-    private static final String ELEM_RELATIONS = "relations"; //$NON-NLS-1$
-    private static final String ELEM_PROPERTY = "property"; //$NON-NLS-1$
-    private static final String ELEM_CONDITION = "condition"; //$NON-NLS-1$
-    private static final String ELEM_EVENT = "event"; //$NON-NLS-1$
-    private static final String ELEM_XSL_FOR_OUTPUT = "xsl-for-output"; //$NON-NLS-1$
-    private static final String ELEM_TYPES = "types"; //$NON-NLS-1$
-    private static final String ELEM_TYPE = "type"; //$NON-NLS-1$
-    private static final String ELEM_CONSTANT = "constant"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPES = "eventTypes"; //$NON-NLS-1$
-    private static final String ELEM_EVENTTYPE = "eventType"; //$NON-NLS-1$
-    private static final String ELEM_DEFAULTCODE = "defaultCode"; //$NON-NLS-1$
-    private static final String ELEM_PARAM = "param"; //$NON-NLS-1$
-
-    // Attribute name
-    private static final String ATTR_ID = "id"; //$NON-NLS-1$
-    private static final String ATTR_DISPLAYNAME = "displayName"; //$NON-NLS-1$
-    private static final String ATTR_SMALLICON = "smallIcon"; //$NON-NLS-1$
-    private static final String ATTR_ICON_16 = "icon.16"; //$NON-NLS-1$
-    private static final String ATTR_CATEGORY = "category"; //$NON-NLS-1$
-    private static final String ATTR_DESCRIPTION = "description"; //$NON-NLS-1$
-    private static final String ATTR_PALETTE_VISIBLE = "paletteVisible"; //$NON-NLS-1$
-    private static final String ATTR_HELPCATEGORY = "helpCategory"; //$NON-NLS-1$
-    private static final String ATTR_HELPCONTENS = "helpContents"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKWIDTH = "feedbackWidth"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKHEIGHT = "feedbackHeight"; //$NON-NLS-1$
-    private static final String ATTR_FEEDBACKCONDITION = "feedbackCondition"; //$NON-NLS-1$
-    private static final String ATTR_BORDER_VISIBLE = "borderVisible"; //$NON-NLS-1$
-    private static final String ATTR_GUIDE_TEXT = "guideText"; //$NON-NLS-1$
-    private static final String ATTR_SET_STYLE = "setStyle"; //$NON-NLS-1$
-    private static final String ATTR_UI_SELECTOR = "uiSelector"; //$NON-NLS-1$
-    private static final String ATTR_XPATH = "xpath"; //$NON-NLS-1$
-    private static final String ATTR_CHILDXPATH = "childXpath"; //$NON-NLS-1$
-    private static final String ATTR_IDS = "ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUDE_IDS = "exclude-ids"; //$NON-NLS-1$
-    private static final String ATTR_PARENT_IDS = "parent-ids"; //$NON-NLS-1$
-    private static final String ATTR_EXCLUSIVE_GROUP = "exclusiveGroup"; //$NON-NLS-1$
-    private static final String ATTR_MIN = "min"; //$NON-NLS-1$
-    private static final String ATTR_MAX = "max"; //$NON-NLS-1$
-    private static final String ATTR_NAME = "name"; //$NON-NLS-1$
-    private static final String ATTR_TYPE = "type"; //$NON-NLS-1$
-    private static final String ATTR_DEFAULT = "default"; //$NON-NLS-1$
-    private static final String ATTR_INITVALUE = "initValue"; //$NON-NLS-1$
-    private static final String ATTR_SELECTOR = "selector"; //$NON-NLS-1$
-    private static final String ATTR_NOT_SUPPORTED = "notsupported"; //$NON-NLS-1$
-    private static final String ATTR_VALUE = "value"; //$NON-NLS-1$
-    private static final String ATTR_TARGET = "target"; //$NON-NLS-1$
-    private static final String ATTR_TARGETVALUE = "targetValue"; //$NON-NLS-1$
-    private static final String ATTR_TOOLTIP = "tooltip"; //$NON-NLS-1$
-    private static final String ATTR_ERROR = "error"; //$NON-NLS-1$
-    private static final String ATTR_EVENTTYPE = "eventType"; //$NON-NLS-1$
-
-    private static final Namespace XSLT_NAMESPACE =
-            new Namespace("xsl", "http://www.w3.org/1999/XSL/Transform"); //$NON-NLS-1$ //$NON-NLS-2$
-    private static final String ELEM_STYLESHEET = "stylesheet"; //$NON-NLS-1$
-    private static final String ATTR_STYLESHEET_VERSION = "version"; //$NON-NLS-1$
-    private static final String VALUE_STYLESHEET_VERSION = "1.0"; //$NON-NLS-1$
-
-    private static final String PART_TYPE_DOC = "doc"; //$NON-NLS-1$
-    private static final String PART_TYPE_PAGE = "page"; //$NON-NLS-1$
-    private static final String PART_TYPE_WIDGET = "widget"; //$NON-NLS-1$
-
-    /**
-     * A {@link DescriptorManager}.
-     */
-    private DescriptorManager manager;
-
-    /**
-     * A xsl-for-output document.
-     */
-    private Document xslt;
-
-    /**
-     * Constructor.
-     * 
-     * @param manager
-     *            a {@link DescriptorManager}
-     */
-    public DescriptorReader_ver_2(DescriptorManager manager) {
-        this.manager = manager;
-        this.xslt = DocumentHelper.createDocument();
-        xslt.addElement(new QName(ELEM_STYLESHEET, XSLT_NAMESPACE))
-                .addAttribute(ATTR_STYLESHEET_VERSION, VALUE_STYLESHEET_VERSION);
-    }
-
-    /**
-     * Gets a {@link Document}.
-     * 
-     * @return a {@link Document}
-     */
-    public Document getXsltForOutput() {
-        return xslt;
-    }
-
-    /**
-     * Parses a descriptor XML.
-     * 
-     * @param descriptorPath
-     *            a path of descriptor XML
-     */
-    public void parse(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
-        Document doc = null;
-
-        try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
-            e.printStackTrace();
-        }
-
-        if (doc != null && doc.getRootElement() != null) {
-            parseRoot(doc.getRootElement());
-        }
-    }
-
-    /**
-     * Parses a root element of descriptor XML.
-     * 
-     * @param root
-     *            a root element
-     */
-    private void parseRoot(Element root) {
-        if (root == null) {
-            return;
-        }
-
-        for (Object childObj : root.elements(ELEM_DOC)) {
-            parsePart((Element) childObj, new DocumentPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_PAGE)) {
-            parsePart((Element) childObj, new PagePartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_WIDGET)) {
-            parsePart((Element) childObj, new WidgetPartDescriptor());
-        }
-        for (Object childObj : root.elements(ELEM_TYPES)) {
-            parseTypes((Element) childObj);
-        }
-        for (Object childObj : root.elements(ELEM_EVENTTYPES)) {
-            parseEventTypes((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a doc, page or widget element of descriptor XML.
-     * 
-     * @param elem
-     *            a doc, page or widget element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePart(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String smallIcon = elem.attributeValue(ATTR_SMALLICON);
-        String icon16 = elem.attributeValue(ATTR_ICON_16);
-        String description = elem.attributeValue(ATTR_DESCRIPTION);
-        String paletteVisible = elem.attributeValue(ATTR_PALETTE_VISIBLE);
-        String helpCategory = elem.attributeValue(ATTR_HELPCATEGORY);
-        String helpContens = elem.attributeValue(ATTR_HELPCONTENS);
-        String width = elem.attributeValue(ATTR_FEEDBACKWIDTH);
-        String height = elem.attributeValue(ATTR_FEEDBACKHEIGHT);
-        String borderVisible = elem.attributeValue(ATTR_BORDER_VISIBLE);
-        String feedbackCondition = elem.attributeValue(ATTR_FEEDBACKCONDITION);
-        String guideText = elem.attributeValue(ATTR_GUIDE_TEXT);
-        String setStyle = elem.attributeValue(ATTR_SET_STYLE);
-        String uiSelector = elem.attributeValue(ATTR_UI_SELECTOR);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String childXpath = elem.attributeValue(ATTR_CHILDXPATH);
-
-        boolean boolpaletteVisible = true;
-        if (paletteVisible != null) {
-            boolpaletteVisible = Boolean.parseBoolean(paletteVisible);
-        }
-        boolean boolBorderVisible = Boolean.parseBoolean(borderVisible);
-        boolean boolSetStyle = Boolean.parseBoolean(setStyle);
-
-        part.init(id, displayName, smallIcon, icon16, description, boolpaletteVisible,
-                  helpCategory, helpContens, width, height, boolBorderVisible, feedbackCondition,
-                  guideText, boolSetStyle, uiSelector, xpath, childXpath);
-
-        if (part instanceof WidgetPartDescriptor) {
-            String categories = elem.attributeValue(ATTR_CATEGORY);
-            if (categories != null) {
-                String[] categoriesArray = categories.split(BuilderConstants.COMMA);
-                ((WidgetPartDescriptor) part).setCategories(Arrays.asList(categoriesArray));
-            }
-        }
-
-        boolean isNoRelation = true;
-        for (Object contentObj : elem.elements(ELEM_RELATIONS)) {
-            parseRelations((Element) contentObj, part);
-            isNoRelation = false;
-        }
-
-        // This code remains for compatibility.
-        if (isNoRelation) {
-            for (Object contentObj : elem.elements(ELEM_CONTENT)) {
-                parseContent((Element) contentObj, part);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parsePartCondition((Element) childObj, part);
-        }
-
-        for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-            parseProperty((Element) propertyObj, part);
-        }
-
-        for (Object contentObj : elem.elements(ELEM_EVENT)) {
-            parseEvent((Element) contentObj, part);
-        }
-
-        parseXsltForOutput(elem);
-
-        manager.addPartDescriptor(part);
-    }
-
-    /**
-     * Parses a relation element of descriptor XML.
-     * 
-     * @param elem
-     *            a relation element
-     * @param property
-     *            a {@link PartDescriptor}
-     */
-    private void parseRelations(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOPARENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoParentPartIds(ids);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONTENT)) {
-            Element childElem = (Element) childObj;
-            parseContent2(childElem, relation);
-        }
-
-        for (Object childObj : elem.elements(ELEM_NOCONTENT)) {
-            Element childElem = (Element) childObj;
-            String ids = childElem.attributeValue(ATTR_IDS);
-
-            relation.addNoContentPartIds(ids);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML. This method remains for compatibility.
-     * 
-     * @param elem
-     *            a content element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseContent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        RelationDescriptor relation = part.getRelation();
-        if (relation == null) {
-            return;
-        }
-
-        parseContent2(elem, relation);
-
-        String excludeIds = elem.attributeValue(ATTR_EXCLUDE_IDS);
-        String parentIds = elem.attributeValue(ATTR_PARENT_IDS);
-
-        if (excludeIds != null) {
-            relation.addNoContentPartIds(excludeIds);
-        }
-        if (parentIds != null) {
-            relation.addParentPartIds(parentIds);
-        }
-    }
-
-    /**
-     * Parses a content element of descriptor XML.
-     * 
-     * @param elem
-     *            a content element
-     * @param relation
-     *            a {@link RelationDescriptor}
-     */
-    private void parseContent2(Element elem, RelationDescriptor relation) {
-        if (elem == null || relation == null) {
-            return;
-        }
-
-        String ids = elem.attributeValue(ATTR_IDS);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String min = elem.attributeValue(ATTR_MIN);
-        String max = elem.attributeValue(ATTR_MAX);
-        String exclusiveGroup = elem.attributeValue(ATTR_EXCLUSIVE_GROUP);
-        ContentDescriptor.PartType partType = ContentDescriptor.PartType.ANY_PART;
-
-        if (type != null) {
-            if (type.equals(PART_TYPE_DOC)) {
-                partType = ContentDescriptor.PartType.DOCUMENT_PART;
-            } else if (type.equals(PART_TYPE_PAGE)) {
-                partType = ContentDescriptor.PartType.PAGE_PART;
-            } else if (type.equals(PART_TYPE_WIDGET)) {
-                partType = ContentDescriptor.PartType.WIDGET_PART;
-            }
-        }
-
-        ContentDescriptor content = new ContentDescriptor();
-        content.setPartType(partType);
-        if (ids != null) {
-            content.setPartIds(ids);
-        }
-        if (min != null) {
-            content.setMin(Integer.valueOf(min).intValue());
-        }
-        if (max != null) {
-            content.setMax(Integer.valueOf(max).intValue());
-        }
-        if (exclusiveGroup != null) {
-            content.setExclusiveGroup(exclusiveGroup);
-        }
-        relation.addContent(content);
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parsePartCondition(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-
-        PartConditionDescriptor condition =
-                new PartConditionDescriptor(name, value, target, targetValue);
-        part.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses a property element of descriptor XML.
-     * 
-     * @param elem
-     *            a property element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseProperty(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String notsupported = elem.attributeValue(ATTR_NOT_SUPPORTED);
-        if (notsupported != null && notsupported.equals(BuilderConstants.TRUE)) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-
-        if (tooltip == null) {
-            tooltip = displayName;
-        } else {
-            tooltip =
-                    displayName + BuilderConstants.SPACE + BuilderConstants.DASH
-                            + BuilderConstants.SPACE + tooltip;
-        }
-
-        PropertyDescriptor property =
-                new PropertyDescriptor(name, type, displayName, tooltip, defaultValue, initValue,
-                                       category, xpath, manager);
-        part.addPropertyDescriptor(property);
-
-        if (TypeDescriptor.ID_OF_GROUP.equals(type) || TypeDescriptor.ID_OF_GROUP_TEXT.equals(type)
-                || TypeDescriptor.ID_OF_GROUP_POSITION.equals(type)) {
-            for (Object propertyObj : elem.elements(ELEM_PROPERTY)) {
-                parseChildProperty((Element) propertyObj, property);
-            }
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, property);
-        }
-    }
-
-    /**
-     * Parses a child property element of descriptor XML.
-     * 
-     * @param elem
-     *            a child property
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseChildProperty(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String tooltip = elem.attributeValue(ATTR_TOOLTIP);
-        String defaultValue = elem.attributeValue(ATTR_DEFAULT);
-        String initValue = elem.attributeValue(ATTR_INITVALUE);
-        String category = elem.attributeValue(ATTR_CATEGORY);
-        String xpath = elem.attributeValue(ATTR_XPATH);
-        String selector = elem.attributeValue(ATTR_SELECTOR);
-
-        PropertyDescriptor childProperty =
-                new ChildPropertyDescriptor(name, type, displayName, tooltip, defaultValue,
-                                            initValue, category, xpath, selector, manager);
-        property.addChildPropertyDescriptor(childProperty);
-
-        for (Object childObj : elem.elements(ELEM_CONDITION)) {
-            parseCondition((Element) childObj, childProperty);
-        }
-    }
-
-    /**
-     * Parses a condition element of descriptor XML.
-     * 
-     * @param elem
-     *            a condition element
-     * @param property
-     *            a {@link PropertyDescriptor}
-     */
-    private void parseCondition(Element elem, PropertyDescriptor property) {
-        if (elem == null || property == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String value = elem.attributeValue(ATTR_VALUE);
-        String target = elem.attributeValue(ATTR_TARGET);
-        String targetValue = elem.attributeValue(ATTR_TARGETVALUE);
-        String error = elem.attributeValue(ATTR_ERROR);
-
-        PropertyConditionDescriptor condition =
-                new PropertyConditionDescriptor(name, value, target, targetValue, error);
-        property.addConditionDescriptor(condition);
-    }
-
-    /**
-     * Parses an event element of descriptor XML.
-     * 
-     * @param elem
-     *            an event element
-     * @param part
-     *            a {@link PartDescriptor}
-     */
-    private void parseEvent(Element elem, PartDescriptor part) {
-        if (elem == null || part == null) {
-            return;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        String eventType = elem.attributeValue(ATTR_EVENTTYPE);
-        EventDescriptor event = new EventDescriptor(name, displayName, eventType, manager);
-        part.addEventDescriptor(event);
-    }
-
-    /**
-     * Parses a types element of descriptor XML.
-     * 
-     * @param elem
-     *            a types element
-     */
-    private void parseTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_TYPE)) {
-            parseType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses a type element of descriptor XML.
-     * 
-     * @param elem
-     *            a type element
-     */
-    private void parseType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-
-        TypeDescriptor type = manager.getTypeDescriptor(id);
-
-        if (type == null) {
-            type = new TypeDescriptor(id);
-            manager.addTypeDescriptor(type);
-        }
-
-        for (Object childObj : elem.elements(ELEM_CONSTANT)) {
-            type.addAvailableConstant(parseConstant((Element) childObj));
-        }
-
-    }
-
-    /**
-     * Parses a constant element of descriptor XML.
-     * 
-     * @param elem
-     *            a constant element
-     */
-    private ConstantDescriptor parseConstant(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String value = elem.attributeValue(ATTR_VALUE);
-        String displayName = elem.attributeValue(ATTR_DISPLAYNAME);
-        if (displayName == null) {
-            displayName = value;
-        }
-
-        return new ConstantDescriptor(value, displayName);
-    }
-
-    /**
-     * Parses an eventTypes element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventTypes element
-     */
-    private void parseEventTypes(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        for (Object childObj : elem.elements(ELEM_EVENTTYPE)) {
-            parseEventType((Element) childObj);
-        }
-    }
-
-    /**
-     * Parses an eventType element of descriptor XML.
-     * 
-     * @param elem
-     *            an eventType element
-     */
-    private void parseEventType(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        String id = elem.attributeValue(ATTR_ID);
-        if (manager.getEventTypeDescriptor(id) != null) {
-            return;
-        }
-
-        EventTypeDescriptor eventType = new EventTypeDescriptor(id);
-
-        for (Object childObj : elem.elements(ELEM_DEFAULTCODE)) {
-            eventType.setDefaultCode(((Element) childObj).getText());
-        }
-
-        for (Object childObj : elem.elements(ELEM_PARAM)) {
-            eventType.addEventParameter(parseParameter((Element) childObj));
-        }
-
-        manager.addEventTypeDescriptor(eventType);
-    }
-
-    /**
-     * Parses a param element of descriptor XML.
-     * 
-     * @param elem
-     *            a param element
-     */
-    private EventParamDescriptor parseParameter(Element elem) {
-        if (elem == null) {
-            return null;
-        }
-
-        String name = elem.attributeValue(ATTR_NAME);
-        String type = elem.attributeValue(ATTR_TYPE);
-
-        return new EventParamDescriptor(name, type);
-    }
-
-    /**
-     * Parses a xsl-for-output element of descriptor XML.
-     * 
-     * @param elem
-     *            a xsl-for-output element
-     */
-    private void parseXsltForOutput(Element elem) {
-        if (elem == null) {
-            return;
-        }
-
-        Element code = elem.element(ELEM_XSL_FOR_OUTPUT);
-        if (code != null) {
-            Element child = null;
-            for (Object nodeObj : code.elements()) {
-                child = (Element) nodeObj;
-                xslt.getRootElement().add(child.createCopy());
-            }
-        }
-    }
-
-}
index 31669bf..18b63f4 100644 (file)
@@ -23,7 +23,7 @@
 
 package org.tizen.webuibuilder.model.io;
 
-import org.dom4j.Element;
+import org.w3c.dom.Element;
 
 
 public class FileReader {
@@ -40,24 +40,28 @@ public class FileReader {
     private String desc = null;
 
     public FileReader(Element rootElem) {
-        if (!rootElem.getName().equals(ELEMENT_TIZEN_FILE)) {
+        if (!rootElem.getNodeName().equals(ELEMENT_TIZEN_FILE)) {
             validate = false;
             return;
         }
 
-        for (Object childObj : rootElem.elements(ELEMENT_FILE_INFO)) {
-            Element elem = (Element) childObj;
-            for (Object childObj2 : elem.elements(ELEMENT_TYPE)) {
-                Element elem2 = (Element) childObj2;
-                type = new String(elem2.getText());
+        int cnt = rootElem.getElementsByTagName(ELEMENT_FILE_INFO).getLength();
+        for (int i = 0; i < cnt; i++) {
+            Element elem = (Element)rootElem.getElementsByTagName(ELEMENT_FILE_INFO).item(i);
+            int cnt2 = rootElem.getElementsByTagName(ELEMENT_TYPE).getLength();
+            for (int j = 0; j < cnt2; j++) {
+               Element elem2 = (Element)rootElem.getElementsByTagName(ELEMENT_TYPE).item(j);
+                type = new String(elem2.getTextContent());
             }
-            for (Object childObj2 : elem.elements(ELEMENT_VERSION)) {
-                Element elem2 = (Element) childObj2;
-                version = new String(elem2.getText());
+            cnt2 = rootElem.getElementsByTagName(ELEMENT_VERSION).getLength();
+            for (int j = 0; j < cnt2; j++) {
+               Element elem2 = (Element)rootElem.getElementsByTagName(ELEMENT_VERSION).item(j);
+               version = new String(elem2.getTextContent());
             }
-            for (Object childObj2 : elem.elements(ELEMENT_DESC)) {
-                Element elem2 = (Element) childObj2;
-                desc = new String(elem2.getText());
+            cnt2 = rootElem.getElementsByTagName(ELEMENT_DESC).getLength();
+            for (int j = 0; j < cnt2; j++) {
+               Element elem2 = (Element)rootElem.getElementsByTagName(ELEMENT_DESC).item(j);
+               desc = new String(elem2.getTextContent());
             }
         }
 
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/HTMLWriter2.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/HTMLWriter2.java
deleted file mode 100644 (file)
index 67714a4..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * UI Builder
- *
- * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-
-package org.tizen.webuibuilder.model.io;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-
-import javax.xml.transform.Result;
-
-import org.dom4j.ProcessingInstruction;
-import org.dom4j.io.HTMLWriter;
-import org.dom4j.io.OutputFormat;
-import org.xml.sax.SAXException;
-
-
-public class HTMLWriter2 extends HTMLWriter {
-
-    private boolean toggleEscape = true; // temporary processing...
-
-    public HTMLWriter2() throws UnsupportedEncodingException {
-    }
-
-    public HTMLWriter2(Writer writer, OutputFormat format) throws UnsupportedEncodingException {
-        super(writer, format);
-    }
-
-    private boolean _processingInstruction(String target) {
-        if (target.equals(Result.PI_DISABLE_OUTPUT_ESCAPING)) {
-            if (toggleEscape) {
-                this.setEscapeText(false);
-            } else {
-                this.setEscapeText(true);
-            }
-            toggleEscape = !toggleEscape;
-            return true;
-        } else if (target.equals(Result.PI_ENABLE_OUTPUT_ESCAPING)) {
-            this.setEscapeText(true);
-            toggleEscape = true;
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public void processingInstruction(String target, String data) throws SAXException {
-        if (_processingInstruction(target)) {
-            return;
-        }
-
-        super.processingInstruction(target, data);
-    }
-
-    @Override
-    protected void writeProcessingInstruction(ProcessingInstruction pi) throws IOException {
-        if (_processingInstruction(pi.getName())) {
-            return;
-        }
-
-        super.writeProcessingInstruction(pi);
-    }
-
-}
index 5bb8ca7..d20e163 100644 (file)
 package org.tizen.webuibuilder.model.io;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.tizen.webuibuilder.BuilderConstants;
@@ -71,12 +76,18 @@ public class PageReader {
      * @return {@link PageFileData}
      */
     public static PageFileData read(URL url, PartFactory partFactory) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
 
         try {
-            doc = reader.read(url);
-        } catch (DocumentException e) {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(url.openStream());
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
             Logger logger = LoggerFactory.getLogger(PartFactory.class);
             logger.error(BuilderConstants.LOG_READ_PAGE_ERROR);
             if (doc == null) {
index fb67476..70f3bfa 100644 (file)
  *
  */
 
-
 package org.tizen.webuibuilder.model.io;
 
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.Element;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.tizen.webuibuilder.BuilderConstants;
@@ -35,120 +31,146 @@ import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.PartFactory;
 import org.tizen.webuibuilder.model.WidgetPart;
 import org.tizen.webuibuilder.model.filedata.PageFileData;
-
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 public class PageReader_ver_1 {
 
-    /**
-     * Parses a page document.
-     * 
-     * @param doc
-     *            a page document
-     * @param partFactory
-     *            a {@link PartFactory}
-     * @return {@link PageFileData}
-     */
-    public static PageFileData parsePage(Document doc, PartFactory partFactory) {
-        if (doc == null) {
-            return null;
-        }
-
-        Element elem = doc.getRootElement();
-        if (!elem.getName().equals("document")) {
-            return null;
-        }
-
-        PageFileData pageFileData = new PageFileData();
-
-        for (Object childObj : elem.elements("documentInfo")) {
-            parsePageInfo(pageFileData, (Element) childObj);
-        }
-        for (Object childObj : elem.elements("documentData")) {
-            elem = (Element) childObj;
-            for (Object childElem : elem.elements()) {
-                Part part = parseElement(pageFileData, (Element) childElem, partFactory);
-                if (part instanceof DocumentPart) {
-                    pageFileData.addRootPart(BuilderConstants.EMPTY, part);
-                }
-            }
-        }
-
-        return pageFileData;
-    }
-
-    /**
-     * Parses a document info element.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @param elem
-     *            a document info element
-     */
-    private static void parsePageInfo(PageFileData pageFileData, Element elem) {
-        for (Object childObj : elem.elements()) {
-            Element childElem = (Element) childObj;
-            if (childElem.getName().equals("version")) {
-                pageFileData.setVersion(childElem.getText());
-            } else if (childElem.getName().equals("version")) {
-                pageFileData.setVersion(childElem.getText());
-            }
-        }
-    }
-
-    /**
-     * Parses an element.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @param elem
-     *            an element
-     * @param partFactory
-     *            a {@link PartFactory}
-     * @return {@link Part}
-     */
-    private static Part parseElement(PageFileData pageFileData, Element elem,
-                                     PartFactory partFactory) {
-        Part part = partFactory.createPart(elem.getName());
-
-        if (part == null) {
-            Logger logger = LoggerFactory.getLogger(PartFactory.class);
-            logger.error(BuilderConstants.LOG_DESC_CANNOT_BE_FOUND_ERROR);
-        } else {
-            if (part instanceof PagePart) {
-                pageFileData.setName(0, elem.attribute(BuilderConstants.PROPERTY_ID).getValue());
-            }
-
-            // Sets events and properties.
-            Attribute attr = null;
-            for (Object attrObj : elem.attributes()) {
-                attr = (Attribute) attrObj;
-                if (BuilderConstants.ATTRIBUTE_EVENT_PREFIX.equals((attr.getName())
-                        .substring(0, BuilderConstants.ATTRIBUTE_EVENT_PREFIX.length()))) {
-                    part.setEventValue(attr.getName(), attr.getValue());
-                } else {
-                    part.setPropertyValueWhenPageRead(attr.getName(), attr.getValue());
+       /**
+        * Parses a page document.
+        * 
+        * @param doc
+        *            a page document
+        * @param partFactory
+        *            a {@link PartFactory}
+        * @return {@link PageFileData}
+        */
+       public static PageFileData parsePage(Document doc, PartFactory partFactory) {
+               if (doc == null) {
+                       return null;
+               }
+
+               Element elem = doc.getDocumentElement();
+               if (!elem.getNodeName().equals("document")) {
+                       return null;
+               }
+
+               PageFileData pageFileData = new PageFileData();
+
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               if (childNode.getNodeName().equals("documentInfo")) {
+                                       parsePageInfo(pageFileData, (Element) childNode);
+                               } else if (childNode.getNodeName().equals("documentData")) {
+                                       parsePageData(pageFileData, (Element) childNode,
+                                                       partFactory);
+                               }
+                       }
+               }
+
+               return pageFileData;
+       }
+
+       /**
+        * Parses a document info element.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @param elem
+        *            a document info element
+        */
+       private static void parsePageInfo(PageFileData pageFileData, Element elem) {
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if (childNode instanceof Element) {
+                               if (childNode.getNodeName().equals("version")) {
+                                       pageFileData.setVersion(((Element) childNode)
+                                                       .getTextContent());
+                               }
+                       }
+               }
+       }
+
+       private static void parsePageData(PageFileData pageFileData, Element elem,
+                       PartFactory partFactory) {
+               NodeList elemList = elem.getChildNodes();
+               for (int i = 0; i < elemList.getLength(); i++) {
+                       Node childNode = elemList.item(i);
+                       if(childNode instanceof Element){
+                               Part part = parseElement(pageFileData, (Element) childNode,
+                                               partFactory);
+                               if (part instanceof DocumentPart) {
+                                       pageFileData.addRootPart(BuilderConstants.EMPTY, part);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Parses an element.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @param elem
+        *            an element
+        * @param partFactory
+        *            a {@link PartFactory}
+        * @return {@link Part}
+        */
+       private static Part parseElement(PageFileData pageFileData, Element elem,
+                       PartFactory partFactory) {
+               Part part = partFactory.createPart(elem.getNodeName());
+
+               if (part == null) {
+                       Logger logger = LoggerFactory.getLogger(PartFactory.class);
+                       logger.error(BuilderConstants.LOG_DESC_CANNOT_BE_FOUND_ERROR);
+               } else {
+                       if (part instanceof PagePart) {
+                               pageFileData.setName(0,
+                                               elem.getAttribute(BuilderConstants.PROPERTY_ID));
+                       }
+
+                       // Sets events and properties.
+            NamedNodeMap attrList = elem.getAttributes();
+            for (int i = 0; i < attrList.getLength(); i++) {
+                Attr attr = (Attr) attrList.item(i);
+                               if (BuilderConstants.ATTRIBUTE_EVENT_PREFIX.equals((attr
+                                               .getName()).substring(0,
+                                               BuilderConstants.ATTRIBUTE_EVENT_PREFIX.length()))) {
+                                       part.setEventValue(attr.getName(), attr.getValue());
+                               } else {
+                                       part.setPropertyValueWhenPageRead(attr.getName(),
+                                                       attr.getValue());
+                               }
+                       }
+
+                       if (part instanceof WidgetPart) {
+                               String text = elem.getTextContent();
+
+                               if (!text.isEmpty()) {
+                                       ((WidgetPart) part).setHtmlString(text);
+                               }
+                       }
+
+                       // Adds children.
+            NodeList elemList = elem.getChildNodes();
+            for (int i = 0; i < elemList.getLength(); i++) {
+                Element child = (Element) elemList.item(i);
+                if(child instanceof Element){
+                       Part childpart = parseElement(pageFileData, child, partFactory);
+                       part.addChildWhenPageRead(childpart);
                 }
-            }
+                       }
+               }
 
-            if (part instanceof WidgetPart) {
-                String text = elem.getText();
-
-                if (!text.isEmpty()) {
-                    ((WidgetPart) part).setHtmlString(text);
-                }
-            }
-
-            // Adds children.
-            Element child = null;
-            Part childpart = null;
-            for (Object childObj : elem.elements()) {
-                child = (Element) childObj;
-                childpart = parseElement(pageFileData, child, partFactory);
-                part.addChildWhenPageRead(childpart);
-            }
-        }
-
-        return part;
-    }
+               return part;
+       }
 
 }
\ No newline at end of file
index cfa7fbb..c688de9 100644 (file)
@@ -27,9 +27,12 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.Element;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.tizen.webuibuilder.BuilderConstants;
@@ -59,7 +62,7 @@ public class PageReader_ver_2 {
             return null;
         }
 
-        Element root = doc.getRootElement();
+        Element root = doc.getDocumentElement();
 
         FileReader fileReader = new FileReader(root);
         if (!fileReader.isValidate()) {
@@ -74,8 +77,9 @@ public class PageReader_ver_2 {
 
         PageFileData pageFileData = new PageFileData();
 
-        for (Object childObj : root.elements("document")) {
-            parsePart(pageFileData, (Element) childObj, partFactory);
+        NodeList elemList = root.getElementsByTagName("document");
+        for (int i = 0; i < elemList.getLength(); i++) {
+            parsePart(pageFileData, (Element) elemList.item(i), partFactory);
         }
 
         return pageFileData;
@@ -92,11 +96,16 @@ public class PageReader_ver_2 {
      *            a {@link PartFactory}
      */
     private static void parsePart(PageFileData pageFileData, Element elem, PartFactory partFactory) {
-        for (Object childObj : elem.elements("documentInfo")) {
-            parsePageInfo(pageFileData, (Element) childObj);
-        }
-        for (Object childObj : elem.elements("documentData")) {
-            parsePageData(pageFileData, (Element) childObj, partFactory);
+        NodeList elemList = elem.getChildNodes();
+        for (int i = 0; i < elemList.getLength(); i++) {
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+                       if(childNode.getNodeName().equals("documentInfo")){
+                               parsePageInfo(pageFileData, (Element) childNode);
+                       } else if(childNode.getNodeName().equals("documentData")){
+                               parsePageData(pageFileData, (Element) childNode, partFactory);
+                       }
+               }
         }
     }
 
@@ -109,11 +118,14 @@ public class PageReader_ver_2 {
      *            a document info element
      */
     private static void parsePageInfo(PageFileData pageFileData, Element elem) {
-        for (Object childObj : elem.elements()) {
-            Element childElem = (Element) childObj;
-            if (childElem.getName().equals("version")) {
-                pageFileData.setVersion(childElem.getText());
-            }
+        NodeList elemList = elem.getChildNodes();
+        for (int i = 0; i < elemList.getLength(); i++) {
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+                       if(childNode.getNodeName().equals("version")){
+                               pageFileData.setVersion(((Element)childNode).getTextContent());
+                       }
+               }
         }
     }
 
@@ -131,44 +143,51 @@ public class PageReader_ver_2 {
                                       PartFactory partFactory) {
         List<CssSelector> selectors = null;
 
-        for (Object childObj : elem.elements("tizen.css")) {
-            Element elem2 = (Element) childObj;
-            selectors = parseStyle(elem2);
+        NodeList elemList = elem.getElementsByTagName("tizen.css");
+        for (int i = 0; i < elemList.getLength(); i++) {
+            selectors = parseStyle((Element) elemList.item(i));
         }
 
-        {
-            boolean existNscreen = false;
-            for (Iterator<Element> i_nscreen = elem.elementIterator("tizen.nscreen"); i_nscreen
-                    .hasNext();) {
-                existNscreen = true;
-                Element nscreen = i_nscreen.next();
-                for (Iterator<Element> i_screen = nscreen.elementIterator("screen"); i_screen
-                        .hasNext();) {
-                    Element screen = i_screen.next();
-                    NScreenModel model = new NScreenModel();
-                    for (Iterator<Element> i_child = screen.elementIterator(); i_child.hasNext();) {
-                        Element child = i_child.next();
-                        String tagName = child.getName();
-                        if ("title".equals(tagName)) {
-                            model.setTitle(child.getText());
-                        } else if ("width".equals(tagName)) {
-                            model.setWidth(Integer.parseInt(child.getText()));
-                        } else if ("height".equals(tagName)) {
-                            model.setHeight(Integer.parseInt(child.getText()));
-                        } else if ("cssFileName".equals(tagName)) {
-                            model.setFileName(child.getText());
-                        }
+        boolean existNscreen = false;
+        elemList = elem.getElementsByTagName("tizen.nscreen");
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element nscreen = (Element) elemList.item(i);
+            NodeList elemList2 = nscreen.getElementsByTagName("nscreen");
+            for (int j = 0; j < elemList2.getLength(); j++) {
+                Element screen = (Element) elemList2.item(j);
+               
+                NScreenModel model = new NScreenModel();
+                
+                NodeList elemList3 = screen.getChildNodes();
+                for (int k = 0; k < elemList3.getLength(); k++) {
+                    Node childNode = (Element) elemList3.item(k);
+                    if(childNode instanceof Element){
+                       Element child = (Element)childNode;
+                           String tagName = child.getNodeName();
+                           if ("title".equals(tagName)) {
+                               model.setTitle(child.getTextContent());
+                           } else if ("width".equals(tagName)) {
+                               model.setWidth(Integer.parseInt(child.getTextContent()));
+                           } else if ("height".equals(tagName)) {
+                               model.setHeight(Integer.parseInt(child.getTextContent()));
+                           } else if ("cssFileName".equals(tagName)) {
+                               model.setFileName(child.getTextContent());
+                           }
                     }
-                    pageFileData.getNscreenModelList().add(model);
                 }
+                pageFileData.getNscreenModelList().add(model);
             }
-            if (!existNscreen) {
-                pageFileData.getNscreenModelList().add(new NScreenModel());
-            }
+            
+            existNscreen = true;            
+        }
+        
+        if (!existNscreen) {
+            pageFileData.getNscreenModelList().add(new NScreenModel());
         }
 
-        for (Object childObj : elem.elements("tizen.doc")) {
-            Element elem2 = (Element) childObj;
+        elemList = elem.getElementsByTagName("tizen.doc");
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element elem2 = (Element) elemList.item(i);
             Part part = parseElement(pageFileData, elem2, partFactory, selectors);
             if (part instanceof DocumentPart) {
                 pageFileData.addRootPart("", part);
@@ -187,20 +206,22 @@ public class PageReader_ver_2 {
         List<CssSelector> selectors = new ArrayList<CssSelector>();
 
         // Sets selectors.
-        for (Object childObj : elem.elements("tizen.selector")) {
-            Element element = (Element) childObj;
+        NodeList elemList = elem.getElementsByTagName("tizen.selector");
+        for (int i = 0; i < elemList.getLength(); i++) {
+               Element element = (Element) elemList.item(i);
 
-            String selectorName = element.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String partId = element.attributeValue(BuilderConstants.ATTRIBUTE_PARTID);
+            String selectorName = element.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String partId = element.getAttribute(BuilderConstants.ATTRIBUTE_PARTID);
             CssSelector selector = new CssSelector(selectorName, "", partId);
             selectors.add(selector);
 
             // Sets styles.
-            for (Object childObj2 : element.elements("tizen.style")) {
-                Element element2 = (Element) childObj2;
+            NodeList elemList2 = elem.getElementsByTagName("tizen.style");
+            for (int j = 0; j < elemList2.getLength(); j++) {
+                Element element2 = (Element) elemList2.item(i);
 
-                String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-                String value = element2.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
+                String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+                String value = element2.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
 
                 selector.setPropertyValue(name, value);
             }
@@ -224,20 +245,20 @@ public class PageReader_ver_2 {
      */
     private static Part parseElement(PageFileData pageFileData, Element elem,
                                      PartFactory partFactory, List<CssSelector> selectors) {
-        Part part = partFactory.createPart(elem.getName());
+        Part part = partFactory.createPart(elem.getNodeName());
 
         if (part == null) {
             Logger logger = LoggerFactory.getLogger(PartFactory.class);
             logger.error(BuilderConstants.LOG_DESC_CANNOT_BE_FOUND_ERROR);
         } else {
             if (part instanceof PagePart) {
-                pageFileData.setName(0, elem.attribute(BuilderConstants.PROPERTY_ID).getValue());
+                pageFileData.setName(0, elem.getAttribute(BuilderConstants.PROPERTY_ID));
             }
 
             // Sets events and properties.
-            Attribute attr = null;
-            for (Object attrObj : elem.attributes()) {
-                attr = (Attribute) attrObj;
+            NamedNodeMap attrList = elem.getAttributes();
+            for (int i = 0; i < attrList.getLength(); i++) {
+                Attr attr = (Attr) attrList.item(i);
                 // if (BuilderConstants.ATTRIBUTE_EVENT_PREFIX.equals((attr
                 // .getName()).substring(0,
                 // BuilderConstants.ATTRIBUTE_EVENT_PREFIX.length()))) {
@@ -248,7 +269,7 @@ public class PageReader_ver_2 {
             }
 
             if (part instanceof WidgetPart) {
-                String text = elem.getText();
+                String text = elem.getTextContent();
 
                 if (!text.isEmpty()) {
                     ((WidgetPart) part).setHtmlString(text);
@@ -265,29 +286,30 @@ public class PageReader_ver_2 {
             }
 
             // Adds children.
-            Element child = null;
-            Part childpart = null;
-            for (Object childObj : elem.elements()) {
-                child = (Element) childObj;
-                if (child.getName().equals("event")) {
-                    Attribute eventAttr = null;
-                    for (Object attrObj : child.attributes()) {
-                        eventAttr = (Attribute) attrObj;
-                        part.setEventValue(eventAttr.getName(), eventAttr.getValue());
-                    }
-                } else if (child.getName().equals("gotoPage")) {
-                    Attribute eventAttr = null;
-                    List<String> strList = new ArrayList<String>();
-
-                    for (Object attrObj : child.attributes()) {
-                        eventAttr = (Attribute) attrObj;
-                        strList.add(eventAttr.getValue());
-                    }
-                    part.setGotoPageEventValue(strList.get(0), strList.get(1), strList.get(2));
-
-                } else {
-                    childpart = parseElement(pageFileData, child, partFactory, selectors);
-                    part.addChildWhenPageRead(childpart);
+            NodeList elemList = elem.getChildNodes();
+            for (int i = 0; i < elemList.getLength(); i++) {
+                Element child = (Element) elemList.item(i);
+                if(child instanceof Element){
+                       if (child.getNodeName().equals("event")) {
+                           attrList = child.getAttributes();
+                           for (int j = 0; j < attrList.getLength(); j++) {
+                               Attr eventAttr = (Attr) attrList.item(j);
+                               part.setEventValue(eventAttr.getName(), eventAttr.getValue());
+                           }
+                       } else if (child.getNodeName().equals("gotoPage")) {
+                           List<String> strList = new ArrayList<String>();
+       
+                           attrList = child.getAttributes();
+                           for (int j = 0; j < attrList.getLength(); j++) {
+                               Attr eventAttr = (Attr) attrList.item(j);
+                               strList.add(eventAttr.getValue());
+                           }
+                           part.setGotoPageEventValue(strList.get(0), strList.get(1), strList.get(2));
+       
+                       } else {
+                           Part childpart = parseElement(pageFileData, child, partFactory, selectors);
+                           part.addChildWhenPageRead(childpart);
+                       }
                 }
             }
         }
index 2c0bbc1..c22a93c 100644 (file)
@@ -20,7 +20,6 @@
  *
  */
 
-
 package org.tizen.webuibuilder.model.io;
 
 import java.io.FileWriter;
@@ -28,95 +27,139 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.filedata.PageFileData;
 
-
 public class PageWriter {
 
-    private static final int INDENT_SIZE = 4;
-
-    /**
-     * Writes a page.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @param writer
-     *            a writer
-     * @throws IOException
-     */
-    public static void writeTo(PageFileData pageFileData, Writer writer) throws IOException {
-        Element elem = writeElement(pageFileData);
-
-        Document doc = DocumentHelper.createDocument();
-        doc.add(elem);
-
-        OutputFormat format = OutputFormat.createPrettyPrint();
-        format.setIndentSize(INDENT_SIZE);
-
-        XMLWriter xmlwriter = new XMLWriter(writer, format);
-        xmlwriter.write(doc);
-        xmlwriter.close();
-    }
-
-    /**
-     * Writes a page string.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @return page string
-     */
-    public static String writeToString(PageFileData pageFileData) {
-        StringWriter writer = new StringWriter();
-        try {
-            writeTo(pageFileData, writer);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-
-        return writer.getBuffer().toString();
-    }
-
-    /**
-     * Writes a page file.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @param filePath
-     *            a page file path
-     * @throws IOException
-     */
-    public static void writeToFile(PageFileData pageFileData, String filePath) throws IOException {
-        writeTo(pageFileData, new FileWriter(filePath));
-    }
-
-    /**
-     * Writes a page element.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @return page element
-     */
-    public static Element writeElement(PageFileData pageFileData) {
-        return PageWriter_ver_2.writeElement(pageFileData);
-    }
-
-    /**
-     * Writes a page element.
-     * 
-     * @param part
-     *            a {@link part}
-     * @param includePid
-     *            whether to write part-id
-     * @return page element
-     */
-    public static Element writePart(Part part, boolean includePid) {
-        return PageWriter_ver_2.writePart(part, includePid);
-    }
+       private static final int INDENT_SIZE = 4;
+
+       /**
+        * Writes a page.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @param writer
+        *            a writer
+        * @throws IOException
+        */
+       public static void writeTo(PageFileData pageFileData, Writer writer)
+                       throws IOException {
+               Document doc = writeElement(pageFileData);
+
+               DOMSource source = new DOMSource(doc);
+               StreamResult result = new StreamResult(writer);
+
+               TransformerFactory factory = TransformerFactory.newInstance();
+               Transformer transformer = null;
+               try {
+                       transformer = factory.newTransformer();
+                       transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.ENCODING,
+                                       BuilderConstants.ENCODING);
+                       transformer.setOutputProperty(OutputKeys.METHOD,
+                                       BuilderConstants.XML);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               }
+
+               try {
+                       transformer.transform(source, result);
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
+               
+               // OutputFormat format = OutputFormat.createPrettyPrint();
+               // format.setIndentSize(INDENT_SIZE);
+               //
+               // XMLWriter xmlwriter = new XMLWriter(writer, format);
+               // xmlwriter.write(doc);
+               // xmlwriter.close();
+       }
+
+       /**
+        * Writes a page string.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @return page string
+        */
+       public static String writeToString(PageFileData pageFileData) {
+               StringWriter writer = new StringWriter();
+               try {
+                       writeTo(pageFileData, writer);
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+               return writer.getBuffer().toString();
+       }
+
+       /**
+        * Writes a page file.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @param filePath
+        *            a page file path
+        * @throws IOException
+        */
+       public static void writeToFile(PageFileData pageFileData, String filePath)
+                       throws IOException {
+               writeTo(pageFileData, new FileWriter(filePath));
+       }
+
+       /**
+        * Writes a page element.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @return page element
+        */
+       public static Document writeElement(PageFileData pageFileData) {
+               return PageWriter_ver_2.writeElement(pageFileData);
+       }
+
+       /**
+        * Writes a page element.
+        * 
+        * @param part
+        *            a {@link part}
+        * @param includePid
+        *            whether to write part-id
+        * @return page element
+        */
+       public static Document writePart(Part part, boolean includePid) {
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+       DocumentBuilder docBuilder = null;
+               try {
+                       docBuilder = factory.newDocumentBuilder();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       
+       Document doc = docBuilder.newDocument();
+       
+               Element elem = PageWriter_ver_2.writePart(doc, part, includePid);
+               doc.appendChild(elem);
+               
+               return doc;
+       }
 
 }
index fc329a7..c7f6ade 100644 (file)
  *
  */
 
-
 package org.tizen.webuibuilder.model.io;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.descriptors.PartDescriptor;
 import org.tizen.webuibuilder.model.descriptors.PropertyDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
 import org.tizen.webuibuilder.model.filedata.PageFileData;
-
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 public class PageWriter_ver_1 {
 
-    /**
-     * Writes a page element.
-     * 
-     * @param pageFileData
-     *            a {@link PageFileData}
-     * @return page element
-     */
-    public static Element writeElement(PageFileData pageFileData) {
-        Element root = DocumentHelper.createElement("document");
-
-        Element pageInfoelem = DocumentHelper.createElement("documentInfo");
-        Element elem;
-        elem = DocumentHelper.createElement("title");
-        elem.addText("test");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("author");
-        elem.addText("noname");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("version");
-        elem.addText("0.1.1");
-        pageInfoelem.add(elem);
-        root.add(pageInfoelem);
-
-        Element pageDataelem = DocumentHelper.createElement("documentData");
-        pageDataelem.add(writePart(pageFileData.getRootPart(0), false));
-        root.add(pageDataelem);
-
-        return root;
-    }
-
-    /**
-     * Writes a page element.
-     * 
-     * @param part
-     *            a {@link part}
-     * @param includePid
-     *            whether to write part-id
-     * @return page element
-     */
-    public static Element writePart(Part part, boolean includePid) {
-        Element elem = DocumentHelper.createElement(part.getDescriptorId());
-
-        if (includePid) {
-            elem.addAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
-
-            // Adds height style attribute.
-            PartDescriptor descriptor = part.getPartDescriptor();
-            if (part.canBeVisibleBorder()) {
-                String heightString = descriptor.getFeedbackHeight();
-                if (heightString != null) {
-                    int height = Integer.valueOf(heightString).intValue();
-                    String value =
-                            BuilderConstants.ATTRIBUTE_VALUE_HEIGHT + BuilderConstants.COLON
-                                    + height + BuilderConstants.ATTRIBUTE_VALUE_PX;
-                    elem.addAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
-
-                    Element textElem = DocumentHelper.createElement(BuilderConstants.PART_TEXT);
-                    textElem.addAttribute(BuilderConstants.ATTRIBUTE_TEXT,
-                                          descriptor.getGuideText());
-                    elem.add(textElem);
-                }
-            }
-        }
-
-        for (PropertyDescriptor property : part.getPartDescriptor().getPropertyDescriptors()) {
-            String value = part.getPropertyValue(property.getPropertyName());
-            if (value != null) {
-                if (property.getPropertyType().equals(TypeDescriptor.ID_OF_HTMLSTRING)) {
-                    elem.setText(value);
-                } else {
-                    elem.addAttribute(property.getPropertyName(), value);
-                }
-            }
-        }
-
-        // for (EventDescriptor event : part.getPartDescriptor().getEventDescriptors()) {
-        // String value = part.getEventValue(event.getEventName());
-        // if (value != null) {
-        // elem.addAttribute(event.getEventName(), value);
-        // }
-        // }
-
-        for (Part child : part.getChildren()) {
-            elem.add(writePart(child, includePid));
-        }
-
-        return elem;
-    }
+       /**
+        * Writes a page element.
+        * 
+        * @param pageFileData
+        *            a {@link PageFileData}
+        * @return page element
+        */
+       public static Document writeElement(PageFileData pageFileData) {
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               DocumentBuilder builder = null;
+
+               try {
+                       builder = factory.newDocumentBuilder();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+               
+               Document doc = builder.newDocument();
+
+               Element root = doc.createElement("document");
+
+               Element pageInfoelem = doc.createElement("documentInfo");
+               Element elem;
+               elem = doc.createElement("title");
+               elem.setTextContent("test");
+               pageInfoelem.appendChild(elem);
+               elem = doc.createElement("author");
+               elem.setTextContent("noname");
+               pageInfoelem.appendChild(elem);
+               elem = doc.createElement("version");
+               elem.setTextContent("0.1.1");
+               pageInfoelem.appendChild(elem);
+               root.appendChild(pageInfoelem);
+
+               Element pageDataelem = doc.createElement("documentData");
+               pageDataelem.appendChild(writePart(doc, pageFileData.getRootPart(0),
+                               false));
+               root.appendChild(pageDataelem);
+
+               doc.appendChild(root);
+               
+               return doc;
+       }
+
+       /**
+        * Writes a page element.
+        * 
+        * @param part
+        *            a {@link part}
+        * @param includePid
+        *            whether to write part-id
+        * @return page element
+        */
+       public static Element writePart(Document doc, Part part, boolean includePid) {
+               Element elem = doc.createElement(part.getDescriptorId());
+
+               if (includePid) {
+                       elem.setAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
+
+                       // Adds height style attribute.
+                       PartDescriptor descriptor = part.getPartDescriptor();
+                       if (part.canBeVisibleBorder()) {
+                               String heightString = descriptor.getFeedbackHeight();
+                               if (heightString != null) {
+                                       int height = Integer.valueOf(heightString).intValue();
+                                       String value = BuilderConstants.ATTRIBUTE_VALUE_HEIGHT
+                                                       + BuilderConstants.COLON + height
+                                                       + BuilderConstants.ATTRIBUTE_VALUE_PX;
+                                       elem.setAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
+
+                                       Element textElem = doc
+                                                       .createElement(BuilderConstants.PART_TEXT);
+                                       textElem.setAttribute(BuilderConstants.ATTRIBUTE_TEXT,
+                                                       descriptor.getGuideText());
+                                       elem.appendChild(textElem);
+                               }
+                       }
+               }
+
+               for (PropertyDescriptor property : part.getPartDescriptor()
+                               .getPropertyDescriptors()) {
+                       String value = part.getPropertyValue(property.getPropertyName());
+                       if (value != null) {
+                               if (property.getPropertyType().equals(
+                                               TypeDescriptor.ID_OF_HTMLSTRING)) {
+                                       elem.setTextContent(value);
+                               } else {
+                                       elem.setAttribute(property.getPropertyName(), value);
+                               }
+                       }
+               }
+
+               // for (EventDescriptor event :
+               // part.getPartDescriptor().getEventDescriptors()) {
+               // String value = part.getEventValue(event.getEventName());
+               // if (value != null) {
+               // elem.addAttribute(event.getEventName(), value);
+               // }
+               // }
+
+               for (Part child : part.getChildren()) {
+                       elem.appendChild(writePart(doc, child, includePid));
+               }
+
+               return elem;
+       }
 
 }
index 4a1388e..2909d89 100644 (file)
@@ -26,8 +26,6 @@ package org.tizen.webuibuilder.model.io;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.GotoPageProperty;
 import org.tizen.webuibuilder.model.Part;
@@ -37,6 +35,8 @@ import org.tizen.webuibuilder.model.descriptors.PropertyDescriptor;
 import org.tizen.webuibuilder.model.descriptors.TypeDescriptor;
 import org.tizen.webuibuilder.model.filedata.PageFileData;
 import org.tizen.webuibuilder.ui.views.nscreen.model.NScreenModel;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class PageWriter_ver_2 {
@@ -48,40 +48,40 @@ public class PageWriter_ver_2 {
      *            a {@link PageFileData}
      * @return page element
      */
-    public static Element writeElement(PageFileData pageFileData) {
+    public static Document writeElement(PageFileData pageFileData) {
         TizenFileFormatter fmt =
                 new TizenFileFormatter("tizen-page", "2", "Tizen Web UI Builder Project");
 
-        Element root = fmt.GenerateFileFormat();
+        Document doc = fmt.GenerateFileFormat();
 
-        Element elem0 = DocumentHelper.createElement("document");
-        root.add(elem0);
+        Element elem0 = doc.createElement("document");
+        doc.appendChild(elem0);
 
-        Element pageInfoelem = DocumentHelper.createElement("documentInfo");
+        Element pageInfoelem = doc.createElement("documentInfo");
         Element elem;
-        elem = DocumentHelper.createElement("title");
-        elem.addText("test");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("author");
-        elem.addText("noname");
-        pageInfoelem.add(elem);
-        elem = DocumentHelper.createElement("version");
-        elem.addText("0.1.1");
-        pageInfoelem.add(elem);
-        elem0.add(pageInfoelem);
+        elem = doc.createElement("title");
+        elem.setTextContent("test");
+        pageInfoelem.appendChild(elem);
+        elem = doc.createElement("author");
+        elem.setTextContent("noname");
+        pageInfoelem.appendChild(elem);
+        elem = doc.createElement("version");
+        elem.setTextContent("0.1.1");
+        pageInfoelem.appendChild(elem);
+        elem0.appendChild(pageInfoelem);
 
-        Element pageDataElem = DocumentHelper.createElement("documentData");
+        Element pageDataElem = doc.createElement("documentData");
 
-        Element cssElement = DocumentHelper.createElement("tizen.css");
+        Element cssElement = doc.createElement("tizen.css");
 
-        pageDataElem.add(writeCss(cssElement, pageFileData.getRootPart(0)));
-        Element nscreenElement = DocumentHelper.createElement("tizen.nscreen");
-        pageDataElem.add(writeNScreen(nscreenElement, pageFileData.getNscreenModelList()));
+        pageDataElem.appendChild(writeCss(doc, cssElement, pageFileData.getRootPart(0)));
+        Element nscreenElement = doc.createElement("tizen.nscreen");
+        pageDataElem.appendChild(writeNScreen(doc, nscreenElement, pageFileData.getNscreenModelList()));
 
-        pageDataElem.add(writePart(pageFileData.getRootPart(0), false));
-        elem0.add(pageDataElem);
+        pageDataElem.appendChild(writePart(doc, pageFileData.getRootPart(0), false));
+        elem0.appendChild(pageDataElem);
 
-        return root;
+        return doc;
     }
 
     /**
@@ -93,52 +93,52 @@ public class PageWriter_ver_2 {
      *            a {@link part}
      * @return css element
      */
-    public static Element writeCss(Element cssElement, Part part) {
+    public static Element writeCss(Document doc, Element cssElement, Part part) {
         // Adds selector attribute.
         for (CssSelector selector : part.getSelectors()) {
             if (selector == null) {
                 continue;
             }
 
-            Element selectorElement = DocumentHelper.createElement("tizen.selector");
-            selectorElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME,
+            Element selectorElement = doc.createElement("tizen.selector");
+            selectorElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME,
                                          selector.getSelectorName());
-            selectorElement.addAttribute(BuilderConstants.ATTRIBUTE_PARTID, selector.getPartId());
+            selectorElement.setAttribute(BuilderConstants.ATTRIBUTE_PARTID, selector.getPartId());
 
             // Adds style attribute.
             for (Entry<String, String> child : selector.getProperties()) {
-                Element styleElement = DocumentHelper.createElement("tizen.style");
-                styleElement.addAttribute(BuilderConstants.ATTRIBUTE_NAME, child.getKey());
-                styleElement.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, child.getValue());
-                selectorElement.add(styleElement);
+                Element styleElement = doc.createElement("tizen.style");
+                styleElement.setAttribute(BuilderConstants.ATTRIBUTE_NAME, child.getKey());
+                styleElement.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, child.getValue());
+                selectorElement.appendChild(styleElement);
             }
-            cssElement.add(selectorElement);
+            cssElement.appendChild(selectorElement);
         }
 
         List<Part> children = part.getChildren();
         int size = children.size();
         for (int i = 0; i < size; i++) {
-            writeCss(cssElement, children.get(i));
+            writeCss(doc, cssElement, children.get(i));
         }
 
         return cssElement;
     }
 
     // public static Element writeDataBinding(Part part) {
-    // Element elem = DocumentHelper.createElement("tizen.dataModel");
+    // Element elem = doc.createElement("tizen.dataModel");
     //
     // String value = part.getPropertyValue("data-bind");
     // if ((value != null) && (!value.equals(""))) {
-    // elem.addAttribute("name", value);
+    // elem.setAttribute("name", value);
     // }
     //
     // for (Part child : part.getChildren()) {
     // String childValue = child.getPropertyValue("data-bind");
     // if ((childValue != null) && (!childValue.equals(""))) {
-    // elem.addAttribute("name", childValue);
+    // elem.setAttribute("name", childValue);
     // }
     //
-    // //elem.add(writeDataBinding(child));
+    // //elem.appendChild(writeDataBinding(child));
     // }
     //
     // return elem;
@@ -153,24 +153,24 @@ public class PageWriter_ver_2 {
      *            a List containing {@link NScreenModel}
      * @return nscreen element
      */
-    public static Element writeNScreen(Element nscreenElement, List<NScreenModel> list) {
+    public static Element writeNScreen(Document doc, Element nscreenElement, List<NScreenModel> list) {
         for (NScreenModel model : list) {
-            Element screenElement = DocumentHelper.createElement("screen");
-            Element titleElement = DocumentHelper.createElement("title");
-            titleElement.setText(model.getTitle());
-            Element widthElement = DocumentHelper.createElement("width");
-            widthElement.setText(String.valueOf(model.getWidth()));
-            Element heightElement = DocumentHelper.createElement("height");
-            heightElement.setText(String.valueOf(model.getHeight()));
-            Element cssFileNameElement = DocumentHelper.createElement("cssFileName");
-            cssFileNameElement.setText(model.getFileName());
-
-            screenElement.add(titleElement);
-            screenElement.add(widthElement);
-            screenElement.add(heightElement);
-            screenElement.add(cssFileNameElement);
-
-            nscreenElement.add(screenElement);
+            Element screenElement = doc.createElement("screen");
+            Element titleElement = doc.createElement("title");
+            titleElement.setTextContent(model.getTitle());
+            Element widthElement = doc.createElement("width");
+            widthElement.setTextContent(String.valueOf(model.getWidth()));
+            Element heightElement = doc.createElement("height");
+            heightElement.setTextContent(String.valueOf(model.getHeight()));
+            Element cssFileNameElement = doc.createElement("cssFileName");
+            cssFileNameElement.setTextContent(model.getFileName());
+
+            screenElement.appendChild(titleElement);
+            screenElement.appendChild(widthElement);
+            screenElement.appendChild(heightElement);
+            screenElement.appendChild(cssFileNameElement);
+
+            nscreenElement.appendChild(screenElement);
         }
 
         return nscreenElement;
@@ -185,11 +185,11 @@ public class PageWriter_ver_2 {
      *            whether to write part-id
      * @return part element
      */
-    public static Element writePart(Part part, boolean includePid) {
-        Element elem = DocumentHelper.createElement(part.getDescriptorId());
+    public static Element writePart(Document doc, Part part, boolean includePid) {
+        Element elem = doc.createElement(part.getDescriptorId());
 
         if (includePid) {
-            elem.addAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
+            elem.setAttribute(BuilderConstants.ATTRIBUTE_PID, part.getPartId());
 
             // Adds height style attribute.
             PartDescriptor descriptor = part.getPartDescriptor();
@@ -198,7 +198,7 @@ public class PageWriter_ver_2 {
                 if (heightString != null) {
                     String widthString = descriptor.getFeedbackWidth();
                     String widthValue = BuilderConstants.EMPTY;
-                    if (widthString != null) {
+                    if (widthString != null && !widthString.isEmpty()) {
                         int width = Integer.valueOf(widthString);
                         widthValue =
                                 BuilderConstants.ATTRIBUTE_VALUE_WIDTH + BuilderConstants.COLON
@@ -211,12 +211,12 @@ public class PageWriter_ver_2 {
                             widthValue + BuilderConstants.ATTRIBUTE_VALUE_HEIGHT
                                     + BuilderConstants.COLON + height
                                     + BuilderConstants.ATTRIBUTE_VALUE_PX;
-                    elem.addAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
+                    elem.setAttribute(BuilderConstants.ATTRIBUTE_STYLE, value);
 
-                    Element textElem = DocumentHelper.createElement(BuilderConstants.PART_TEXT);
-                    textElem.addAttribute(BuilderConstants.ATTRIBUTE_TEXT,
+                    Element textElem = doc.createElement(BuilderConstants.PART_TEXT);
+                    textElem.setAttribute(BuilderConstants.ATTRIBUTE_TEXT,
                                           descriptor.getGuideText());
-                    elem.add(textElem);
+                    elem.appendChild(textElem);
                 }
             }
         }
@@ -225,16 +225,16 @@ public class PageWriter_ver_2 {
             String value = part.getPropertyValue(property.getPropertyName());
             if (value != null) {
                 if (property.getPropertyType().equals(TypeDescriptor.ID_OF_HTMLSTRING)) {
-                    elem.setText(value);
+                    elem.setTextContent(value);
                 } else if (property.getPropertyType()
                         .indexOf(BuilderConstants.PROPERTY_GROUP_PREFIX) != 0) {
-                    elem.addAttribute(property.getPropertyName(), value);
+                    elem.setAttribute(property.getPropertyName(), value);
                 }
             }
         }
 
         // for (Entry<String, String> event : part.getEvents().entrySet()) {
-        // elem.addAttribute(event.getKey(), event.getValue());
+        // elem.setAttribute(event.getKey(), event.getValue());
         // }
 
         for (Entry<String, List<String>> event : part.getEvents().entrySet()) {
@@ -243,9 +243,9 @@ public class PageWriter_ver_2 {
             for (int i = 0; i < values.size(); i++) {
                 value = values.get(i);
                 if (value != null) {
-                    Element element = DocumentHelper.createElement("event");
-                    element.addAttribute(event.getKey(), value);
-                    elem.add(element);
+                    Element element = doc.createElement("event");
+                    element.setAttribute(event.getKey(), value);
+                    elem.appendChild(element);
                 }
             }
         }
@@ -255,16 +255,16 @@ public class PageWriter_ver_2 {
             GotoPageProperty value = gotoPageEvent.getValue();
             if ((value != null) && (value.getDestinationPage() != null)
                     && (value.getTransition() != null)) {
-                Element element = DocumentHelper.createElement("gotoPage");
-                element.addAttribute("event", gotoPageEvent.getKey());
-                element.addAttribute("destinationPage", value.getDestinationPage());
-                element.addAttribute("transition", value.getTransition());
-                elem.add(element);
+                Element element = doc.createElement("gotoPage");
+                element.setAttribute("event", gotoPageEvent.getKey());
+                element.setAttribute("destinationPage", value.getDestinationPage());
+                element.setAttribute("transition", value.getTransition());
+                elem.appendChild(element);
             }
         }
 
         for (Part child : part.getChildren()) {
-            elem.add(writePart(child, includePid));
+            elem.appendChild(writePart(doc, child, includePid));
         }
 
         return elem;
diff --git a/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/SAXContentHandler2.java b/org.tizen.webuibuilder/src/org/tizen/webuibuilder/model/io/SAXContentHandler2.java
deleted file mode 100644 (file)
index d489bf9..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- * UI Builder
- *
- * Copyright (c) 2000 - 2014 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Contributors:
- * - S-Core Co., Ltd
- *
- */
-
-
-
-package org.tizen.webuibuilder.model.io;
-
-import org.dom4j.Document;
-import org.dom4j.io.SAXContentHandler;
-import org.dom4j.io.XMLWriter;
-import org.xml.sax.Attributes;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
-
-// Referenced classes of package org.dom4j.io:
-//            DispatchHandler, ElementStack
-
-public class SAXContentHandler2 extends SAXContentHandler {
-    private XMLWriter xmlWriter = null;
-
-    public SAXContentHandler2() {
-    }
-
-    public SAXContentHandler2(XMLWriter xmlwriter) {
-        super();
-        setXMLWriter(xmlwriter);
-    }
-
-    void setXMLWriter(XMLWriter xmlwriter) {
-        this.xmlWriter = xmlwriter;
-    }
-
-    @Override
-    public Document getDocument() {
-        return super.getDocument();
-    }
-
-    @Override
-    public void setDocumentLocator(Locator documentLocator) {
-        super.setDocumentLocator(documentLocator);
-    }
-
-    @Override
-    public void processingInstruction(String target, String data) throws SAXException {
-        super.processingInstruction(target, data);
-        if (target.equals("javax.xml.transform.disable-output-escaping")) {
-            xmlWriter.setEscapeText(false);
-        } else if (target.equals("javax.xml.transform.enable-output-escaping")) {
-            xmlWriter.setEscapeText(true);
-        }
-        if (xmlWriter != null) {
-            xmlWriter.processingInstruction(target, data);
-        }
-    }
-
-    @Override
-    public void startPrefixMapping(String prefix, String uri) throws SAXException {
-        super.startPrefixMapping(prefix, uri);
-    }
-
-    @Override
-    public void endPrefixMapping(String prefix) throws SAXException {
-        super.endPrefixMapping(prefix);
-    }
-
-    @Override
-    public void startDocument() throws SAXException {
-        super.startDocument();
-        if (xmlWriter != null) {
-            xmlWriter.startDocument();
-        }
-    }
-
-    @Override
-    public void endDocument() throws SAXException {
-        super.endDocument();
-        if (xmlWriter != null) {
-            xmlWriter.endDocument();
-        }
-    }
-
-    @Override
-    public void startElement(String namespaceURI, String localName, String qualifiedName,
-                             Attributes attributes) throws SAXException {
-        super.startElement(namespaceURI, localName, qualifiedName, attributes);
-        if (xmlWriter != null) {
-            xmlWriter.startElement(namespaceURI, localName, qualifiedName, attributes);
-        }
-    }
-
-    @Override
-    public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
-        super.endElement(namespaceURI, localName, qName);
-        if (xmlWriter != null) {
-            xmlWriter.endElement(namespaceURI, localName, qName);
-        }
-    }
-
-    @Override
-    public void characters(char ch[], int start, int length) throws SAXException {
-        super.characters(ch, start, length);
-        if (xmlWriter != null) {
-            xmlWriter.characters(ch, start, length);
-        }
-    }
-
-    @Override
-    public void warning(SAXParseException saxparseexception) throws SAXException {
-        super.warning(saxparseexception);
-    }
-
-    @Override
-    public void error(SAXParseException exception) throws SAXException {
-        super.error(exception);
-    }
-
-    @Override
-    public void fatalError(SAXParseException exception) throws SAXException {
-        super.fatalError(exception);
-    }
-
-    @Override
-    public void startDTD(String name, String publicId, String systemId) throws SAXException {
-        super.startDTD(name, publicId, systemId);
-        if (xmlWriter != null) {
-            xmlWriter.startDTD(name, publicId, systemId);
-        }
-    }
-
-    @Override
-    public void endDTD() throws SAXException {
-        super.endDTD();
-        if (xmlWriter != null) {
-            xmlWriter.endDTD();
-        }
-    }
-
-    @Override
-    public void startEntity(String name) throws SAXException {
-        super.startEntity(name);
-        if (xmlWriter != null) {
-            xmlWriter.startEntity(name);
-        }
-    }
-
-    @Override
-    public void endEntity(String name) throws SAXException {
-        super.endEntity(name);
-        if (xmlWriter != null) {
-            xmlWriter.endEntity(name);
-        }
-    }
-
-    @Override
-    public void startCDATA() throws SAXException {
-        super.startCDATA();
-        if (xmlWriter != null) {
-            xmlWriter.startCDATA();
-        }
-    }
-
-    @Override
-    public void endCDATA() throws SAXException {
-        super.endCDATA();
-        if (xmlWriter != null) {
-            xmlWriter.endCDATA();
-        }
-    }
-
-    @Override
-    public void comment(char ch[], int start, int end) throws SAXException {
-        super.comment(ch, start, end);
-        if (xmlWriter != null) {
-            xmlWriter.comment(ch, start, end);
-        }
-    }
-
-    @Override
-    public void elementDecl(String name, String model) throws SAXException {
-        super.elementDecl(name, model);
-    }
-
-    @Override
-    public void attributeDecl(String eName, String aName, String type, String valueDefault,
-                              String val) throws SAXException {
-        super.attributeDecl(eName, aName, type, valueDefault, val);
-    }
-
-    @Override
-    public void internalEntityDecl(String name, String value) throws SAXException {
-        super.internalEntityDecl(name, value);
-    }
-
-    @Override
-    public void externalEntityDecl(String name, String publicId, String sysId) throws SAXException {
-        super.externalEntityDecl(name, publicId, sysId);
-    }
-
-    @Override
-    public void notationDecl(String s, String s1, String s2) throws SAXException {
-        super.notationDecl(s, s1, s2);
-        if (xmlWriter != null) {
-            xmlWriter.notationDecl(s, s1, s2);
-        }
-    }
-
-    @Override
-    public void unparsedEntityDecl(String s, String s1, String s2, String s3) throws SAXException {
-        super.unparsedEntityDecl(s, s1, s2, s3);
-        if (xmlWriter != null) {
-            xmlWriter.unparsedEntityDecl(s, s1, s2, s3);
-        }
-    }
-}
index 9a84cce..9750406 100644 (file)
 
 package org.tizen.webuibuilder.model.io;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class TizenFileFormatter {
@@ -45,24 +49,37 @@ public class TizenFileFormatter {
         this.desc = desc;
     }
 
-    public Element GenerateFileFormat() {
-        Element rootElem = DocumentHelper.createElement(ELEMENT_TIZEN_FILE);
+    public Document GenerateFileFormat() {
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+       DocumentBuilder docBuilder = null;
+               try {
+                       docBuilder = factory.newDocumentBuilder();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       
+       Document doc = docBuilder.newDocument();
+       
+        Element rootElem = doc.createElement(ELEMENT_TIZEN_FILE);
 
-        Element elem0 = DocumentHelper.createElement(ELEMENT_FILE_INFO);
-        rootElem.add(elem0);
+        Element elem0 = doc.createElement(ELEMENT_FILE_INFO);
+        rootElem.appendChild(elem0);
 
-        Element elem = DocumentHelper.createElement(ELEMENT_TYPE);
-        elem.setText(type);
-        elem0.add(elem);
+        Element elem = doc.createElement(ELEMENT_TYPE);
+        elem.setTextContent(type);
+        elem0.appendChild(elem);
 
-        elem = DocumentHelper.createElement(ELEMENT_VERSION);
-        elem.setText(version);
-        elem0.add(elem);
+        elem = doc.createElement(ELEMENT_VERSION);
+        elem.setTextContent(version);
+        elem0.appendChild(elem);
 
-        elem = DocumentHelper.createElement(ELEMENT_DESC);
-        elem.setText(desc);
-        elem0.add(elem);
+        elem = doc.createElement(ELEMENT_DESC);
+        elem.setTextContent(desc);
+        elem0.appendChild(elem);
 
-        return rootElem;
+        doc.appendChild(rootElem);
+        
+        return doc;
     }
 }
index 24be19d..54d16ff 100644 (file)
@@ -42,7 +42,6 @@ import javax.xml.xpath.XPathFactory;
 
 import org.apache.xerces.parsers.DOMParser;
 import org.cyberneko.html.HTMLConfiguration;
-import org.dom4j.io.DocumentSource;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.Part;
 import org.tizen.webuibuilder.model.PartEvent;
@@ -172,12 +171,12 @@ public class PageDataForHTML extends PageData {
         Transformer transformer = null;
         try {
             transformer =
-                    transformerFactory.newTransformer(new DocumentSource(getDescriptorManager()
+                    transformerFactory.newTransformer(new DOMSource(getDescriptorManager()
                             .getXsltDocument()));
         } catch (TransformerConfigurationException e) {
             e.printStackTrace();
         }
-        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.NO);
+        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, BuilderConstants.YES);
         transformer.setOutputProperty(OutputKeys.INDENT, BuilderConstants.NO);
         transformer.setOutputProperty(OutputKeys.ENCODING, BuilderConstants.ENCODING);
         transformer.setOutputProperty(OutputKeys.METHOD, BuilderConstants.HTML);
index e34d471..055354e 100644 (file)
 package org.tizen.webuibuilder.model.project;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectNature;
@@ -38,8 +44,11 @@ import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.animator.perspective.AnimatorPerspectiveListener;
+import org.tizen.webuibuilder.model.PartFactory;
 import org.tizen.webuibuilder.model.app.AppManager;
 import org.tizen.webuibuilder.model.app.AppManagerForAppXML;
 import org.tizen.webuibuilder.model.descriptors.DescriptorManager;
@@ -193,18 +202,27 @@ public class ProjectManager {
        }
 
        private void loadToolPath(String filePath) {
-               SAXReader reader = new SAXReader();
+               DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+               DocumentBuilder builder = null;
                Document doc = null;
-               Element root = null;
 
                try {
-                       doc = reader.read(filePath);
-               } catch (DocumentException e) {
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(new File(filePath));
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
                        e.printStackTrace();
+               } catch (IOException e) {
+                       Logger logger = LoggerFactory.getLogger(PartFactory.class);
+                       logger.error(BuilderConstants.LOG_READ_PAGE_ERROR);
+                       if (doc == null) {
+                               return;
+                       }
                }
 
-               if (doc != null && doc.getRootElement() != null) {
-                       root = doc.getRootElement();
+               if (doc != null && doc.getDocumentElement() != null) {
+                       Element root = doc.getDocumentElement();
                        FileReader fileReader = new FileReader(root);
                        if (!fileReader.isValidate()) {
                                return;
@@ -216,13 +234,24 @@ public class ProjectManager {
                                return;
                        }
 
-                       for (Object childObj : root.elements("tizenToolPath")) {
-                               for (Object childObj2 : ((Element)childObj).elements("descriptor")) {
-                                       descriptorFilePath = ((Element) childObj2).getTextTrim();
-                               }
-                               for (Object childObj2 : ((Element)childObj).elements("descriptorIcons")) {
-                               }
-                               for (Object childObj2 : ((Element)childObj).elements("buildXslt")) {
+                       NodeList elemList = root.getElementsByTagName("tizenToolPath");
+                       if (elemList.getLength() > 0) {
+                               Node firstChild = elemList.item(0);
+                               if (firstChild instanceof Element) {
+                                       elemList = firstChild.getChildNodes();
+                                       for (int i = 0; i < elemList.getLength(); i++) {
+                                               Node childNode = elemList.item(i);
+                                               if (childNode instanceof Element) {
+                                                       if (childNode.getNodeName().equals("descriptor")) {
+                                                               descriptorFilePath = ((Element) childNode)
+                                                                               .getTextContent().trim();
+                                                       } else if (childNode.getNodeName().equals(
+                                                                       "descriptorIcons")) {
+                                                       } else if (childNode.getNodeName().equals(
+                                                                       "buildXslt")) {
+                                                       }
+                                               }
+                                       }
                                }
                        }
                }
index 329cde2..e01af20 100644 (file)
 
 package org.tizen.webuibuilder.model.project.io;
 
+import java.io.IOException;
 import java.net.URL;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.tizen.webuibuilder.BuilderConstants;
+import org.tizen.webuibuilder.model.PartFactory;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
 
 
 public class ProjectReader {
     public static AppFileData read(URL descriptorPath) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
-        AppFileData descriptor = null;
 
         try {
-            doc = reader.read(descriptorPath);
-        } catch (DocumentException e) {
-            e.printStackTrace();
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(descriptorPath.openStream());
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+            Logger logger = LoggerFactory.getLogger(PartFactory.class);
+            logger.error(BuilderConstants.LOG_READ_PAGE_ERROR);
+            if (doc == null) {
+                return null;
+            }
         }
 
-        if (doc != null && doc.getRootElement() != null) {
-            descriptor = ProjectReader_ver_2.parse(doc.getRootElement());
+        AppFileData descriptor = null;
+
+        if (doc != null && doc.getDocumentElement() != null) {
+            descriptor = ProjectReader_ver_2.parse(doc.getDocumentElement());
             if (descriptor == null) {
-                descriptor = ProjectReader_ver_1.parse(doc.getRootElement());
+                descriptor = ProjectReader_ver_1.parse(doc.getDocumentElement());
             }
         }
 
index 426903e..f344196 100644 (file)
 
 package org.tizen.webuibuilder.model.project.io;
 
-import org.dom4j.Element;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
 import org.tizen.webuibuilder.model.app.Page;
 import org.tizen.webuibuilder.model.app.Stylesheet;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 
 
 class FrameworkEntry {
@@ -51,67 +53,83 @@ public class ProjectReader_ver_1 {
         descriptor = new AppFileData();
         descriptor.setProjectFileVersion("0.0.1");
 
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_PROJECTINFO)) {
-            parseProjectInfo((Element) childObj, descriptor);
-        }
-
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_PAGESYSTEM)) {
-            parsePart((Element) childObj, descriptor);
-        }
+       NodeList elemList = root.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PROJECTINFO)) {
+                       parseProjectInfo((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGESYSTEM)) {
+                       parsePart((Element) childNode, descriptor);
+               }
+               }
+       }
 
         return descriptor;
     }
 
     private static void parseProjectInfo(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_TITLE)) {
-            Element title = (Element) childObj;
-            descriptor.setTitle(title.getText());
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_AUTHOR)) {
-            Element author = (Element) childObj;
-            descriptor.setAuthor(author.getText());
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VERSION)) {
-            Element version = (Element) childObj;
-            descriptor.setVersion(version.getText());
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_TITLE)) {
+                   Element title = (Element) childNode;
+                   descriptor.setTitle(title.getTextContent());
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_AUTHOR)) {
+                   Element author = (Element) childNode;
+                   descriptor.setAuthor(author.getTextContent());
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_VERSION)) {
+                   Element version = (Element) childNode;
+                   descriptor.setVersion(version.getTextContent());
+               }
+               }
+       }
     }
 
     private static void parsePart(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORKS)) {
-            parseFrameworks((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARIES)) {
-            parseLibraries((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_PAGES)) {
-            parsePages((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_ENTRIES)) {
-            parseEntrys((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEETS)) {
-            parseStylesheets((Element) childObj, descriptor);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORKS)) {
+                       parseFrameworks((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_LIBRARIES)) {
+                       parseLibraries((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGES)) {
+                       parsePages((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_ENTRIES)) {
+                       parseEntrys((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_STYLESHEETS)) {
+                       parseStylesheets((Element) childNode, descriptor);
+               }
+               }
+       }
     }
 
     private static void parseFrameworks(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORK_THEME)) {
-            String theme = parseTheme((Element) childObj);
-            descriptor.addOrReplaceFrameworkVariable("theme", theme);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            FrameworkEntry frameworkentry = parseFramework((Element) childObj, descriptor);
-            descriptor.addLibrary(frameworkentry.library);
-            if (frameworkentry.framework != null) {
-                descriptor.addFramework(frameworkentry.framework);
-            }
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORK_THEME)) {
+                   String theme = parseTheme((Element) childNode);
+                   descriptor.addOrReplaceFrameworkVariable("theme", theme);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_SCRIPT)) {
+                   FrameworkEntry frameworkentry = parseFramework((Element) childNode, descriptor);
+                   descriptor.addLibrary(frameworkentry.library);
+                   if (frameworkentry.framework != null) {
+                       descriptor.addFramework(frameworkentry.framework);
+                   }
+               }
+               }
+       }
     }
 
     private static void parseLibraries(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            Library script = parseScript((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_SCRIPT);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Library script = parseScript((Element) elemList.item(i));
             descriptor.addLibrary(script);
         }
 
@@ -120,17 +138,18 @@ public class ProjectReader_ver_1 {
     }
 
     private static void parsePages(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_PAGE)) {
-            Element element2 = (Element) childObj;
+       NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_PAGE);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String startup = element2.attributeValue(BuilderConstants.ATTRIBUTE_STARTUP);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String startup = element2.getAttribute(BuilderConstants.ATTRIBUTE_STARTUP);
             boolean boolStartup = Boolean.valueOf(startup).booleanValue();
-            String pagePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_PAGEPATH);
-            String jsPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSPATH);
+            String pagePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH);
+            String jsPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSPATH);
             String managedJsPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
-            String htmlPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_HTMLPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
+            String htmlPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH);
             String cssPath = htmlPath.replace(".html", ".css");
             String managedCssPath = htmlPath.replace(".html", ".managed.css");
 
@@ -146,8 +165,9 @@ public class ProjectReader_ver_1 {
     }
 
     private static void parseEntrys(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_SCRIPT)) {
-            Library entry = parseEntry((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_SCRIPT);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Library entry = parseEntry((Element) elemList.item(i));
             descriptor.addLibrary(entry);
         }
     }
@@ -155,14 +175,16 @@ public class ProjectReader_ver_1 {
     private static void parseStylesheets(Element elem, AppFileData descriptor) {
         Stylesheet stylesheet = new Stylesheet("pages", "all", "");
         descriptor.addStylesheet(stylesheet);
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEET)) {
-            stylesheet = parseStylesheet((Element) childObj);
+        
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_STYLESHEET);
+       for(int i = 0; i < elemList.getLength(); i++){
+            stylesheet = parseStylesheet((Element) elemList.item(i));
             descriptor.addStylesheet(stylesheet);
         }
     }
 
     private static String parseTheme(Element element) {
-        String theme = element.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
+        String theme = element.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
 
         return theme;
     }
@@ -170,9 +192,9 @@ public class ProjectReader_ver_1 {
     private static FrameworkEntry parseFramework(Element element, AppFileData descriptor) {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
-        String theme = element.attributeValue(BuilderConstants.ATTRIBUTE_THEME);
-        String viewport = element.attributeValue(BuilderConstants.ATTRIBUTE_SCALE);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
+        String theme = element.getAttribute(BuilderConstants.ATTRIBUTE_THEME);
+        String viewport = element.getAttribute(BuilderConstants.ATTRIBUTE_SCALE);
         String core = "";
 
         if (theme != null && !theme.isEmpty()) {
@@ -201,7 +223,7 @@ public class ProjectReader_ver_1 {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
         String type = "user";
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Library script = new Library(type, path); // type == "user"
 
@@ -212,7 +234,7 @@ public class ProjectReader_ver_1 {
         // String type =
         // element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
         String type = " entry";
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Library framework = new Library(type, path); // type == "entry"
 
@@ -220,7 +242,7 @@ public class ProjectReader_ver_1 {
     }
 
     private static Stylesheet parseStylesheet(Element element) {
-        String path = element.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
+        String path = element.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
 
         Stylesheet stylesheet = new Stylesheet("user", path, "");
 
index 582ac5e..b8b1897 100644 (file)
@@ -26,7 +26,9 @@ package org.tizen.webuibuilder.model.project.io;
 import java.util.AbstractMap;
 import java.util.Map.Entry;
 
-import org.dom4j.Element;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.animator.AnimatorConstants;
 import org.tizen.webuibuilder.model.app.Framework;
@@ -56,75 +58,86 @@ public class ProjectReader_ver_2 {
         descriptor = new AppFileData();
         descriptor.setProjectFileVersion(fileReader.getVersion());
 
-        for (Object childObj : root.elements(BuilderConstants.ELEMENT_TIZENPROJECT)) {
-            parsePart((Element) childObj, descriptor);
+       NodeList elemList = root.getElementsByTagName(BuilderConstants.ELEMENT_TIZENPROJECT);
+       for(int i = 0; i < elemList.getLength(); i++){
+               parsePart((Element) elemList.item(i), descriptor);
         }
 
         return descriptor;
     }
 
     private static void parsePart(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_METAS)) {
-            parseMetas((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARIES)) {
-            parseLibrarys((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORKS)) {
-            parseFrameworks((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_PAGES)) {
-            parsePage((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEETS)) {
-            parseStylesheets((Element) childObj, descriptor);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_METAS)) {
+                       parseMetas((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_LIBRARIES)) {
+                       parseLibrarys((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORKS)) {
+                       parseFrameworks((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_PAGES)) {
+                       parsePage((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_STYLESHEETS)) {
+                       parseStylesheets((Element) childNode, descriptor);
+               }
+               }
+       }
     }
 
     private static void parseMetas(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_META)) {
-            Meta meta = parseMeta((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_META);
+       for(int i = 0; i < elemList.getLength(); i++){
+               Meta meta = parseMeta((Element) elemList.item(i));
             descriptor.addMeta(meta);
         }
     }
 
     private static void parseFrameworks(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VARIABLES)) {
-            parseFrameworkVariables((Element) childObj, descriptor);
-        }
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_FRAMEWORK)) {
-            Framework script = parseFramework((Element) childObj);
-            descriptor.addFramework(script);
-        }
+       NodeList elemList = elem.getChildNodes();
+       for(int i = 0; i < elemList.getLength(); i++){
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+               if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_VARIABLES)) {
+                       parseFrameworkVariables((Element) childNode, descriptor);
+               } else if(childNode.getNodeName().equals(BuilderConstants.ELEMENT_FRAMEWORK)) {
+                       Framework script = parseFramework((Element) childNode);
+                   descriptor.addFramework(script);
+               }
+               }
+       }
     }
 
     private static void parseLibrarys(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_LIBRARY)) {
-            Library library = parseLibrary((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_LIBRARY);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Library library = parseLibrary((Element) elemList.item(i));
             descriptor.addLibrary(library);
         }
     }
 
     private static void parsePage(Element element, AppFileData descriptor) {
-        for (Object childObj : element.elements(BuilderConstants.ELEMENT_PAGE)) {
-            Element element2 = (Element) childObj;
+       NodeList elemList = element.getElementsByTagName(BuilderConstants.ELEMENT_PAGE);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Element element2 = (Element) elemList.item(i);
 
-            String name = element2.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-            String startup = element2.attributeValue(BuilderConstants.ATTRIBUTE_STARTUP);
+            String name = element2.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+            String startup = element2.getAttribute(BuilderConstants.ATTRIBUTE_STARTUP);
             boolean boolStartup = Boolean.valueOf(startup).booleanValue();
-            String pagePath = element2.attributeValue(BuilderConstants.ATTRIBUTE_PAGEPATH);
-            String jsPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_JSPATH);
+            String pagePath = element2.getAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH);
+            String jsPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSPATH);
             String managedJsPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
-            String htmlPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_HTMLPATH);
-            String cssPath = element2.attributeValue(BuilderConstants.ATTRIBUTE_CSSPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH);
+            String htmlPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH);
+            String cssPath = element2.getAttribute(BuilderConstants.ATTRIBUTE_CSSPATH);
             String managedCssPath =
-                    element2.attributeValue(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH);
+                    element2.getAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH);
 
             String animatorJsPath =
-                    element2.attributeValue(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_JSPATH);
+                    element2.getAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_JSPATH);
             String animatorCssPath =
-                    element2.attributeValue(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_CSSPATH);
+                    element2.getAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_CSSPATH);
 
             Page page =
                     new Page(name, pagePath, jsPath, managedJsPath, htmlPath, cssPath,
@@ -139,23 +152,25 @@ public class ProjectReader_ver_2 {
     }
 
     private static void parseStylesheets(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_STYLESHEET)) {
-            Stylesheet stylesheet = parseStylesheet((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_STYLESHEET);
+       for(int i = 0; i < elemList.getLength(); i++){
+            Stylesheet stylesheet = parseStylesheet((Element) elemList.item(i));
             descriptor.addStylesheet(stylesheet);
         }
     }
 
     private static void parseFrameworkVariables(Element elem, AppFileData descriptor) {
-        for (Object childObj : elem.elements(BuilderConstants.ELEMENT_VARIABLE)) {
-            Entry<String, String> variable = parseFrameworkVariable((Element) childObj);
+       NodeList elemList = elem.getElementsByTagName(BuilderConstants.ELEMENT_VARIABLE);
+       for(int i = 0; i < elemList.getLength(); i++){
+               Entry<String, String> variable = parseFrameworkVariable((Element) elemList.item(i));
             descriptor.addFrameworkVariable(variable.getKey(), variable.getValue());
         }
     }
 
     private static Framework parseFramework(Element elem) {
-        String param = elem.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String path = elem.attributeValue(BuilderConstants.ATTRIBUTE_PATH);
-        String param2 = elem.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String param = elem.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String path = elem.getAttribute(BuilderConstants.ATTRIBUTE_PATH);
+        String param2 = elem.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Framework framework = new Framework(param, path, param2);
 
@@ -163,8 +178,8 @@ public class ProjectReader_ver_2 {
     }
 
     private static Entry<String, String> parseFrameworkVariable(Element elem) {
-        String name = elem.attributeValue(BuilderConstants.ATTRIBUTE_NAME);
-        String value = elem.attributeValue(BuilderConstants.ATTRIBUTE_VALUE);
+        String name = elem.getAttribute(BuilderConstants.ATTRIBUTE_NAME);
+        String value = elem.getAttribute(BuilderConstants.ATTRIBUTE_VALUE);
 
         Entry<String, String> variable = new AbstractMap.SimpleEntry<String, String>(name, value);
 
@@ -172,9 +187,9 @@ public class ProjectReader_ver_2 {
     }
 
     private static Meta parseMeta(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String param2 = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String param2 = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Meta meta = new Meta(type, param, param2);
 
@@ -182,8 +197,8 @@ public class ProjectReader_ver_2 {
     }
 
     private static Library parseLibrary(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
 
         Library library = new Library(type, param);
 
@@ -191,9 +206,9 @@ public class ProjectReader_ver_2 {
     }
 
     private static Stylesheet parseStylesheet(Element element) {
-        String type = element.attributeValue(BuilderConstants.ATTRIBUTE_TYPE);
-        String param = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM);
-        String param2 = element.attributeValue(BuilderConstants.ATTRIBUTE_PARAM2);
+        String type = element.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+        String param = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM);
+        String param2 = element.getAttribute(BuilderConstants.ATTRIBUTE_PARAM2);
 
         Stylesheet stylesheet = new Stylesheet(type, param, param2);
 
index d917a1c..d4d68cc 100644 (file)
@@ -28,12 +28,21 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class ProjectWriter {
@@ -41,20 +50,43 @@ public class ProjectWriter {
     private static final int INDENT_SIZE = 4;
 
     public static void writeTo(AppFileData descriptor, Writer writer) throws IOException {
-        Element elem = writeElement(descriptor);
-
-        Document doc = DocumentHelper.createDocument();
-        doc.add(elem);
-
-        OutputFormat format = OutputFormat.createPrettyPrint();
-        format.setIndentSize(INDENT_SIZE);
-
-        XMLWriter xmlwriter = new XMLWriter(writer, format);
-        // xmlwriter.setMaximumAllowedCharacter(127);
-        // xmlwriter.setEscapeText(false);
-
-        xmlwriter.write(doc);
-        xmlwriter.close();
+        Document doc = writeElement(descriptor);
+
+               DOMSource source = new DOMSource(doc);
+               StreamResult result = new StreamResult(writer);
+
+               TransformerFactory factory = TransformerFactory.newInstance();
+               Transformer transformer = null;
+               try {
+                       transformer = factory.newTransformer();
+                       transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.ENCODING,
+                                       BuilderConstants.ENCODING);
+                       transformer.setOutputProperty(OutputKeys.METHOD,
+                                       BuilderConstants.XML);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               }
+
+               try {
+                       transformer.transform(source, result);
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
+               
+//        Document doc = DocumentHelper.createDocument();
+//        doc.add(elem);
+//
+//        OutputFormat format = OutputFormat.createPrettyPrint();
+//        format.setIndentSize(INDENT_SIZE);
+//
+//        XMLWriter xmlwriter = new XMLWriter(writer, format);
+//        // xmlwriter.setMaximumAllowedCharacter(127);
+//        // xmlwriter.setEscapeText(false);
+//
+//        xmlwriter.write(doc);
+//        xmlwriter.close();
     }
 
     public static String writeToString(AppFileData descriptor) {
@@ -72,7 +104,7 @@ public class ProjectWriter {
         writeTo(descriptor, new FileWriter(filePath));
     }
 
-    public static Element writeElement(AppFileData descriptor) {
+    public static Document writeElement(AppFileData descriptor) {
         // return ProjectWriter_ver0_0_1.writeElement(descriptor);
         return ProjectWriter_ver_2.writeElement(descriptor);
     }
index c0733e9..2e943c0 100644 (file)
@@ -25,67 +25,83 @@ package org.tizen.webuibuilder.model.project.io;
 
 import java.util.List;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.app.Framework;
 import org.tizen.webuibuilder.model.app.Library;
 import org.tizen.webuibuilder.model.app.Page;
 import org.tizen.webuibuilder.model.app.Stylesheet;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class ProjectWriter_ver_1 {
 
-    public static Element writeElement(AppFileData descriptor) {
-        Element root = DocumentHelper.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
-
-        Element projectInfo = DocumentHelper.createElement(BuilderConstants.ELEMENT_PROJECTINFO);
-        root.add(projectInfo);
-        writeProjectInfo(projectInfo, descriptor);
-
-        Element pageSystem = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGESYSTEM);
-        root.add(pageSystem);
-
-        Element frameworks = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
-        pageSystem.add(frameworks);
-        writeFrameworks(frameworks, descriptor);
-
-        Element libraries = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARIES);
-        pageSystem.add(libraries);
-        writeLibraries(libraries, descriptor);
-
-        Element pages = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGES);
-        pageSystem.add(pages);
-        writePages(pages, descriptor);
-
-        Element entries = DocumentHelper.createElement(BuilderConstants.ELEMENT_ENTRIES);
-        pageSystem.add(entries);
-        writeEntries(entries, descriptor);
-
-        Element stylesheets = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
-        pageSystem.add(stylesheets);
-        writeStylesheets(stylesheets, descriptor);
-
-        return root;
+    public static Document writeElement(AppFileData descriptor) {
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+       DocumentBuilder docBuilder = null;
+               try {
+                       docBuilder = factory.newDocumentBuilder();
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+       
+       Document doc = docBuilder.newDocument();
+                       
+        Element root = doc.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
+        doc.appendChild(root);
+
+        Element projectInfo = doc.createElement(BuilderConstants.ELEMENT_PROJECTINFO);
+        root.appendChild(projectInfo);
+        writeProjectInfo(doc, projectInfo, descriptor);
+
+        Element pageSystem = doc.createElement(BuilderConstants.ELEMENT_PAGESYSTEM);
+        root.appendChild(pageSystem);
+
+        Element frameworks = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
+        pageSystem.appendChild(frameworks);
+        writeFrameworks(doc, frameworks, descriptor);
+
+        Element libraries = doc.createElement(BuilderConstants.ELEMENT_LIBRARIES);
+        pageSystem.appendChild(libraries);
+        writeLibraries(doc, libraries, descriptor);
+
+        Element pages = doc.createElement(BuilderConstants.ELEMENT_PAGES);
+        pageSystem.appendChild(pages);
+        writePages(doc, pages, descriptor);
+
+        Element entries = doc.createElement(BuilderConstants.ELEMENT_ENTRIES);
+        pageSystem.appendChild(entries);
+        writeEntries(doc, entries, descriptor);
+
+        Element stylesheets = doc.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
+        pageSystem.appendChild(stylesheets);
+        writeStylesheets(doc, stylesheets, descriptor);
+
+        return doc;
     }
 
-    private static void writeProjectInfo(Element element, AppFileData descriptor) {
-        Element title = DocumentHelper.createElement(BuilderConstants.ELEMENT_TITLE);
-        title.addText(descriptor.getTitle());
-        element.add(title);
+    private static void writeProjectInfo(Document doc, Element element, AppFileData descriptor) {
+        Element title = doc.createElement(BuilderConstants.ELEMENT_TITLE);
+        title.setTextContent(descriptor.getTitle());
+        element.appendChild(title);
 
-        Element author = DocumentHelper.createElement(BuilderConstants.ELEMENT_AUTHOR);
-        author.addText(descriptor.getAuthor());
-        element.add(author);
+        Element author = doc.createElement(BuilderConstants.ELEMENT_AUTHOR);
+        author.setTextContent(descriptor.getAuthor());
+        element.appendChild(author);
 
-        Element version = DocumentHelper.createElement(BuilderConstants.ELEMENT_VERSION);
-        version.addText(descriptor.getVersion());
-        element.add(version);
+        Element version = doc.createElement(BuilderConstants.ELEMENT_VERSION);
+        version.setTextContent(descriptor.getVersion());
+        element.appendChild(version);
     }
 
-    private static void writeFrameworks(Element element, AppFileData descriptor) {
-        element.add(writeTheme(descriptor.getFrameworkVariable("theme")));
+    private static void writeFrameworks(Document doc, Element element, AppFileData descriptor) {
+        element.appendChild(writeTheme(doc, descriptor.getFrameworkVariable("theme")));
 
         List<Library> frameworks = descriptor.getLibraries();
 
@@ -95,14 +111,14 @@ public class ProjectWriter_ver_1 {
             if (!framework.getType().equals("framework") && !framework.getType().equals("system")) {
                 continue;
             }
-            Element elm = writeFramework(framework, descriptor);
+            Element elm = writeFramework(doc, framework, descriptor);
             if (elm != null) {
-                element.add(elm);
+                element.appendChild(elm);
             }
         }
     }
 
-    private static void writeLibraries(Element element, AppFileData descriptor) {
+    private static void writeLibraries(Document doc, Element element, AppFileData descriptor) {
         List<Library> libraries = descriptor.getLibraries();
 
         int size = libraries.size();
@@ -110,20 +126,20 @@ public class ProjectWriter_ver_1 {
             if (!libraries.get(i).getType().equals("user")) {
                 continue;
             }
-            element.add(writeScript(libraries.get(i)));
+            element.appendChild(writeScript(doc, libraries.get(i)));
         }
     }
 
-    private static void writePages(Element element, AppFileData descriptor) {
+    private static void writePages(Document doc, Element element, AppFileData descriptor) {
         List<Page> pages = descriptor.getPages();
 
         int size = pages.size();
         for (int i = 0; i < size; i++) {
-            element.add(writePage(pages.get(i), i == descriptor.getStartupPage()));
+            element.appendChild(writePage(doc, pages.get(i), i == descriptor.getStartupPage()));
         }
     }
 
-    private static void writeEntries(Element element, AppFileData descriptor) {
+    private static void writeEntries(Document doc, Element element, AppFileData descriptor) {
         List<Library> entries = descriptor.getLibraries();
 
         int size = entries.size();
@@ -131,11 +147,11 @@ public class ProjectWriter_ver_1 {
             if (!entries.get(i).getType().equals("entry")) {
                 continue;
             }
-            element.add(writeEntry(entries.get(i)));
+            element.appendChild(writeEntry(doc, entries.get(i)));
         }
     }
 
-    private static void writeStylesheets(Element element, AppFileData descriptor) {
+    private static void writeStylesheets(Document doc, Element element, AppFileData descriptor) {
         List<Stylesheet> stylesheets = descriptor.getStylesheets();
 
         int size = stylesheets.size();
@@ -143,19 +159,19 @@ public class ProjectWriter_ver_1 {
             if (!stylesheets.get(i).getType().equals("user")) {
                 continue;
             }
-            element.add(writeStylesheet(stylesheets.get(i)));
+            element.appendChild(writeStylesheet(doc, stylesheets.get(i)));
         }
     }
 
-    private static Element writeTheme(String theme) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORK_THEME);
+    private static Element writeTheme(Document doc, String theme) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORK_THEME);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, theme);
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, theme);
 
         return element;
     }
 
-    private static Element writeFramework(Library framework, AppFileData descriptor) {
+    private static Element writeFramework(Document doc, Library framework, AppFileData descriptor) {
         Framework data = null;
         if (framework.getType().equals("framework")) {
             data = descriptor.findFramework(framework.getParam());
@@ -164,65 +180,65 @@ public class ProjectWriter_ver_1 {
             }
         }
 
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
         if (data != null) {
             String path = new String(data.getPath());
             path = path.replaceAll("%tizen-web-ui-fw-path%", "./tizen-web-ui-fw/latest");
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
 
             if (data.getParam2() != null && !data.getParam2().isEmpty()) {
-                element.addAttribute(BuilderConstants.ATTRIBUTE_THEME,
+                element.setAttribute(BuilderConstants.ATTRIBUTE_THEME,
                                      descriptor.getFrameworkVariable("theme"));
-                element.addAttribute(BuilderConstants.ATTRIBUTE_SCALE,
+                element.setAttribute(BuilderConstants.ATTRIBUTE_SCALE,
                                      descriptor.getFrameworkVariable("viewport-scale"));
             }
         } else {
             String path = new String(framework.getParam());
             path = path.replaceAll("%tizen-web-ui-fw-path%", "./tizen-web-ui-fw/latest");
-            element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
+            element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, path);
         }
 
         return element;
     }
 
-    private static Element writeEntry(Library framework) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+    private static Element writeEntry(Document doc, Library framework) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getParam());
 
         return element;
     }
 
-    private static Element writeScript(Library script) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_SCRIPT);
+    private static Element writeScript(Document doc, Library script) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_SCRIPT);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "user");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, script.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "user");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, script.getParam());
 
         return element;
     }
 
-    private static Element writePage(Page page, boolean isStartup) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGE);
+    private static Element writePage(Document doc, Page page, boolean isStartup) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_PAGE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, "system");
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
 
         return element;
     }
 
-    private static Element writeStylesheet(Stylesheet stylesheet) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEET);
+    private static Element writeStylesheet(Document doc, Stylesheet stylesheet) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_STYLESHEET);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, stylesheet.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, stylesheet.getParam());
 
         return element;
     }
index 269cbae..5a11478 100644 (file)
@@ -27,8 +27,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.animator.AnimatorConstants;
 import org.tizen.webuibuilder.model.app.Framework;
@@ -37,141 +35,143 @@ import org.tizen.webuibuilder.model.app.Page;
 import org.tizen.webuibuilder.model.app.Stylesheet;
 import org.tizen.webuibuilder.model.filedata.AppFileData;
 import org.tizen.webuibuilder.model.io.TizenFileFormatter;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 
 public class ProjectWriter_ver_2 {
 
-    public static Element writeElement(AppFileData descriptor) {
+    public static Document writeElement(AppFileData descriptor) {
         TizenFileFormatter fmt =
                 new TizenFileFormatter("tizen-project", "2", "Tizen Web UI Builder Project");
 
-        Element root = fmt.GenerateFileFormat();
+        Document doc = fmt.GenerateFileFormat();
 
-        Element pageSystem = DocumentHelper.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
-        root.add(pageSystem);
+        Element pageSystem = doc.createElement(BuilderConstants.ELEMENT_TIZENPROJECT);
+        doc.appendChild(pageSystem);
 
-        Element libraries = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARIES);
-        pageSystem.add(libraries);
-        writeLibraries(libraries, descriptor);
+        Element libraries = doc.createElement(BuilderConstants.ELEMENT_LIBRARIES);
+        pageSystem.appendChild(libraries);
+        writeLibraries(doc, libraries, descriptor);
 
-        Element frameworks = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
-        pageSystem.add(frameworks);
-        writeFrameworks(frameworks, descriptor);
+        Element frameworks = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORKS);
+        pageSystem.appendChild(frameworks);
+        writeFrameworks(doc, frameworks, descriptor);
 
-        Element pages = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGES);
-        pageSystem.add(pages);
-        writePages(pages, descriptor);
+        Element pages = doc.createElement(BuilderConstants.ELEMENT_PAGES);
+        pageSystem.appendChild(pages);
+        writePages(doc, pages, descriptor);
 
-        Element stylesheets = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
-        pageSystem.add(stylesheets);
-        writeStylesheets(stylesheets, descriptor);
+        Element stylesheets = doc.createElement(BuilderConstants.ELEMENT_STYLESHEETS);
+        pageSystem.appendChild(stylesheets);
+        writeStylesheets(doc, stylesheets, descriptor);
 
-        return root;
+        return doc;
     }
 
-    private static void writeFrameworks(Element element, AppFileData descriptor) {
-        element.add(writeFrameworkVariables(element, descriptor));
+    private static void writeFrameworks(Document doc, Element element, AppFileData descriptor) {
+        element.appendChild(writeFrameworkVariables(doc, element, descriptor));
 
         List<Framework> frameworks = descriptor.getFrameworks();
 
         int size = frameworks.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeFramework(frameworks.get(i)));
+            element.appendChild(writeFramework(doc, frameworks.get(i)));
         }
     }
 
-    private static Element writeFrameworkVariables(Element element, AppFileData descriptor) {
-        Element element2 = DocumentHelper.createElement(BuilderConstants.ELEMENT_VARIABLES);
+    private static Element writeFrameworkVariables(Document doc, Element element, AppFileData descriptor) {
+        Element element2 = doc.createElement(BuilderConstants.ELEMENT_VARIABLES);
 
         Map<String, String> variables = descriptor.getFrameworkVariables();
 
         for (Entry<String, String> variable : variables.entrySet()) {
-            element2.add(writeFrameworkVariable(variable));
+            element2.appendChild(writeFrameworkVariable(doc, variable));
         }
 
         return element2;
     }
 
-    private static void writeLibraries(Element element, AppFileData descriptor) {
+    private static void writeLibraries(Document doc, Element element, AppFileData descriptor) {
         List<Library> libraries = descriptor.getLibraries();
 
         int size = libraries.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeLibrary(libraries.get(i)));
+            element.appendChild(writeLibrary(doc, libraries.get(i)));
         }
     }
 
-    private static void writePages(Element element, AppFileData descriptor) {
+    private static void writePages(Document doc, Element element, AppFileData descriptor) {
         List<Page> pages = descriptor.getPages();
 
         int size = pages.size();
         for (int i = 0; i < size; i++) {
-            element.add(writePage(pages.get(i), i == descriptor.getStartupPage()));
+            element.appendChild(writePage(doc, pages.get(i), i == descriptor.getStartupPage()));
         }
     }
 
-    private static void writeStylesheets(Element element, AppFileData descriptor) {
+    private static void writeStylesheets(Document doc, Element element, AppFileData descriptor) {
         List<Stylesheet> stylesheets = descriptor.getStylesheets();
 
         int size = stylesheets.size();
         for (int i = 0; i < size; i++) {
-            element.add(writeStylesheet(stylesheets.get(i)));
+            element.appendChild(writeStylesheet(doc, stylesheets.get(i)));
         }
     }
 
-    private static Element writeLibrary(Library library) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_LIBRARY);
+    private static Element writeLibrary(Document doc, Library library) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_LIBRARY);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, library.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, library.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, library.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, library.getParam());
 
         return element;
     }
 
-    private static Element writeFramework(Framework framework) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_FRAMEWORK);
+    private static Element writeFramework(Document doc, Framework framework) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_FRAMEWORK);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, framework.getParam());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM2, framework.getParam2());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, framework.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PATH, framework.getPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM2, framework.getParam2());
 
         return element;
     }
 
-    private static Element writeFrameworkVariable(Entry<String, String> variable) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_VARIABLE);
+    private static Element writeFrameworkVariable(Document doc, Entry<String, String> variable) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_VARIABLE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, variable.getKey());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_VALUE, variable.getValue());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, variable.getKey());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_VALUE, variable.getValue());
 
         return element;
     }
 
-    private static Element writePage(Page page, boolean isStartup) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_PAGE);
+    private static Element writePage(Document doc, Page page, boolean isStartup) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_PAGE);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_CSSPATH, page.getCssPath());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH, page.getManagedCssPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_NAME, page.getName());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_STARTUP, Boolean.toString(isStartup));
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PAGEPATH, page.getPagePath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_JSPATH, page.getJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGEDJSPATH, page.getManagedJsPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_HTMLPATH, page.getHtmlPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_CSSPATH, page.getCssPath());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_MANAGED_CSSPATH, page.getManagedCssPath());
 
-        element.addAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_JSPATH,
+        element.setAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_JSPATH,
                              page.getAnimatorManagedJsPath());
-        element.addAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_CSSPATH,
+        element.setAttribute(AnimatorConstants.ATTRIBUTE_ANIMATOR_MANAGED_CSSPATH,
                              page.getAnimatorManagedCssPath());
 
         return element;
     }
 
-    private static Element writeStylesheet(Stylesheet stylesheet) {
-        Element element = DocumentHelper.createElement(BuilderConstants.ELEMENT_STYLESHEET);
+    private static Element writeStylesheet(Document doc, Stylesheet stylesheet) {
+        Element element = doc.createElement(BuilderConstants.ELEMENT_STYLESHEET);
 
-        element.addAttribute(BuilderConstants.ATTRIBUTE_TYPE, stylesheet.getType());
-        element.addAttribute(BuilderConstants.ATTRIBUTE_PARAM, stylesheet.getParam());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, stylesheet.getType());
+        element.setAttribute(BuilderConstants.ATTRIBUTE_PARAM, stylesheet.getParam());
 
         return element;
     }
index 9882cad..7d98bb2 100644 (file)
 
 package org.tizen.webuibuilder.snippet.converter;
 
+import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringBufferInputStream;
 import java.io.StringWriter;
 import java.util.List;
 
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.SAXReader;
-import org.dom4j.io.XMLWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 import org.tizen.webuibuilder.BuilderConstants;
 import org.tizen.webuibuilder.model.PagePart;
 import org.tizen.webuibuilder.model.Part;
@@ -73,56 +84,102 @@ public class Converter implements IConverter {
      */
     @Override
     public String convert(Part part) {
-        Document document = DocumentHelper.createDocument();
-
-        Element rootElement = DocumentHelper.createElement("descriptor");
-        Element cssElement = DocumentHelper.createElement("tizen.css");
-        Element partElement = DocumentHelper.createElement("tizen.part");
-        partElement.add(PageWriter_ver_2.writePart(part, false));
-        rootElement.add(PageWriter_ver_2.writeCss(cssElement, part));
-        rootElement.add(partElement);
-        document.add(rootElement);
+        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+        DocumentBuilder builder = null;
+               try {
+                       builder = docFactory.newDocumentBuilder();
+               } catch (ParserConfigurationException e1) {
+                       // TODO Auto-generated catch block
+                       e1.printStackTrace();
+               }
+        
+        Document document = builder.newDocument();
+
+        Element rootElement = document.createElement("descriptor");
+        Element cssElement = document.createElement("tizen.css");
+        Element partElement = document.createElement("tizen.part");
+        partElement.appendChild(PageWriter_ver_2.writePart(document, part, false));
+        rootElement.appendChild(PageWriter_ver_2.writeCss(document, cssElement, part));
+        rootElement.appendChild(partElement);
+        document.appendChild(rootElement);
 
         StringWriter stringWriter = new StringWriter();
-        OutputFormat prettyFormat = OutputFormat.createPrettyPrint();
-        prettyFormat.setIndentSize(INDENT_SIZE);
-
-        XMLWriter xmlwriter = new XMLWriter(stringWriter, prettyFormat);
-        try {
-            xmlwriter.write(document);
-            xmlwriter.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+        
+               DOMSource source = new DOMSource(document);
+               StreamResult result = new StreamResult(stringWriter);
+
+               TransformerFactory factory = TransformerFactory.newInstance();
+               Transformer transformer = null;
+               try {
+                       transformer = factory.newTransformer();
+                       transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+                                       BuilderConstants.YES);
+                       transformer.setOutputProperty(OutputKeys.ENCODING,
+                                       BuilderConstants.ENCODING);
+                       transformer.setOutputProperty(OutputKeys.METHOD,
+                                       BuilderConstants.XML);
+               } catch (TransformerConfigurationException e) {
+                       e.printStackTrace();
+               }
+
+               try {
+                       transformer.transform(source, result);
+               } catch (TransformerException e) {
+                       e.printStackTrace();
+               }
+               
+//        OutputFormat prettyFormat = OutputFormat.createPrettyPrint();
+//        prettyFormat.setIndentSize(INDENT_SIZE);
+//
+//        XMLWriter xmlwriter = new XMLWriter(stringWriter, prettyFormat);
+//        try {
+//            xmlwriter.write(document);
+//            xmlwriter.close();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
 
         return stringWriter.getBuffer().toString();
     }
 
     public Part convert(String text) {
-        SAXReader reader = new SAXReader();
+       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
+       DocumentBuilder builder = null;
         Document doc = null;
+
         try {
-            doc = reader.read(new StringBufferInputStream(text));
-        } catch (DocumentException e) {
-            return null;
-        }
-        Element rootElement = doc.getRootElement();
+                       builder = factory.newDocumentBuilder();
+                       doc = builder.parse(new StringBufferInputStream(text));
+               } catch (ParserConfigurationException e) {
+                       e.printStackTrace();
+               } catch (SAXException e) {
+                       e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+
+        Element rootElement = doc.getDocumentElement();
         List<CssSelector> selectors = null;
-        for (Object child : rootElement.elements("tizen.css")) {
-            Element childElement = (Element) child;
+        NodeList elemList = rootElement.getElementsByTagName("tizen.css");
+        for (int i = 0; i < elemList.getLength(); i++) {
+            Element childElement = (Element) elemList.item(i);
             selectors = PageReader_ver_2.parseStyle((Element) childElement);
         }
 
-        Element partElement = rootElement.element("tizen.part");
-        List<Element> elements = partElement.elements();
-        Part part = parse(elements.get(0), descriptorManager, selectors);
-        return part;
+        elemList = rootElement.getElementsByTagName("tizen.part");
+        if(elemList.getLength() > 0) {
+            Element childElement = (Element) elemList.item(0);
+            Part part = parse(childElement, descriptorManager, selectors);
+            return part;
+        } else {
+               return null;
+        }
     }
 
     private static Part parse(Element element, DescriptorManager descriptorManager,
                               List<CssSelector> selectors) {
         Part part = null;
-        PartDescriptor descriptor = descriptorManager.getPartDescriptor(element.getName());
+        PartDescriptor descriptor = descriptorManager.getPartDescriptor(element.getNodeName());
         if (descriptor == null) {
         } else {
             if (descriptor instanceof WidgetPartDescriptor) {
@@ -135,9 +192,10 @@ public class Converter implements IConverter {
             }
 
             // Sets events and properties.
-            Attribute attr = null;
-            for (Object attrObj : element.attributes()) {
-                attr = (Attribute) attrObj;
+            Attr attr = null;
+            NamedNodeMap attrList = element.getAttributes();
+            for (int i = 0; i < attrList.getLength(); i++) {
+                attr = (Attr) attrList.item(i);
                 if (BuilderConstants.ATTRIBUTE_EVENT_PREFIX.equals((attr.getName())
                         .substring(0, BuilderConstants.ATTRIBUTE_EVENT_PREFIX.length()))) {
                     part.setEventValue(attr.getName(), attr.getValue());
@@ -145,7 +203,7 @@ public class Converter implements IConverter {
                     part.setPropertyValueWhenPageRead(attr.getName(), attr.getValue());
                 }
             }
-            String text = element.getText();
+            String text = element.getTextContent();
             if (!text.isEmpty()) {
                 PropertyDescriptor prop = null;
                 for (Object attrObj : descriptor.getPropertyDescriptors()) {
@@ -167,12 +225,13 @@ public class Converter implements IConverter {
             }
 
             // Adds children.
-            Element child = null;
-            Part childpart = null;
-            for (Object childObj : element.elements()) {
-                child = (Element) childObj;
-                childpart = parse(child, descriptorManager, selectors);
-                part.addChildWhenPageRead(childpart);
+            NodeList elemList = element.getChildNodes();
+            for (int i = 0; i < elemList.getLength(); i++) {
+               Node childNode = elemList.item(i);
+               if(childNode instanceof Element){
+                       Part childpart = parse((Element)childNode, descriptorManager, selectors);
+                       part.addChildWhenPageRead(childpart);
+               }
             }
         }
 
index 996af34..e53f75c 100644 (file)
@@ -446,16 +446,18 @@ public class CssStyleTab extends PropertiesTabItem implements IPageDataListener
                 String positionValue = BuilderConstants.EMPTY;
 
                 // refresh position
-                if (methodName.equals("width")) {
-                    positionValue = model.getPosition().width + "px";
-                    method.refreshValue(methodName, positionValue);
-                    refreshManagedMethods(methodName, positionValue, false);
-                    refreshFlag = false;
-                } else if (methodName.equals("height")) {
-                    positionValue = model.getPosition().height + "px";
-                    method.refreshValue(methodName, positionValue);
-                    refreshManagedMethods(methodName, positionValue, false);
-                    refreshFlag = false;
+                if(model.getPosition() != null){
+                       if (methodName.equals("width")) {                       
+                           positionValue = model.getPosition().width + "px";
+                           method.refreshValue(methodName, positionValue);
+                           refreshManagedMethods(methodName, positionValue, false);
+                           refreshFlag = false;
+                       } else if (methodName.equals("height")) {
+                           positionValue = model.getPosition().height + "px";
+                           method.refreshValue(methodName, positionValue);
+                           refreshManagedMethods(methodName, positionValue, false);
+                           refreshFlag = false;
+                       }
                 }
 
                 for (CssStyle style : cloneStyles) {