ruper2/src/java/core/org/krysalis/ruper2/util/compare ComparatorSet.java,NONE,1.1 ComparisonHelper.java,NONE,1.1

[email protected]
Newsgroups gmane.comp.krysalis.metamorphosis.cvs
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/util/compare
In directory sc8-pr-cvs1:/tmp/cvs-serv30481/src/java/core/org/krysalis/ruper2/util/compare

Added Files:
	ComparatorSet.java ComparisonHelper.java 
Log Message:
Avoid clash with existing Ruper...

--- NEW FILE: ComparatorSet.java ---
/*
 * Created on Aug 27, 2003
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
package org.krysalis.ruper2.util.compare;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

/**
 * @author arb_jack
 */
public class ComparatorSet extends ArrayList implements Comparator {

	//
	// An set of all
	//
	public ComparatorSet(List comparators) {
		super(comparators);
	}

	//
	// An Empty
	//
	public ComparatorSet() {
		super();
	}

	public void addComparator(final Comparator c) {
		add(c);
	}

	//
	// Compare in list order.
	//
	public int compare(Object o1, Object o2) {
		int comparison = 0;

		for (Iterator i = iterator(); i.hasNext() && (0 == comparison);) {
			Comparator comparator = ((Comparator) i.next());

			comparison = comparator.compare(o1, o2);
		}

		return comparison;
	}
}

--- NEW FILE: ComparisonHelper.java ---
/*
 * Created on Aug 27, 2003
 */
package org.krysalis.ruper2.util.compare;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

import org.krysalis.ruper2.log.Logger;
import org.krysalis.ruper2.util.text.Messages;

/**
 * @author arb_jack
 */
public class ComparisonHelper {

	/**
	 * Sort plus uniqueify (i.e. drop duplicates)
	 * 
	 * @param choices
	 * @param comparator
	 * @return
	 */
	public static List sortUnique(List choices, Comparator comparator) {
		List sorted = new ArrayList();
		sortUniqueInto(choices, comparator, sorted);
		return sorted;
	}

	public static void sortUniqueInto(
		List choices,
		Comparator comparator,
		List sorted) {
			
		// Inefficient, no doubt for many reasons, but so a :TODO:
		TreeSet set = new TreeSet(comparator);

		for (Iterator i = choices.iterator(); i.hasNext();) {
			Object choice = i.next();
			try {
				if (!set.contains(choice))
					sorted.add(choice);
				else
					Logger.getLog().debug(
						Messages.getString(
							"DUPLICATE",
							new Object[] { comparator, choice }));
			}
			catch (Exception e) {
				Logger.getLog().error(
					Messages.getString(
						"COMPARATOR_CRASHED",
						new Object[] { comparator, e }),
					e);
			}
		}

		Collections.sort(sorted, comparator);
	}
}




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.