All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.xmind.core.internal.TopicCompartor Maven / Gradle / Ivy

Go to download

Plugin that manages JBehave stories storage in XMind mindmap file, which allows design jBehave tests right after the brainstorm

The newest version!
/* ******************************************************************************
 * Copyright (c) 2006-2012 XMind Ltd. and others.
 * 
 * This file is a part of XMind 3. XMind releases 3 and
 * above are dual-licensed under the Eclipse Public License (EPL),
 * which is available at http://www.eclipse.org/legal/epl-v10.html
 * and the GNU Lesser General Public License (LGPL), 
 * which is available at http://www.gnu.org/licenses/lgpl.html
 * See http://www.xmind.net/license.html for details.
 * 
 * Contributors:
 *     XMind Ltd. - initial API and implementation
 *******************************************************************************/
package org.xmind.core.internal;

import java.util.Comparator;

import org.xmind.core.ITopic;

public class TopicCompartor implements Comparator {

    public int compare(ITopic o1, ITopic o2) {
        ITopic a1 = o1;
        ITopic a2;
        ITopic parent = a1.getParent();
        do {
            a2 = findSibling(a1, parent, o2);
            if (a2 != null) {
                return compareSibling(a1, a2);
            }
            a1 = parent;
            parent = a1.getParent();
        } while (a1 != null);
        return 1;
    }

    private int compareSibling(ITopic t1, ITopic t2) {
        if (t1.equals(t2))
            return 0;
        return t1.getIndex() - t2.getIndex();
    }

    private ITopic findSibling(ITopic t, ITopic parent, ITopic child) {
        if (t == null || child == null)
            return null;

        ITopic p = child.getParent();
        if ((parent == null && p == null)
                || (parent != null && parent.equals(p))) {
            return child;
        }
        return findSibling(t, parent, p);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy