Example usage for org.eclipse.jdt.core.jdom IDOMNode clone

List of usage examples for org.eclipse.jdt.core.jdom IDOMNode clone

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.jdom IDOMNode clone.

Prototype

public Object clone();

Source Link

Document

Returns a stand-alone copy of the document fragment represented by this node that is in no way dependent on the document this node is part of.

Usage

From source file:org.eclipse.emf.codegen.jmerge.JMerger.java

License:Open Source License

protected IDOMNode insertClone(IDOMNode sourceNode) {
    IDOMNode targetNode = null;//  ww  w .ja  v  a2s.  c  o m
    switch (sourceNode.getNodeType()) {
    case IDOMNode.COMPILATION_UNIT: {
        targetNode = jdomFactory.createCompilationUnit(applyFormatRules(sourceNode.getContents()),
                ((IDOMCompilationUnit) sourceNode).getName());
        break;
    }
    case IDOMNode.PACKAGE: {
        targetNode = jdomFactory.createPackage(applyFormatRules(sourceNode.getContents()));
        break;
    }
    case IDOMNode.IMPORT: {
        targetNode = jdomFactory.createImport(applyFormatRules(sourceNode.getContents()));
        break;
    }
    case IDOMNode.TYPE: {
        targetNode = jdomFactory.createType(applyFormatRules(sourceNode.getContents()));
        break;
    }
    case IDOMNode.INITIALIZER: {
        targetNode = jdomFactory.createInitializer(applyFormatRules(sourceNode.getContents()));
        break;
    }
    case IDOMNode.FIELD: {
        targetNode = jdomFactory.createField(applyFormatRules(sourceNode.getContents()));
        break;
    }
    case IDOMNode.METHOD: {
        targetNode = jdomFactory.createMethod(applyFormatRules(sourceNode.getContents()));
        break;
    }
    default: {
        targetNode = (IDOMNode) sourceNode.clone();
        break;
    }
    }

    if (targetNode != null) {
        map(sourceNode, targetNode);
        mapChildren(sourceNode, targetNode);
    } else {
        // System.err.println("Warning: Cannot clone '" + sourceNode.getContents() + "'");
    }
    for (IDOMNode previousNode = sourceNode.getPreviousNode(); previousNode != null; previousNode = previousNode
            .getPreviousNode()) {
        IDOMNode targetSibling = (IDOMNode) sourceToTargetMap.get(previousNode);
        if (targetSibling != null) {
            IDOMNode targetNextSibling = targetSibling.getNextNode();
            if (targetNextSibling == null) {
                targetSibling.getParent().addChild(targetNode);
            } else {
                targetNextSibling.insertSibling(targetNode);
            }

            return targetNode;
        }
    }
    if (sourceNode.getParent() != null) {
        IDOMNode targetParent = (IDOMNode) sourceToTargetMap.get(sourceNode.getParent());
        IDOMNode targetSibling = targetParent.getFirstChild();
        if (targetSibling == null) {
            targetParent.addChild(targetNode);
        } else {
            targetSibling.insertSibling(targetNode);
        }
    }
    return targetNode;
}

From source file:org.eclipse.emf.codegen.merge.java.facade.jdom.JDOMFacadeHelper.java

License:Open Source License

@Override
public JNode cloneNode(Object context, JNode node) {
    String content = applyFormatRules(node.getContents());
    IDOMNode idomNode = null;//from   w  ww  .  ja  va2 s .  co m
    if (node instanceof JCompilationUnit) {
        idomNode = getIDOMNode(createCompilationUnit(node.getName(), content));
    } else if (node instanceof JField) {
        idomNode = getJDOMFactory().createField(content);
    } else if (node instanceof JImport) {
        idomNode = getJDOMFactory().createImport(content);
    } else if (node instanceof JInitializer) {
        idomNode = getJDOMFactory().createInitializer(content);
    } else if (node instanceof JMethod) {
        idomNode = getJDOMFactory().createMethod(content);
    } else if (node instanceof JPackage) {
        idomNode = getJDOMFactory().createPackage(content);
    } else if (node instanceof JType) {
        idomNode = getJDOMFactory().createType(content);
    } else {
        IDOMNode originalIDOMNode = JDOMFacadeHelper.getIDOMNode(node);
        if (originalIDOMNode != null) {
            idomNode = (IDOMNode) originalIDOMNode.clone();
        }
    }

    return idomNode != null ? convertToNode(idomNode) : null;
}