Example usage for org.dom4j.tree DefaultText DefaultText

List of usage examples for org.dom4j.tree DefaultText DefaultText

Introduction

In this page you can find the example usage for org.dom4j.tree DefaultText DefaultText.

Prototype

public DefaultText(String text) 

Source Link

Document

DOCUMENT ME!

Usage

From source file:com.cladonia.xml.xdiff.XDiffTreeDialog.java

License:Open Source License

private void addNewTextNode(Text text, String updateText, boolean merging) {
    int position = 0;

    // get child position
    XElement parent = (XElement) text.getParent();

    Vector children = parent.getChildren();

    int childPosition = 0;
    int childPositonCounter = 0;

    for (int i = 0; i < children.size(); i++) {
        Node node = (Node) children.get(i);
        if (node instanceof Text) {
            Text textFound = (Text) node;
            if (textFound == text) {
                childPosition = childPositonCounter;
            }//from ww  w .ja  va  2  s  .co m

            childPositonCounter++;
        } else {
            // to allow for PIs etc
            childPositonCounter++;
        }
    }

    // get the next element or text node down, and find it's equivalent in the mergetree
    XElement mergeNextElement = null;
    Text mergeNextTextNode = null;

    for (int i = childPosition + 1; i < children.size(); i++) {
        Node node = (Node) children.get(i);
        if (node instanceof Element) {
            XElement nextEle = (XElement) node;

            // test for added or deleted elements
            XmlElementNode nextTreeNode = tree.getNode(nextEle, false);

            if (nextTreeNode.insertElement) {
                mergeNextElement = findInsertNode(nextEle);
                if (mergeNextElement != null)
                    break;
            } else if (nextTreeNode.deleteElement) {
                mergeNextElement = findDeleteNode(nextEle);
                if (mergeNextElement != null)
                    break;
            } else {
                String xpath = nextEle.getUniquePath();

                Vector namespaceMappings = diffDocument.getDeclaredNamespaces();
                Vector xpathResults = mergeDocument.search(xpath, namespaceMappings);

                if (xpathResults.size() > 0) {
                    // found the equivalent next element in the merge doucmnet
                    mergeNextElement = (XElement) xpathResults.get(0);
                    break;
                }
            }
        } else if (node instanceof Text) {
            Text textNext = (Text) node;

            String uniquePath = text.getUniquePath();

            int textNodePos = findTextPosition(textNext, (XElement) text.getParent());

            Vector namespaceMappings = diffDocument.getDeclaredNamespaces();

            StringBuffer xpath = new StringBuffer(uniquePath);
            xpath.append("[");
            xpath.append(textNodePos);
            xpath.append("]");

            Vector xpathResults = mergeDocument.search(xpath.toString(), namespaceMappings);
            if (xpathResults.size() > 0) {
                Text foundText = (Text) xpathResults.get(0);
                if (textNext.getText().equals(foundText.getText()))
                    ;
                {
                    // found the equivalent text node in the merge doucmnet
                    mergeNextTextNode = foundText;
                    break;
                }

            }
        }

    }

    // find the child position of this 
    if (mergeNextElement == null && mergeNextTextNode == null) {
        // couldn't find equivalent, so add it to the end
        position = -1;
    } else {
        if (mergeNextElement != null) {

            // find the position of this equivalent element
            XElement mergeNextParent = mergeNextElement.parent();
            List mergeNextParentChildren = mergeNextParent.getChildren();

            for (int i = 0; i < mergeNextParentChildren.size(); i++) {
                Node mergenode = (Node) mergeNextParentChildren.get(i);

                if (mergenode == mergeNextElement) {
                    position = i;
                }
            }
        } else if (mergeNextTextNode != null) {
            // find the position of this equivalent text node
            XElement mergeNextParent = (XElement) mergeNextTextNode.getParent();
            List mergeNextParentChildren = mergeNextParent.getChildren();

            for (int i = 0; i < mergeNextParentChildren.size(); i++) {
                Node mergeChild = (Node) mergeNextParentChildren.get(i);
                if (mergeChild == mergeNextTextNode) {
                    position = i;
                }
            }
        }
    }

    // position should now be where we want to add the element

    // need to add element and all it's children to mergeTree, so deep clone the element
    DefaultText newText = new DefaultText(updateText);

    // get the equivalent parent on the mergeTree
    String xpath = parent.getUniquePath();

    Vector namespaceMappings = diffDocument.getDeclaredNamespaces();
    Vector xpathResults = mergeDocument.search(xpath, namespaceMappings);

    if (xpathResults.size() > 0) {
        // get the equivalent element
        XElement mergeParentElement = (XElement) xpathResults.get(0);

        // get it's tree node
        XmlElementNode mergeTreeParentNode = mergeTree.getNode(mergeParentElement, false);

        // create the new tree node
        XmlTextNode newTreeNode = new XmlTextNode(newText, mergeTreeParentNode);
        newTreeNode.setMerged(merging);
        newTreeNode.updateTextNode();

        List mergeParentChildren = mergeParentElement.content();
        if (mergeParentChildren.size() == 0) {
            // no children, so just add it anywhere
            mergeParentElement.add(newText);

            // reset parent in case the node looks like <a/>
            if (mergeTreeParentNode.getChildCount() < 1) {
                XmlElementNode endNode = new XmlElementNode(mergeTreeParentNode.getElement(), true,
                        mergeTreeParentNode);

                if (mergeTreeParentNode.getMerged()) {
                    endNode.setMerged(true);
                    endNode.update();
                }

                mergeTree.insertNode(endNode, mergeTreeParentNode, mergeTreeParentNode.getChildCount());

                mergeTreeParentNode.setElement(mergeParentElement);
                mergeTreeParentNode.update();
                mergeTree.nodeChanged(mergeTreeParentNode);
            }

            mergeTree.insertNode(newTreeNode, mergeTreeParentNode, 0);

            // highlight it
            calledFromOtherTree = 1;
            mergeTree.clearSelection();
            mergeTree.setSelectedNode(newTreeNode);
            calledFromOtherTree = 0;

        } else {
            if (position >= mergeParentChildren.size() || position == -1) {
                // it should be added to the end of all the children
                mergeParentChildren.add(newText);
                mergeTree.insertNode(newTreeNode, mergeTreeParentNode, mergeParentChildren.size() - 1);

                // highlight it
                calledFromOtherTree = 1;
                mergeTree.clearSelection();
                mergeTree.setSelectedNode(newTreeNode);
                calledFromOtherTree = 0;
            } else {
                // add it in the particular position
                mergeParentChildren.add(position, newText);
                mergeTree.insertNode(newTreeNode, mergeTreeParentNode, position);

                //highlight it
                calledFromOtherTree = 1;
                mergeTree.clearSelection();
                mergeTree.setSelectedNode(newTreeNode);
                calledFromOtherTree = 0;
            }
        }
    }

    syncSelection();
}

From source file:com.cladonia.xml.xdiff.XmlElementNode.java

License:Open Source License

/**
 * Constructs the the XML element node./*from   w  w w  .j  a  v a2  s.co m*/
 *
 * @param element the XML element.
 */
public XmlElementNode(XElement element, boolean end, XmlElementNode parent) {

    this.element = element;
    this.parent = parent;

    isEndTag = end;
    format();

    if (!isEndTag()) {

        List childNodes = element.content();

        for (int i = 0; i < element.nodeCount(); i++) {
            Node node = element.node(i);

            if (node instanceof XElement) {
                add(new XmlElementNode((XElement) node, this));
            } else if ((node instanceof Text) && isMixedElementAndContent(element) && !isWhiteSpace(node)) {

                if (i < element.nodeCount()) {
                    Node nextNode = element.node(i + 1);
                    if (nextNode instanceof ProcessingInstruction) {
                        add(new XmlTextNode((Text) node, (ProcessingInstruction) nextNode, this));
                    } else {
                        // can't be PI after it
                        add(new XmlTextNode((Text) node, this));
                    }
                }

                //                  if (i<element.nodeCount())
                //                  {
                //                     Node nextNode = element.node(i+1);
                //                     if (nextNode instanceof ProcessingInstruction)
                //                     {
                //                        add( new XmlTextNode((Text)node,(ProcessingInstruction)nextNode,this));
                //                     }
                //                     else if (nextNode instanceof Text)
                //                     {
                //                        //   append the node and check for the next one
                //                        String combined = node.asXML().trim()+" "+nextNode.asXML().trim();
                //                        i++;
                //                        while (i<element.nodeCount())
                //                        {
                //                           Node nextNextNode = element.node(i+1);
                //                           if (nextNextNode instanceof Text)
                //                           {
                //                              // combine
                //                              combined = combined+" "+nextNextNode.asXML().trim();
                //                              i++;
                //                           }
                //                           else
                //                              break;
                //                        }
                //                        
                //                        if (i< element.nodeCount())
                //                        {
                //                           Node nextNextNode = element.node(i+1);
                //                           if (nextNextNode instanceof ProcessingInstruction)
                //                           {
                //                              add( new XmlTextNode(combined,(ProcessingInstruction)nextNextNode,this));
                //                           }
                //                           else
                //                           {
                //                              add( new XmlTextNode(combined,this,false));
                //                           }
                //                        }
                //                        else
                //                        {
                //                           add( new XmlTextNode(combined,this,false));
                //                        }
                //                     }
                //                     else
                //                     {
                //                        // can't be PI after it
                //                        add( new XmlTextNode((Text)node,this));
                //                     }
                //                  }
                //                  else
                //                  {
                //                     // can't be PI after it
                //                     add( new XmlTextNode((Text)node,this));
                //                  }

            } else if ((node instanceof ProcessingInstruction) && isMixedElementAndContent(element)) {
                String pi = node.asXML();
                if (pi.startsWith(DELETE)) {
                    // check for mixed delete which we treat as a change
                    if (pi.indexOf("\"") != -1 && pi.lastIndexOf(MIXED_DELETE_PI_END) != -1) {
                        String updateTextFrom = getUpdatePIValue(pi);

                        DefaultText dummy = new DefaultText("");
                        childNodes.add(i + 1, dummy);

                        add(new XmlTextNode(dummy, updateTextFrom, this, true));
                    }
                }
            }
        }

        List elements = element.elements();
        // create an end node...   
        if (elements != null && elements.size() > 0) {
            add(new XmlElementNode(element, true, this));
        }
    }

    //format();

}

From source file:com.devoteam.srit.xmlloader.core.utils.XMLElementTextOnlyParser.java

License:Open Source License

public List<Element> replace(Element element, ParameterPool variables) throws Exception {
    List<Element> result = new LinkedList();
    result.add(element.createCopy());//  ww  w. ja va2 s . com
    element = result.get(0);

    Iterator nodesIterator = element.nodeIterator();
    HashMap<Node, Node> nodesToReplace = new HashMap<Node, Node>();

    boolean alreadyNext = false;

    while (nodesIterator.hasNext()) {
        Node node = null;
        if (!alreadyNext) {
            node = (Node) nodesIterator.next();
        }

        Node lastTextNode = null;
        String lastTextNodeText = "";
        alreadyNext = false;

        //
        // We put all successive TEXT Nodes into one node ( there is some fragmentation i don't understand )
        //
        while (null != node && node.getNodeType() == Node.TEXT_NODE) {
            alreadyNext = true;
            lastTextNode = (Text) node;
            lastTextNodeText += lastTextNode.getText();

            // this node will be deleted later ... if not overwritten in this hashmap
            nodesToReplace.put(lastTextNode, null);
            if (nodesIterator.hasNext()) {
                node = (Node) nodesIterator.next();
            } else {
                node = null;
            }
        }

        //
        // We process normally the CDATA Nodes
        // 
        if (null != node && node.getNodeType() == Node.CDATA_SECTION_NODE) {
            lastTextNode = (Node) node;
            lastTextNodeText = lastTextNode.getText();
        }

        //
        // We do nothing for the other type Nodes
        // 
        if (null == lastTextNode) {
            continue;
        }

        lastTextNode.setText(lastTextNodeText);

        //
        // Now that we have only one, complete, TEXT node or one CDATA node to proceed
        //
        Node textNode = (Node) lastTextNode;

        String text = textNode.getText();
        String out = "";

        int endOfLine;
        String line;

        //
        // Transform all \r\n, in \n
        //
        //text = Utils.replaceNoRegex(text, "\r", "");

        while (text.length() > 0) {
            //
            // Read a line
            //
            endOfLine = text.indexOf("\n");

            if (endOfLine == -1) {
                line = text;
                text = "";
            } else {
                line = text.substring(0, endOfLine + 1);
                text = text.substring(endOfLine + 1);
            }

            //
            // Replace line if it contains at least a variable
            //
            if (Parameter.containsParameter(line)) {
                List<String> results = variables.parse(line);

                for (String s : results) {
                    out += s;
                }
            } else {
                out += line;
            }
        }

        //
        // Set new text into new AVP
        //
        Text newTextNode = new DefaultText(out);
        nodesToReplace.put(textNode, newTextNode);
    }

    for (Node key : nodesToReplace.keySet()) {
        DefaultElementInterface.replaceNode((DefaultElement) element, key, nodesToReplace.get(key));
    }

    if (result.size() != 1) {
        throw new ExecutionException("Size of result for XMLElementTextOnlyParser should be 1");
    }

    return result;
}

From source file:com.thoughtworks.cruise.utils.configfile.CruiseConfigDom.java

License:Apache License

public void updateLicense(String license, String user) {
    Element licenseElement = (Element) root().selectSingleNode("//license");
    licenseElement.clearContent();/*from   ww w  . ja  va2s .  co m*/
    licenseElement.add(new DefaultText(license));
    licenseElement.addAttribute("user", user);
}

From source file:net.sf.saxon.option.dom4j.DOM4JWriter.java

License:Mozilla Public License

private void flush() {
    if (textBuffer.length() != 0) {
        Text text = new DefaultText(textBuffer.toString());
        ((Element) ancestors.peek()).add(text);
        textBuffer.setLength(0);/*from  w w w.ja va 2s.  c  om*/
    }
}

From source file:org.nuxeo.adullact.importer.ImporterServiceImpl.java

License:Open Source License

protected Object resolveXP(Element el, String xpr) {

    @SuppressWarnings("unchecked")
    List<Object> nodes = el.selectNodes(xpr);
    if (nodes.size() == 1) {
        return nodes.get(0);
    } else if (nodes.size() > 1) {
        // Workaround for NXP-11834
        if (xpr.endsWith("text()")) {
            String value = "";
            for (Object node : nodes) {
                if (!(node instanceof DefaultText)) {
                    String msg = "Text selector must return a string (expr:\"%s\") element %s";
                    log.error(String.format(msg, xpr, el.getStringValue()));
                    return value;
                }//from  w w  w  .j  a  v  a  2  s  .  c om
                value += ((DefaultText) node).getText();
            }
            return new DefaultText(value);
        }
        return nodes;
    }
    return null;
}

From source file:org.nuxeo.ecm.platform.importer.xml.parser.XMLImporterServiceImpl.java

License:Open Source License

protected Object resolveXP(Element el, String xpr) {
    List<Object> nodes = el.selectNodes(xpr);
    if (nodes.size() == 1) {
        return nodes.get(0);
    } else if (nodes.size() > 1) {
        // Workaround for NXP-11834
        if (xpr.endsWith("text()")) {
            String value = "";
            for (Object node : nodes) {
                if (!(node instanceof DefaultText)) {
                    String msg = "Text selector must return a string (expr:\"%s\") element %s";
                    log.error(String.format(msg, xpr, el.getStringValue()));
                    return value;
                }/*from ww  w.  ja v a 2s  .c  om*/
                value += ((DefaultText) node).getText();
            }
            return new DefaultText(value);
        }
        return nodes;
    }
    return null;
}

From source file:org.safehaus.penrose.config.PenroseConfigWriter.java

License:Open Source License

public Element createElement(PenroseConfig penroseConfig) {
    Element element = new DefaultElement("server");

    for (String name : penroseConfig.getSystemPropertyNames()) {
        String value = penroseConfig.getSystemProperty(name);

        Element parameter = new DefaultElement("system-property");

        Element paramName = new DefaultElement("property-name");
        paramName.add(new DefaultText(name));
        parameter.add(paramName);/*  w w  w  . j  a v  a 2  s  . c  om*/

        Element paramValue = new DefaultElement("property-value");
        paramValue.add(new DefaultText(value));
        parameter.add(paramValue);

        element.add(parameter);
    }
    /*
            for (SchemaConfig schemaConfig : penroseConfig.getSchemaConfigs()) {
            
    Element schema = new DefaultElement("schema");
    if (schemaConfig.getName() != null) schema.addAttribute("name", schemaConfig.getName());
    if (schemaConfig.getPath() != null) schema.addAttribute("path", schemaConfig.getPath());
            
    element.add(schema);
            }
    */
    for (InterpreterConfig interpreterConfig : penroseConfig.getInterpreterConfigs()) {
        element.add(createElement(interpreterConfig));
    }

    if (penroseConfig.getSessionConfig() != null) {
        SessionConfig sessionConfig = penroseConfig.getSessionConfig();
        element.add(toElement(sessionConfig));
    }

    for (AdapterConfig adapterConfig : penroseConfig.getAdapterConfigs()) {
        element.add(createElement(adapterConfig));
    }

    UserConfig rootUserConfig = penroseConfig.getRootUserConfig();
    if (rootUserConfig != null) {
        Element rootElement = new DefaultElement("root");

        if (rootUserConfig.getDn() != null) {
            Element rootDn = new DefaultElement("root-dn");
            rootDn.add(new DefaultText(rootUserConfig.getDn().toString()));
            rootElement.add(rootDn);
        }

        if (rootUserConfig.getPassword() != null) {
            Element rootPassword = new DefaultElement("root-password");
            rootPassword.add(new DefaultText(new String(rootUserConfig.getPassword())));
            rootElement.add(rootPassword);
        }

        element.add(rootElement);
    }

    return element;
}

From source file:org.safehaus.penrose.config.PenroseConfigWriter.java

License:Open Source License

public Element createElement(AdapterConfig adapterConfig) {
    Element element = new DefaultElement("adapter");
    element.addAttribute("name", adapterConfig.getName());

    Element adapterClass = new DefaultElement("adapter-class");
    adapterClass.add(new DefaultText(adapterConfig.getAdapterClass()));
    element.add(adapterClass);/*from  w w w.  j  av a2 s.  co  m*/

    if (adapterConfig.getDescription() != null && !"".equals(adapterConfig.getDescription())) {
        Element description = new DefaultElement("description");
        description.add(new DefaultText(adapterConfig.getDescription()));
        element.add(description);
    }

    for (String name : adapterConfig.getParameterNames()) {
        String value = adapterConfig.getParameter(name);

        Element parameter = new DefaultElement("parameter");

        Element paramName = new DefaultElement("param-name");
        paramName.add(new DefaultText(name));
        parameter.add(paramName);

        Element paramValue = new DefaultElement("param-value");
        paramValue.add(new DefaultText(value));
        parameter.add(paramValue);

        element.add(parameter);
    }

    return element;
}

From source file:org.safehaus.penrose.config.PenroseConfigWriter.java

License:Open Source License

public Element createElement(InterpreterConfig interpreterConfig) {
    Element element = new DefaultElement("interpreter");
    /*/*from   w  w w  .  j a  va 2  s.co m*/
            Element interpreterName = new DefaultElement("interpreter-name");
            interpreterName.add(new DefaultText(interpreterConfig.getName()));
            element.add(interpreterName);
    */
    Element interpreterClass = new DefaultElement("interpreter-class");
    interpreterClass.add(new DefaultText(interpreterConfig.getInterpreterClass()));
    element.add(interpreterClass);

    if (interpreterConfig.getDescription() != null && !"".equals(interpreterConfig.getDescription())) {
        Element description = new DefaultElement("description");
        description.add(new DefaultText(interpreterConfig.getDescription()));
        element.add(description);
    }

    for (String name : interpreterConfig.getParameterNames()) {
        String value = interpreterConfig.getParameter(name);

        Element parameter = new DefaultElement("parameter");

        Element paramName = new DefaultElement("param-name");
        paramName.add(new DefaultText(name));
        parameter.add(paramName);

        Element paramValue = new DefaultElement("param-value");
        paramValue.add(new DefaultText(value));
        parameter.add(paramValue);

        element.add(parameter);
    }

    return element;
}