PathComparator.java 1.47 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.day.jcr.vault.util;

import java.util.Comparator;

/*
 * This class specifies class file version 49.0 but uses Java 6 signatures.  Assumed Java 6.
 */
public class PathComparator
implements Comparator<String> {
    private final char separator;
    private boolean reverse;

    public PathComparator() {
        this.separator = 47;
    }

    public PathComparator(boolean reverse) {
        this.separator = 47;
        this.reverse = reverse;
    }

    public PathComparator(char separator) {
        this.separator = separator;
    }

    public PathComparator(char separator, boolean reverse) {
        this.separator = separator;
        this.reverse = reverse;
    }

    @Override
    public int compare(String o1, String o2) {
        if (o1.equals(o2)) {
            return 0;
        }
        int last0 = 0;
        int last1 = 0;
        int i0 = o1.indexOf(this.separator, 1);
        int i1 = o2.indexOf(this.separator, 1);
        while (i0 > 0 && i1 > 0) {
            int c = o1.substring(last0, i0).compareTo(o2.substring(last1, i1));
            if (c != 0) {
                return this.reverse ? - c : c;
            }
            last0 = i0;
            last1 = i1;
            i0 = o1.indexOf(this.separator, i0 + 1);
            i1 = o2.indexOf(this.separator, i1 + 1);
        }
        int ret = i0 > 0 ? 1 : (i1 > 0 ? -1 : o1.substring(last0).compareTo(o2.substring(last1)));
        return this.reverse ? - ret : ret;
    }
}