001: /**
002: * $Id: NamefinderDetailComparator.java,v 1.1 2005/09/05 07:35:20 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.namefinder;
014:
015: import java.util.Comparator;
016:
017: public class NamefinderDetailComparator 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_EMP_NUMBER = 1000;
025: public static final int SORT_FIELD_FIRST_NAME = 2000;
026: public static final int SORT_FIELD_LAST_NAME = 3000;
027: public static final int SORT_FIELD_ROOM_NUM = 4000;
028: public static final int SORT_FIELD_BUILDING_NUM = 5000;
029: public static final int SORT_FIELD_EXTENSION = 6000;
030: public static final int SORT_FIELD_EMAIL = 7000;
031:
032: private int sortField;
033: private int sortOrder;
034:
035: private NamefinderDetailComparator(int sortField, int sortOrder) {
036:
037: this .sortField = sortField;
038: this .sortOrder = sortOrder;
039: }
040:
041: public static NamefinderDetailComparator getComparator(
042: int sortField, int sortOrder) {
043:
044: NamefinderDetailComparator comparator = new NamefinderDetailComparator(
045: sortField, sortOrder);
046: return comparator;
047: }
048:
049: public int compare(Object obj1, Object obj2) {
050: //We assume only customer objects are compared
051: NamefinderDetail detail1 = (NamefinderDetail) obj1;
052: NamefinderDetail detail2 = (NamefinderDetail) obj2;
053: int result = 0;
054: switch (sortField) {
055:
056: case SORT_FIELD_EMP_NUMBER:
057: result = compareEmployeeNumbers(detail1, detail2);
058: break;
059: case SORT_FIELD_FIRST_NAME:
060: result = compareFirstNames(detail1, detail2);
061: break;
062: case SORT_FIELD_LAST_NAME:
063: result = compareLastNames(detail1, detail2);
064: break;
065: case SORT_FIELD_ROOM_NUM:
066: result = compareRoomNumber(detail1, detail2);
067: break;
068: case SORT_FIELD_BUILDING_NUM:
069: result = compareBuildingNumber(detail1, detail2);
070: break;
071: case SORT_FIELD_EXTENSION:
072: result = compareExtension(detail1, detail2);
073: break;
074: case SORT_FIELD_EMAIL:
075: result = compareEmail(detail1, detail2);
076: break;
077: default:
078: break;
079: }
080: return result;
081: }
082:
083: private int compareEmployeeNumbers(NamefinderDetail detail1,
084: NamefinderDetail detail2) {
085:
086: String empNumber1 = detail1.getEmployeeNumber().toLowerCase();
087: String empNumber2 = detail2.getEmployeeNumber().toLowerCase();
088: int compareResult = empNumber1.toLowerCase().compareTo(
089: empNumber2.toLowerCase());
090: return compareResult * sortOrder;
091: }
092:
093: private int compareFirstNames(NamefinderDetail detail1,
094: NamefinderDetail detail2) {
095:
096: String firstName1 = detail1.getFirstName().toLowerCase();
097: String firstName2 = detail2.getFirstName().toLowerCase();
098: int compareResult = firstName1.toLowerCase().compareTo(
099: firstName2.toLowerCase());
100: return compareResult * sortOrder;
101: }
102:
103: private int compareLastNames(NamefinderDetail detail1,
104: NamefinderDetail detail2) {
105:
106: String lastName1 = detail1.getLastName().toLowerCase();
107: String lastName2 = detail2.getLastName().toLowerCase();
108: int compareResult = lastName1.toLowerCase().compareTo(
109: lastName2.toLowerCase());
110: return compareResult * sortOrder;
111: }
112:
113: private int compareRoomNumber(NamefinderDetail detail1,
114: NamefinderDetail detail2) {
115:
116: String roomNum1 = detail1.getRoomNumber().toLowerCase();
117: String roomNum2 = detail2.getRoomNumber().toLowerCase();
118: int compareResult = roomNum1.toLowerCase().compareTo(
119: roomNum2.toLowerCase());
120: return compareResult * sortOrder;
121: }
122:
123: private int compareBuildingNumber(NamefinderDetail detail1,
124: NamefinderDetail detail2) {
125:
126: String buildNum1 = detail1.getBuildingNumber().toLowerCase();
127: String buildNum2 = detail2.getBuildingNumber().toLowerCase();
128: int compareResult = buildNum1.toLowerCase().compareTo(
129: buildNum2.toLowerCase());
130: return compareResult * sortOrder;
131: }
132:
133: private int compareExtension(NamefinderDetail detail1,
134: NamefinderDetail detail2) {
135:
136: String ext1 = detail1.getExtension().toLowerCase();
137: String ext2 = detail2.getExtension().toLowerCase();
138: int compareResult = ext1.toLowerCase().compareTo(
139: ext2.toLowerCase());
140: return compareResult * sortOrder;
141: }
142:
143: private int compareEmail(NamefinderDetail detail1,
144: NamefinderDetail detail2) {
145:
146: String eml1 = detail1.getEmailAddress().toLowerCase();
147: String eml2 = detail2.getEmailAddress().toLowerCase();
148: int compareResult = eml1.toLowerCase().compareTo(
149: eml2.toLowerCase());
150: return compareResult * sortOrder;
151: }
152: }
|