package is.idega.idegaweb.tracker.business; import java.util.*; import com.idega.util.IsCollator; import is.idega.idegaweb.tracker.data.ReferrerStatistics; /** * Title: is.idega.idegaweb.tracker.business.RefererComparator * Description: Compares referer entities for sorting * Copyright: Copyright (c) 2002 * Company: idega software * @author <a href="mailto:aron@idega.is">eiki@idega.is</a> * @version 1.0 */ public class RefererComparator implements Comparator { public static final int ORDER_BY_SESSIONS = 1; public static final int REVERSE_ORDER_BY_SESSIONS = 2; public static final int ORDER_BY_URL = 3; private int sortBy; public RefererComparator() { sortBy = ORDER_BY_SESSIONS; } public RefererComparator(int toSortBy) { sortBy = toSortBy; } public void sortBy(int toSortBy) { sortBy = toSortBy; } public int compare(Object o1, Object o2) { int result = 0; switch (this.sortBy) { case ORDER_BY_URL : result = urlSort(o1, o2); break; case ORDER_BY_SESSIONS : result = sessionSort(o1,o2); break; case REVERSE_ORDER_BY_SESSIONS : result = reverseSessionSort(o1,o2); break; } return result; } private int sessionSort(Object o1, Object o2) { int result; ReferrerStatistics p1 = (ReferrerStatistics) o1; ReferrerStatistics p2 = (ReferrerStatistics) o2; if( p1.getSessions() > p2.getSessions() ){ result = -1; } else if( p1.getSessions() < p2.getSessions() ){ result = 1; } else result = 0; return result; } private int reverseSessionSort(Object o1, Object o2) { return (-1*sessionSort(o1,o2)); } private int urlSort(Object o1, Object o2) { ReferrerStatistics p1 = (ReferrerStatistics) o1; ReferrerStatistics p2 = (ReferrerStatistics) o2; String one = p1.getReferrerUrl()!=null?p1.getReferrerUrl():""; String two = p2.getReferrerUrl()!=null?p2.getReferrerUrl():""; int result = IsCollator.getIsCollator().compare(one,two); return result; } public boolean equals(Object obj) { /**@todo: Implement this java.util.Comparator method*/ throw new java.lang.UnsupportedOperationException("Method equals() not yet implemented."); } public Iterator sort(ReferrerStatistics[] referers, int toSortBy) { sortBy = toSortBy; List list = new LinkedList(); for(int i = 0; i < referers.length; i++) { list.add(referers[i]); } Collections.sort(list, this); return list.iterator(); } public Iterator sort(ReferrerStatistics[] referers) { List list = new LinkedList(); for(int i = 0; i < referers.length; i++) { list.add(referers[i]); } Collections.sort(list, this); return list.iterator(); } public ReferrerStatistics[] sortedArray(ReferrerStatistics[] referers, int toSortBy) { sortBy = toSortBy; List list = new LinkedList(); for(int i = 0; i < referers.length; i++) { list.add(referers[i]); } Collections.sort(list, this); Object[] objArr = list.toArray(); for(int i = 0; i < objArr.length; i++) { referers[i] = (ReferrerStatistics) objArr[i]; } return (referers); } public Vector sortedArray(Vector list) { Collections.sort(list, this); return list; } public ArrayList sortedArrayList(ArrayList list) { Collections.sort(list, this); return list; } public ReferrerStatistics[] sortedArray(ReferrerStatistics[] referers) { List list = new LinkedList(); for(int i = 0; i < referers.length; i++) { list.add(referers[i]); } Collections.sort(list, this); Object[] objArr = list.toArray(); for(int i = 0; i < objArr.length; i++) { referers[i] = (ReferrerStatistics) objArr[i]; } return (referers); } public ReferrerStatistics[] reverseSortedArray(ReferrerStatistics[] referers, int toSortBy) { sortBy = toSortBy; List list = new LinkedList(); for(int i = 0; i < referers.length; i++) { list.add(referers[i]); } Collections.sort(list, this); Collections.reverse(list); Object[] objArr = list.toArray(); for(int i = 0; i < objArr.length; i++) { referers[i] = (ReferrerStatistics) objArr[i]; } return (referers); } }