001: /**
002: * $Id: AbsenceRecordComparator.java,v 1.1 2005/09/05 07:41:10 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.time;
014:
015: import java.util.Comparator;
016:
017: public class AbsenceRecordComparator 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_ABS_TYPE = 1000;
025: public static final int SORT_FIELD_ABS_BEGIN = 2000;
026: public static final int SORT_FIELD_ABS_END = 3000;
027: public static final int SORT_FIELD_ABS_DAYS = 4000;
028: public static final int SORT_FIELD_ABS_HOURS = 5000;
029:
030: private int sortField;
031: private int sortOrder;
032:
033: private AbsenceRecordComparator(int sortField, int sortOrder) {
034:
035: this .sortField = sortField;
036: this .sortOrder = sortOrder;
037: }
038:
039: public static AbsenceRecordComparator getComparator(int sortField,
040: int sortOrder) {
041:
042: AbsenceRecordComparator comparator = new AbsenceRecordComparator(
043: sortField, sortOrder);
044: return comparator;
045: }
046:
047: public int compare(Object obj1, Object obj2) {
048: //We assume only customer objects are compared
049: AbsenceRecord rec1 = (AbsenceRecord) obj1;
050: AbsenceRecord rec2 = (AbsenceRecord) obj2;
051: int result = 0;
052: switch (sortField) {
053:
054: case SORT_FIELD_ABS_TYPE:
055: result = compareAbsenceType(rec1, rec2);
056: break;
057: case SORT_FIELD_ABS_BEGIN:
058: result = compareAbsenceBegin(rec1, rec2);
059: break;
060: case SORT_FIELD_ABS_END:
061: result = compareAbsenceEnd(rec1, rec2);
062: break;
063: case SORT_FIELD_ABS_DAYS:
064: result = compareAbsenceDays(rec1, rec2);
065: break;
066: case SORT_FIELD_ABS_HOURS:
067: result = compareAbsenceHours(rec1, rec2);
068: break;
069: default:
070: break;
071: }
072: return result;
073: }
074:
075: private int compareAbsenceType(AbsenceRecord rec1,
076: AbsenceRecord rec2) {
077:
078: String absType1 = rec1.getAbsenceName().toLowerCase();
079: String absType2 = rec2.getAbsenceName().toLowerCase();
080: int compareResult = absType1.toLowerCase().compareTo(
081: absType2.toLowerCase());
082: return compareResult * sortOrder;
083: }
084:
085: private int compareAbsenceBegin(AbsenceRecord rec1,
086: AbsenceRecord rec2) {
087:
088: String absBegin1 = rec1.getBeginDate().toLowerCase();
089: String absBegin2 = rec2.getBeginDate().toLowerCase();
090: int compareResult = absBegin1.toLowerCase().compareTo(
091: absBegin2.toLowerCase());
092: return compareResult * sortOrder;
093: }
094:
095: private int compareAbsenceEnd(AbsenceRecord rec1, AbsenceRecord rec2) {
096:
097: String absEnd1 = rec1.getEndDate().toLowerCase();
098: String absEnd2 = rec2.getEndDate().toLowerCase();
099: int compareResult = absEnd1.toLowerCase().compareTo(
100: absEnd2.toLowerCase());
101: return compareResult * sortOrder;
102: }
103:
104: private int compareAbsenceDays(AbsenceRecord rec1,
105: AbsenceRecord rec2) {
106:
107: String absDays1 = rec1.getAbsenceDays().toLowerCase();
108: String absDays2 = rec2.getAbsenceDays().toLowerCase();
109: int compareResult = absDays1.toLowerCase().compareTo(
110: absDays2.toLowerCase());
111: return compareResult * sortOrder;
112: }
113:
114: private int compareAbsenceHours(AbsenceRecord rec1,
115: AbsenceRecord rec2) {
116:
117: String absHrs1 = rec1.getAbsenceHours().toLowerCase();
118: String absHrs2 = rec2.getAbsenceHours().toLowerCase();
119: int compareResult = absHrs1.toLowerCase().compareTo(
120: absHrs2.toLowerCase());
121: return compareResult * sortOrder;
122: }
123:
124: }
|