All pastes #482867 Raw Edit

Someone

public text v1 · immutable
·published 2007-05-11 13:25 UTC
rendered paste body
This is the compareTo method in the Organization class

public int compareTo(Organization o) {

        // TODO Horky: this is bad....i think
        if (StringUtils.isNumeric(this.getAbbreviation().substring(0, 1))) {
            if (StringUtils.isNumeric(o.getAbbreviation().substring(0, 1))) {
                // strip the numbers off of this organization
                int thisPrefix = 0;
                String thisSuffix = "";
                for (int i=2; i < this.abbreviation.length(); i++) {
                    if (!StringUtils.isNumeric(this.abbreviation.substring(0, i))) {
                        thisPrefix = Integer.parseInt(this.abbreviation.substring(0, i-1));
                        thisSuffix = this.abbreviation.substring(i-1, this.abbreviation.length()).trim();
                        break;
                    }
                }

                // strip the numbers off of the passed in organization
                int thatPrefix = 0;
                String thatSuffix = "";
                for (int i=2; i < o.getAbbreviation().length(); i++) {
                    if (!StringUtils.isNumeric(o.getAbbreviation().substring(0, i))) {
                        thatPrefix = Integer.parseInt(o.getAbbreviation().substring(0, i-1));
                        thatSuffix = o.getAbbreviation().substring(i-1, o.getAbbreviation().length()).trim();
                        break;
                    }
                }

                // if they both have the same organization number prefix, compare the actual abbreviated name
                if (thisPrefix == thatPrefix) {
                    return thisSuffix.compareTo(thatSuffix);
                }

                if (thisPrefix > thatPrefix) {
                    return 1;
                }

                if (thisPrefix < thatPrefix) {
                    return -1;
                }

            } else {
                return -1;
            }

        } else {
            if (StringUtils.isNumeric(o.getAbbreviation().substring(0, 1))) {
                return -1;
            } else {
                return this.getAbbreviation().compareTo(o.getAbbreviation());
            }
        }

        return 0;
    }