Package sortpom.verify

Source Code of sortpom.verify.ElementComparator

package sortpom.verify;

import org.jdom.Element;
import sortpom.util.XmlOrderedResult;

import java.util.List;

/**
* @author bjorn
* @since 2012-07-01
*/
public class ElementComparator {
    private final Element originalElement;
    private final Element newElement;

    public ElementComparator(Element originalElement, Element newElement) {
        this.originalElement = originalElement;
        this.newElement = newElement;
    }

    private ElementComparator(Object originalElement, Object newElement) {
        this.originalElement = (Element) originalElement;
        this.newElement = (Element) newElement;
    }

    public XmlOrderedResult isElementOrdered() {
        if (!originalElement.getName().equals(newElement.getName())) {
            return XmlOrderedResult.nameDiffers(originalElement.getName(), newElement.getName());
        }
        if (isEqualsIgnoringWhitespace()) {
            return XmlOrderedResult.textContentDiffers(originalElement.getName(), originalElement.getText(), newElement.getText());
        }
        return isChildrenOrdered(originalElement.getName(), originalElement.getChildren(), newElement.getChildren());
    }

    private boolean isEqualsIgnoringWhitespace() {
        return !originalElement.getText().replaceAll("\\s", "").equals(newElement.getText().replaceAll("\\s", ""));
    }

    private XmlOrderedResult isChildrenOrdered(String name, List originalElementChildren, List newElementChildren) {
        int size = Math.min(originalElementChildren.size(), newElementChildren.size());
        for (int i = 0; i < size; i++) {
            ElementComparator elementComparator = new ElementComparator(originalElementChildren.get(i), newElementChildren.get(i));
            XmlOrderedResult elementOrdered = elementComparator.isElementOrdered();
            if (!elementOrdered.isOrdered()) {
                return elementOrdered;
            }
        }
        if (originalElementChildren.size() != newElementChildren.size()) {
            return XmlOrderedResult.childElementDiffers(name, originalElementChildren.size(), newElementChildren.size());
        }
        return XmlOrderedResult.ordered();
    }
}
TOP

Related Classes of sortpom.verify.ElementComparator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.