package net.ms.designer.editors.packages.ui; import java.io.File; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import net.ms.designer.core.MsProject; import net.ms.designer.editors.packages.models.Package; import net.ms.designer.editors.packages.models.PackageDiagram; import org.w3c.dom.CDATASection; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; public class WriteToProjectXML { Object type; MsProject project; public WriteToProjectXML() { } public WriteToProjectXML(MsProject project,Object type) { this.project = project; this.type = type; } public void accessXMLFile(String file)throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; db = dbf.newDocumentBuilder(); Document doc = null; File f = new File(file); if(f.exists()) { doc = db.parse(file); doc.normalize(); } PackageDiagram diagram = (PackageDiagram)type; List nodes = diagram.getNodes(); for(int i = 0; i < nodes.size();i++) { Package node = (Package)nodes.get(i); NodeList list = doc.getElementsByTagName("project"); Element package1 = doc.createElement("package"); //name����� Element p1name = doc.createElement("name"); Text p1name_model = doc.createTextNode(node.getName()); p1name.appendChild(p1name_model); package1.appendChild(p1name); //iname����ʻ����� if(!node.getIname().equals("")) { Element p1iname = doc.createElement("iname"); CDATASection p1iname_model = doc.createCDATASection(node.getIname()); p1iname.appendChild(p1iname_model); package1.appendChild(p1iname); } boolean flag = true; NodeList packs = ((Element)list.item(0)).getElementsByTagName("package"); for(int j = 0;j < packs.getLength(); j++) { String name; name = ((Element)packs.item(j)).getElementsByTagName("name").item(0).getFirstChild() .getNodeValue(); if(name.equals(node.getName())) { flag = false; break; } else { flag = true; } } if(flag) { list.item(0).appendChild(package1); } } TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(file)); transformer.transform(source, result); } /** * * @param file * @param type * @param name * @throws Exception */ public void doDelete(String file , String type , String name) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; db = dbf.newDocumentBuilder(); Document doc = null; File f = new File(file); if(f.exists()) { doc = db.parse(file); doc.normalize(); } NodeList list = doc.getElementsByTagName(type); for(int i = 0 ; i < list.getLength() ; i++) { if(((Element)list.item(i)).getElementsByTagName("name").item(0) .getFirstChild().getNodeValue().equals(name)) { doc.getElementsByTagName("project").item(0).removeChild(list.item(i)); } } TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(file)); transformer.transform(source, result); } /** * * @param file * @param type * @param tag * @param oldText * @param newText * @throws Exception */ public void changeText(String file , String type , String tag , String oldText , String newText) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; db = dbf.newDocumentBuilder(); Document doc = null; File f = new File(file); if(f.exists()) { doc = db.parse(file); doc.normalize(); } NodeList list = doc.getElementsByTagName(type); for(int i = 0 ; i < list.getLength() ; i++) { if(((Element)list.item(i)).getElementsByTagName(tag).item(0) .getFirstChild().getNodeValue().equals(oldText)) { ((Element)list.item(i)).getElementsByTagName(tag).item(0) .getFirstChild().setNodeValue(newText); } } TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(file)); transformer.transform(source, result); } }