1 14 package org.compiere.model; 15 16 import java.util.*; 17 import java.sql.*; 18 import java.awt.*; 19 20 import org.compiere.util.*; 21 22 29 public class MAssignmentSlot implements Comparator 30 { 31 34 public MAssignmentSlot () 35 { 36 this (null, null, null, null, STATUS_TimeSlot); 37 } 39 44 public MAssignmentSlot (Timestamp startTime, Timestamp endTime) 45 { 46 this (startTime, endTime, null, null, STATUS_TimeSlot); 47 setDisplay(DISPLAY_TIME_FROM); 48 } 50 55 public MAssignmentSlot (long startTime, long endTime) 56 { 57 this (new Timestamp(startTime), new Timestamp(endTime), null, null, STATUS_TimeSlot); 58 setDisplay(DISPLAY_TIME_FROM); 59 } 61 69 public MAssignmentSlot (Timestamp startTime, Timestamp endTime, 70 String name, String description, int status) 71 { 72 setStartTime(startTime); 73 setEndTime(endTime); 74 setName(name); 75 setDescription(description); 76 setStatus(status); 77 } 81 85 public MAssignmentSlot (MAssignment assignment) 86 { 87 setStatus(assignment.isConfirmed() ? STATUS_Confirmed : STATUS_NotConfirmed); 88 setMAssignment(assignment); 89 } 92 93 94 public static final int STATUS_NotAvailable = 0; 95 96 public static final int STATUS_UnAvailable = 11; 97 98 public static final int STATUS_NonBusinessDay = 12; 99 100 public static final int STATUS_NotInSlotDay = 21; 101 102 public static final int STATUS_NotInSlotTime = 22; 103 104 public static final int STATUS_NotConfirmed = 101; 105 106 public static final int STATUS_Confirmed = 102; 107 108 109 public static final int STATUS_TimeSlot = 100000; 110 111 112 private Timestamp m_startTime; 113 114 private Timestamp m_endTime; 115 116 private String m_name; 117 118 private String m_description; 119 120 private int m_status = STATUS_NotAvailable; 121 122 private int m_yStart = 0; 123 private int m_yEnd = 0; 124 private int m_xPos = 0; 125 private int m_xMax = 1; 126 127 128 private MAssignment m_mAssignment; 129 130 131 private Language m_language = Language.getLanguage(); 132 133 134 public static final int DISPLAY_ALL = 0; 135 136 137 public static final int DISPLAY_TIME_FROM = 1; 138 139 public static final int DISPLAY_TIME_FROM_TO = 1; 140 141 public static final int DISPLAY_DATETIME_FROM_TO = 1; 142 143 public static final int DISPLAY_NAME = 1; 144 145 public static final int DISPLAY_NAME_DESCRIPTION = 1; 146 147 public static final int DISPLAY_FULL = 1; 148 149 150 private int m_displayMode = DISPLAY_FULL; 151 152 153 154 158 public void setStatus (int status) 159 { 160 m_status = status; 161 } 163 167 public int getStatus() 168 { 169 return m_status; 170 } 172 176 public boolean isAssignment() 177 { 178 return (m_status == STATUS_NotConfirmed || m_status == STATUS_Confirmed); 179 } 181 186 public Color getColor (boolean background) 187 { 188 if (m_status == STATUS_NotAvailable) 190 return background ? Color.gray : Color.magenta; 191 192 else if (m_status == STATUS_UnAvailable) 194 return background ? Color.gray : Color.pink; 195 196 else if (m_status == STATUS_NonBusinessDay) 198 return background ? Color.lightGray : Color.red; 199 200 else if (m_status == STATUS_NotInSlotDay || m_status == STATUS_NotInSlotTime) 202 return background ? Color.lightGray : Color.black; 203 204 else if (m_status == STATUS_NotConfirmed) 206 return background ? Color.blue : Color.white; 207 208 else if (m_status == STATUS_Confirmed) 210 return background ? Color.blue : Color.black; 211 212 return background ? Color.black : Color.white; 214 } 216 217 218 222 public Timestamp getStartTime() 223 { 224 return m_startTime; 225 } 226 227 231 public void setStartTime (Timestamp startTime) 232 { 233 if (startTime == null) 234 m_startTime = new Timestamp(System.currentTimeMillis()); 235 else 236 m_startTime = startTime; 237 } 239 243 public Timestamp getEndTime() 244 { 245 return m_endTime; 246 } 247 248 252 public void setEndTime (Timestamp endTime) 253 { 254 if (endTime == null) 255 m_endTime = m_startTime; 256 else 257 m_endTime = endTime; 258 } 259 260 261 262 266 public void setMAssignment (MAssignment assignment) 267 { 268 if (assignment == null) 269 return; 270 if (!isAssignment()) 271 throw new IllegalArgumentException ("Assignment Slot not an Assignment"); 272 m_mAssignment = assignment; 274 setStartTime(m_mAssignment.getAssignDateFrom()); 275 setEndTime(m_mAssignment.getAssignDateTo()); 276 setName(m_mAssignment.getName()); 277 setDescription(m_mAssignment.getDescription()); 278 setStatus(m_mAssignment.isConfirmed() ? STATUS_Confirmed : STATUS_NotConfirmed); 279 } 281 285 public MAssignment getMAssignment() 286 { 287 return m_mAssignment; 288 } 290 294 public void setName (String name) 295 { 296 if (name == null) 297 m_name = ""; 298 else 299 m_name = name; 300 } 302 306 public String getName() 307 { 308 return m_name; 309 } 311 315 public void setDescription (String description) 316 { 317 if (description == null) 318 m_description = ""; 319 else 320 m_description = description; 321 } 323 327 public String getDescription() 328 { 329 return m_description; 330 } 332 333 334 339 public void setY (int yStart, int yEnd) 340 { 341 m_yStart = yStart; 342 m_yEnd = yEnd; 343 } 345 349 public int getYStart () 350 { 351 return m_yStart; 352 } 354 358 public int getYEnd () 359 { 360 return m_yEnd; 361 } 363 368 public void setX (int xPos, int xMax) 369 { 370 m_xPos = xPos; 371 if (xMax > m_xMax) 372 m_xMax = xMax; 373 } 375 379 public int getXPos() 380 { 381 return m_xPos; 382 } 384 388 public int getXMax() 389 { 390 return m_xMax; 391 } 393 394 395 399 public void setLanguage (Language language) 400 { 401 m_language = language; 402 } 404 408 public void setDisplay (int displayMode) 409 { 410 m_displayMode = displayMode; 411 } 413 414 418 public String toString() 419 { 420 if (m_displayMode == DISPLAY_TIME_FROM) 421 return getInfoTimeFrom(); 422 else if (m_displayMode == DISPLAY_TIME_FROM_TO) 423 return getInfoTimeFromTo(); 424 else if (m_displayMode == DISPLAY_DATETIME_FROM_TO) 425 return getInfoDateTimeFromTo(); 426 else if (m_displayMode == DISPLAY_NAME) 427 return m_name; 428 else if (m_displayMode == DISPLAY_NAME_DESCRIPTION) 429 return getInfoNameDescription(); 430 else if (m_displayMode == DISPLAY_FULL) 431 return getInfo(); 432 433 StringBuffer sb = new StringBuffer ("MAssignmentSlot["); 435 sb.append(m_startTime).append("-").append(m_endTime) 436 .append("-Status=").append(m_status).append(",Name=") 437 .append(m_name).append(",").append(m_description).append("]"); 438 return sb.toString(); 439 } 441 445 public String getInfoTimeFrom() 446 { 447 return m_language.getTimeFormat().format(m_startTime); 448 } 450 454 public String getInfoTimeFromTo() 455 { 456 StringBuffer sb = new StringBuffer (); 457 sb.append(m_language.getTimeFormat().format(m_startTime)) 458 .append(" - ") 459 .append(m_language.getTimeFormat().format(m_endTime)); 460 return sb.toString(); 461 } 463 467 public String getInfoDateTimeFromTo() 468 { 469 StringBuffer sb = new StringBuffer (); 470 sb.append(m_language.getDateTimeFormat().format(m_startTime)) 471 .append(" - "); 472 if (TimeUtil.isSameDay(m_startTime, m_endTime)) 473 sb.append(m_language.getTimeFormat().format(m_endTime)); 474 else 475 m_language.getDateTimeFormat().format(m_endTime); 476 return sb.toString(); 477 } 478 479 483 public String getInfoNameDescription() 484 { 485 StringBuffer sb = new StringBuffer (m_name); 486 if (m_description.length() > 0) 487 sb.append(" (").append(m_description).append(")"); 488 return sb.toString(); 489 } 491 495 public String getInfo() 496 { 497 StringBuffer sb = new StringBuffer (getInfoDateTimeFromTo()); 498 sb.append(": ").append(m_name); 499 if (m_description.length() > 0) 500 sb.append(" (").append(m_description).append(")"); 501 return sb.toString(); 502 } 504 505 506 519 public boolean inSlot (Timestamp time, boolean endTime) 520 { 521 GregorianCalendar cal = new GregorianCalendar(); 523 cal.setTime(time); 524 cal.set(Calendar.YEAR, 1970); 525 cal.set(Calendar.DAY_OF_YEAR, 1); 526 if (endTime && cal.get(Calendar.HOUR_OF_DAY) == 0 && cal.get(Calendar.MINUTE) == 0) 528 { 529 cal.set(Calendar.HOUR_OF_DAY, 23); 530 cal.set(Calendar.MINUTE, 59); 531 } 532 Time compare = new Time (cal.getTimeInMillis()); 533 cal.setTime(m_startTime); 535 cal.set(Calendar.YEAR, 1970); 536 cal.set(Calendar.DAY_OF_YEAR, 1); 537 Time start = new Time (cal.getTimeInMillis()); 538 cal.setTime(m_endTime); 540 cal.set(Calendar.YEAR, 1970); 541 cal.set(Calendar.DAY_OF_YEAR, 1); 542 if (cal.get(Calendar.HOUR_OF_DAY) == 0 && cal.get(Calendar.MINUTE) == 0) 543 { 544 cal.set(Calendar.HOUR_OF_DAY, 23); 545 cal.set(Calendar.MINUTE, 59); 546 } 547 Time end = new Time (cal.getTimeInMillis()); 548 549 if (compare.before(start)) 551 { 552 return false; 554 } 555 if (compare.after(end)) 557 { 558 return false; 560 } 561 562 if (!endTime && compare.equals(start)) 564 { 565 return true; 567 } 568 569 if (endTime && compare.equals(end)) 572 { 573 return true; 575 } 576 if (compare.before(end)) 578 { 579 return true; 581 } 582 return false; 583 } 585 586 587 600 public int compare(Object o1, Object o2) 601 { 602 if (!(o1 instanceof MAssignmentSlot && o2 instanceof MAssignmentSlot)) 603 throw new ClassCastException ("MAssignmentSlot.compare arguments not MAssignmentSlot"); 604 605 MAssignmentSlot s1 = (MAssignmentSlot)o1; 606 MAssignmentSlot s2 = (MAssignmentSlot)o2; 607 608 int result = s1.getStartTime().compareTo(s2.getStartTime()); 610 if (result != 0) 611 return result; 612 result = s2.getStatus() - s1.getStatus(); 614 if (result != 0) 615 return result; 616 result = s1.getEndTime().compareTo(s2.getEndTime()); 618 if (result != 0) 619 return result; 620 result = s1.getName().compareTo(s2.getName()); 622 if (result != 0) 623 return result; 624 return s1.getDescription().compareTo(s2.getDescription()); 626 } 628 638 public boolean equals(Object obj) 639 { 640 if (obj instanceof MAssignmentSlot) 641 { 642 MAssignmentSlot cmp = (MAssignmentSlot)obj; 643 if (m_startTime.equals(cmp.getStartTime()) 644 && m_endTime.equals(cmp.getEndTime()) 645 && m_status == cmp.getStatus() 646 && m_name.equals(cmp.getName()) 647 && m_description.equals(cmp.getDescription())) 648 return true; 649 } 650 return false; 651 } 653 657 public int hashCode() 658 { 659 return m_startTime.hashCode() + m_endTime.hashCode() + m_status 660 + m_name.hashCode() + m_description.hashCode(); 661 } 663 }
| Popular Tags
|