1 57 package com.ivata.groupware.business.calendar.struts; 58 59 import java.text.SimpleDateFormat ; 60 import java.util.Comparator ; 61 import java.util.GregorianCalendar ; 62 63 import com.ivata.groupware.business.calendar.event.EventDO; 64 65 66 81 public class EventHourComparator implements Comparator { 82 85 private GregorianCalendar day = null; 86 91 GregorianCalendar dayAfter = null; 92 95 private SimpleDateFormat orderFormat = new SimpleDateFormat ("HHmmssSS"); 96 97 109 public final int compare(final Object arg0, 110 final Object arg1) { 111 String key0 = getKey((EventDO) arg0); 112 String key1 = getKey((EventDO) arg1); 113 114 if (day == null) { 116 throw new NullPointerException ("ERROR in EventHourComparator: day is null."); 117 } 118 return key0.compareTo(key1); 119 } 120 121 129 public boolean equals(final Object arg0) { 130 return false; 131 } 132 133 138 public final GregorianCalendar getDay() { 139 return day; 140 } 141 142 147 public final void setDay(final GregorianCalendar day) { 148 this.day = day; 149 dayAfter = new GregorianCalendar (); 150 dayAfter.setTime(day.getTime()); 151 dayAfter.set(GregorianCalendar.HOUR_OF_DAY,0); 154 dayAfter.set(GregorianCalendar.MINUTE,0); 155 dayAfter.set(GregorianCalendar.SECOND,0); 156 dayAfter.set(GregorianCalendar.MILLISECOND,0); 157 dayAfter.set(GregorianCalendar.DAY_OF_YEAR, 158 dayAfter.get(GregorianCalendar.DAY_OF_YEAR)+1); 159 } 160 161 169 private String getKey(final EventDO event) { 170 String key; 171 if (!event.getStart().before(day)) { 173 key = orderFormat.format(event.getStart().getTime()) + event.getId().toString(); 174 175 } else if (!isAfterDay(event)) { 178 key = orderFormat.format(event.getFinish().getTime()) 180 + "to" + event.getId().toString(); 181 182 } else { 186 key = "0000000000" + event.getId().toString(); 187 } 188 189 return key; 190 } 191 192 199 public boolean isAfterDay(final EventDO event) { 200 return (event.getFinish() != null) && !dayAfter.after(event.getFinish()); 203 } 204 } 205 | Popular Tags |