001: /**
002: * $Id: DirectReportComparator.java,v 1.1 2005/09/05 07:41:31 nk137934 Exp $
003: * Copyright 2005 Sun Microsystems, Inc. All
004: * rights reserved. Use of this product is subject
005: * to license terms. Federal Acquisitions:
006: * Commercial Software -- Government Users
007: * Subject to Standard License Terms and
008: * Conditions.
009: *
010: * Sun, Sun Microsystems, the Sun logo, and Sun ONE
011: * are trademarks or registered trademarks of Sun Microsystems,
012: * Inc. in the United States and other countries.
013: */package com.sun.portal.sapportlet.manager;
014:
015: import java.util.Comparator;
016:
017: public class DirectReportComparator implements Comparator {
018:
019: /* Possible values for sort order*/
020: public static final int SORT_ORDER_ASCENDING = 1;
021: public static final int SORT_ORDER_DESCENDING = -1;
022:
023: /* Possible values for sort field*/
024: public static final int SORT_FIELD_DR_EMPNUMBER = 1000;
025: public static final int SORT_FIELD_DR_FULLNAME = 2000;
026: public static final int SORT_FIELD_DR_SHORTNAME = 4000;
027: public static final int SORT_FIELD_DR_BEGINDATE = 5000;
028:
029: private int sortField;
030: private int sortOrder;
031:
032: private DirectReportComparator(int sortField, int sortOrder) {
033:
034: this .sortField = sortField;
035: this .sortOrder = sortOrder;
036: }
037:
038: public static DirectReportComparator getComparator(int sortField,
039: int sortOrder) {
040:
041: DirectReportComparator comparator = new DirectReportComparator(
042: sortField, sortOrder);
043: return comparator;
044: }
045:
046: public int compare(Object obj1, Object obj2) {
047: //We assume only DirectReport objects are compared
048: DirectReport dr1 = (DirectReport) obj1;
049: DirectReport dr2 = (DirectReport) obj2;
050: int result = 0;
051: switch (sortField) {
052:
053: case SORT_FIELD_DR_EMPNUMBER:
054: result = compareEmpNumbers(dr1, dr2);
055: break;
056: case SORT_FIELD_DR_FULLNAME:
057: result = compareFullNames(dr1, dr2);
058: break;
059: case SORT_FIELD_DR_SHORTNAME:
060: result = compareShortNames(dr1, dr2);
061: break;
062: case SORT_FIELD_DR_BEGINDATE:
063: result = compareBeginDates(dr1, dr2);
064: break;
065: default:
066: break;
067: }
068: return result;
069: }
070:
071: private int compareEmpNumbers(DirectReport dr1, DirectReport dr2) {
072:
073: String empNo1 = dr1.getEmployeeNumber().toLowerCase();
074: String empNo2 = dr2.getEmployeeNumber().toLowerCase();
075: int compareResult = empNo1.toLowerCase().compareTo(
076: empNo2.toLowerCase());
077: return compareResult * sortOrder;
078: }
079:
080: private int compareFullNames(DirectReport dr1, DirectReport dr2) {
081:
082: String empFullName1 = dr1.getFullName().toLowerCase();
083: String empFullName2 = dr2.getFullName().toLowerCase();
084: int compareResult = empFullName1.toLowerCase().compareTo(
085: empFullName2.toLowerCase());
086: return compareResult * sortOrder;
087: }
088:
089: private int compareShortNames(DirectReport dr1, DirectReport dr2) {
090:
091: String empShortName1 = dr1.getShortName().toLowerCase();
092: String empShortName2 = dr2.getShortName().toLowerCase();
093: int compareResult = empShortName1.toLowerCase().compareTo(
094: empShortName2.toLowerCase());
095: return compareResult * sortOrder;
096: }
097:
098: private int compareBeginDates(DirectReport dr1, DirectReport dr2) {
099:
100: String empBegin1 = dr1.getBeginDate().toLowerCase();
101: String empBegin2 = dr2.getBeginDate().toLowerCase();
102: int compareResult = empBegin1.toLowerCase().compareTo(
103: empBegin2.toLowerCase());
104: return compareResult * sortOrder;
105: }
106:
107: }
|