📄 808eec7ac3b7001a1e5ff42f2510af1d
字号:
{ fragment = buildDocumentFragment(doc, DVR_CLIENT_STRING); getElement("group").setAttribute("value", parent.getAttribute("value")); Element rootElement = getRootElement(); rootElement.setAttribute("fileDir", DVR_DIR); rootElement.setAttribute("fileType", Integer.toString(type)); break; } case ENV_CLIENT: { fragment = buildDocumentFragment(doc, ENV_CLIENT_STRING); getElement("group").setAttribute("value", parent.getAttribute("value")); Element rootElement = getRootElement(); rootElement.setAttribute("fileDir", ENV_DIR); rootElement.setAttribute("fileType", Integer.toString(type)); break; } */ case DVR: { fragment = buildDocumentFragment(doc, DVR_CLIENT_STRING); getElement("group").setAttribute("value", parent.getAttribute("value")); Element rootElement = getRootElement(); rootElement.setAttribute("fileDir", DVR_DIR); rootElement.setAttribute("fileType", Integer.toString(type)); break; } case ENV: { fragment = buildDocumentFragment(doc, ENV_CLIENT_STRING); getElement("group").setAttribute("value", parent.getAttribute("value")); Element rootElement = getRootElement(); rootElement.setAttribute("fileDir", ENV_DIR); rootElement.setAttribute("fileType", Integer.toString(type)); break; } case MYDVR: { fragment = buildDocumentFragment(doc, DVR_CLIENT_STRING); getElement("group").setAttribute("value", parent.getAttribute("value")); Element rootElement = getRootElement(); rootElement.setAttribute("fileDir", DVR_DIR); rootElement.setAttribute("fileType", Integer.toString(type)); break; } case FEATURE_GROUP: case MARSHAL_GROUP: { fragment = buildDocumentFragment(doc, GROUP_STRING); break; } default: { System.out.println("cannot build new node of type " + TreeNodeTypes.strings[type] + " (" + Integer.toString(type) + ")"); new Exception().printStackTrace(); } } } // public methods // methods from HostPortData /** * */ public String getHostData() throws InvalidRequestException { checkValidity("getHostData"); Element rootElement = getRootElement(); if (rootElement == null) { System.out.println("Error in getHostData: root element is null"); return ""; } return rootElement.getAttribute("host"); } /** * * @param value * * @throws InvalidRequestException */ public void setHostData(String value) throws InvalidRequestException { checkValidity("setHostData"); if (configTree != null) { Element duplicate = configTree.hostPortExists(value, getPortData()); if (duplicate != null) { JOptionPane.showMessageDialog(new JFrame(), value + ":" + getPortData() + " already exists", "Duplicate host:port", JOptionPane.ERROR_MESSAGE); throw new InvalidRequestException(value + ":" + getPortData() + " already exists in " + duplicate); } } getRootElement().setAttribute("host", value); } /** * */ public String getPortData() throws InvalidRequestException { checkValidity("getPortData"); return getRootElement().getAttribute("port"); } /** * */ public void setPortData(String value) throws InvalidRequestException { checkValidity("setPortData"); if (configTree != null) { Element duplicate = configTree.hostPortExists(getHostData(), value); if (duplicate != null) { JOptionPane.showMessageDialog(new JFrame(), getHostData() + ":" + value + " already exists", "Duplicate host:port", JOptionPane.ERROR_MESSAGE); throw new InvalidRequestException(getHostData() + ":" + value + " already exists in " + duplicate); } } getRootElement().setAttribute("port", value); }/* public String getHostNameData() throws InvalidRequestException { checkValidity("getHostNameData"); Element rootElement = getRootElement(); if (rootElement == null) { System.out.println("Error in getHostData: root element is null"); return ""; } return rootElement.getAttribute("hostname"); }*/ /** * * @param value * * @throws InvalidRequestException */ /* public void setHostNameData(String value) throws InvalidRequestException { checkValidity("setHostNameData"); getRootElement().setAttribute("hostname", value); }*/ /** * */ public DocumentFragment getFragment() throws InvalidRequestException { isValid = false; return fragment; } /** * * @throws InvalidRequestException */ public void saveData() throws InvalidRequestException { if (!isValid) { throw new InvalidRequestException("saveData on saved or deleted DataFragment"); } System.out.println("saveData called on DataFragment"); Element rootElement = getRootElement(); System.out.println(new XMLUtils().buildXMLString(rootElement)); System.out.println("Root element is " + rootElement.getNodeName()); String dir = rootElement.getAttribute("fileDir"); String host = null; String port = null; if (!dir.equals("")) { System.out.println("dir is not empty"); host = rootElement.getAttribute("host"); port = rootElement.getAttribute("port"); rootElement.setAttribute("fileName", host + ":" + port); } else { System.out.println("dir is empty"); } if (configTree != null) // null if called by DeployServers { configTree.insertDocumentFragment(fragment, parentTreeNode); } // if this is a Call Return feature, then we need to generate some // cpl at this point. if (((Element) grandparentNode).getAttribute("value").equals("CallReturn")) { String fileDir = (FEATURE_DIR + "_" + host + "_" + port + "_Called"); String xmlString = CplGenerator.buildCallReturnServerXML(); // write the cpl script to file. try { DOMToFile.writeAsIs(xmlString, fileDir, "*69@vovida.com.cpl"); } catch (FailedToWriteFileException e1) { // nothing much we can do here. } } if (configTree != null) // null if called by DeployServers { try { DOMToFile.writeAllFilesInPath(configTree.getCurrentElement()); } catch (FailedToWriteFileException e2) { configTree.deleteData(); } } isValid = false; } /** * */ public boolean deleteData() throws InvalidRequestException { if (!isValid) { throw new InvalidRequestException("deleteData on saved or deleted DataFragment"); } // do nothing because the data fragment was never put in the tree isValid = false; return true; } // methods from GroupData /** * */ public String getGroupName() throws InvalidRequestException { checkValidity("getGroupName"); return getRootElement().getAttribute("value"); } /** * * @param data * * @throws InvalidRequestException */ public void setGroupName(String data) throws InvalidRequestException { checkValidity("setGroupName"); getRootElement().setAttribute("value", data); } /** * * @param methodName * * @throws InvalidRequestException */ protected void checkValidity(String methodName) throws InvalidRequestException { if (!isValid) { throw new InvalidRequestException(methodName + " on saved or deleted DataFragment"); } } /** * */ protected Element getRootElement() { Node rootNode = fragment.getFirstChild(); if (rootNode == null) { System.out.println("Error: Data Fragment root element is null"); new Exception().printStackTrace(); } return (Element) rootNode; } /** * */ protected Element getElement(String elementName) { Element rootElement = getRootElement(); if (rootElement.getNodeName().equals(elementName)) { return rootElement; } NodeList nodes = rootElement.getElementsByTagName(elementName); Element requestedElement = null; if (nodes.getLength() < 1) { System.out.println("fragment does not contain element " + elementName); System.out.println(new XMLUtils().buildXMLString(fragment)); return null; } try { requestedElement = (Element) (nodes.item(0)); } catch (ClassCastException e) { System.out.println(elementName + " is not an Element: " + nodes.item(0).getNodeType()); e.printStackTrace(); } return requestedElement; } /** * */ protected String getValue(String tagName) { Element element = getElement(tagName); if (element == null) { return null; } return element.getAttribute("value"); } /** * * @param tagName * @param data */ protected void setValue(String tagName, String data) { Element element = getElement(tagName); if (element == null) { return; } element.setAttribute("value", data); } /** * Build a Document Fragment from a string representation of the XML. */ protected DocumentFragment buildDocumentFragment(final Document doc, String fragString) { System.out.println("building document fragment: " + fragString); final DocumentFragment frag = doc.createDocumentFragment(); // read the string in with a SAX parser to build the fragment StringReader fragReader = new StringReader(fragString); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = null; try { parser = spf.newSAXParser(); } catch (ParserConfigurationException parsEx) { parsEx.printStackTrace(); return null; } catch(SAXException saxEx) { saxEx.printStackTrace(); return null; } DefaultHandler handler = new DefaultHandler() { Stack elementStack = new Stack(); /** * * @param ignore1 * @param ignore2 * @param rawName * @param attrs */ public void startElement(String ignore1, String ignore2, String rawName, Attributes attrs) { if (rawName.equals("fragment")) { // the fragment root element is necessary for the // SAX parser to work. return; } int attrsLength = attrs.getLength(); Element newElement = doc.createElement(rawName); for (int i = 0; i < attrsLength; i++) { newElement.setAttribute(attrs.getQName(i), attrs.getValue(i)); } if (!elementStack.isEmpty()) { Element lastElement = (Element) (elementStack.peek()); lastElement.appendChild(newElement); } elementStack.push(newElement); } /** * * @param ignore1 * @param ignore2 * @param rawName */ public void endElement(String ignore1, String ignore2, String rawName) { if (!rawName.equals("fragment")) { Element lastElement = (Element) (elementStack.pop()); if (elementStack.isEmpty()) { frag.appendChild(lastElement); } } } }; try { parser.parse(new InputSource(fragReader), handler); } catch (Exception e) { e.printStackTrace(); } return frag; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -