546 PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties()); |
546 PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties()); |
547 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
547 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
548 |
548 |
549 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
549 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
550 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
550 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
551 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
552 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
551 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
553 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
552 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
554 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
553 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
555 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
554 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
556 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
555 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
641 PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties()); |
640 PropertyValidator.getInstance().assertOne(Property.DTSTART, getProperties()); |
642 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
641 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
643 PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties()); |
642 PropertyValidator.getInstance().assertOne(Property.SEQUENCE, getProperties()); |
644 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
643 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
645 |
644 |
646 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
647 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
645 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
648 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
646 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
649 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
647 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
650 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
648 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
651 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
649 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
745 PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties()); |
743 PropertyValidator.getInstance().assertOne(Property.SUMMARY, getProperties()); |
746 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
744 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
747 |
745 |
748 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
746 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
749 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
747 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
750 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
751 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
748 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
752 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
749 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
753 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
750 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
754 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
751 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
755 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
752 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
831 public void validate() throws ValidationException { |
828 public void validate() throws ValidationException { |
832 PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties()); |
829 PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties()); |
833 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
830 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
834 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
831 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
835 |
832 |
836 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
837 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
833 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
838 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
834 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
839 |
835 |
840 PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties()); |
836 PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties()); |
841 PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties()); |
837 PropertyValidator.getInstance().assertNone(Property.ATTENDEE, getProperties()); |
939 |
935 |
940 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
936 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
941 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
937 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
942 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
938 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
943 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
939 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
944 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
945 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
940 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
946 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
941 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
947 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
942 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
948 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
943 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
949 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
944 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
1032 PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties()); |
1027 PropertyValidator.getInstance().assertOne(Property.ATTENDEE, getProperties()); |
1033 PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties()); |
1028 PropertyValidator.getInstance().assertOne(Property.DTSTAMP, getProperties()); |
1034 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
1029 PropertyValidator.getInstance().assertOne(Property.ORGANIZER, getProperties()); |
1035 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
1030 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
1036 |
1031 |
1037 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
1038 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
1032 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
1039 |
1033 |
1040 PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties()); |
1034 PropertyValidator.getInstance().assertNone(Property.ATTACH, getProperties()); |
1041 PropertyValidator.getInstance().assertNone(Property.CATEGORIES, getProperties()); |
1035 PropertyValidator.getInstance().assertNone(Property.CATEGORIES, getProperties()); |
1042 PropertyValidator.getInstance().assertNone(Property.CLASS, getProperties()); |
1036 PropertyValidator.getInstance().assertNone(Property.CLASS, getProperties()); |
1138 |
1132 |
1139 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
1133 PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, getProperties()); |
1140 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
1134 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
1141 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
1135 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
1142 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
1136 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
1143 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
1144 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
1137 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
1145 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
1138 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
1146 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
1139 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
1147 PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties()); |
1140 PropertyValidator.getInstance().assertOneOrLess(Property.DTSTART, getProperties()); |
1148 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
1141 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
1231 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
1224 PropertyValidator.getInstance().assertOne(Property.UID, getProperties()); |
1232 |
1225 |
1233 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
1226 PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, getProperties()); |
1234 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
1227 PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, getProperties()); |
1235 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
1228 PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, getProperties()); |
1236 PropertyValidator.getInstance().assertOneOrLess(Property.COMMENT, getProperties()); |
|
1237 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
1229 PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, getProperties()); |
1238 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
1230 PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, getProperties()); |
1239 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
1231 PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, getProperties()); |
1240 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
1232 PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, getProperties()); |
1241 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
1233 PropertyValidator.getInstance().assertOneOrLess(Property.GEO, getProperties()); |
1454 * @return The end for this VEVENT. |
1446 * @return The end for this VEVENT. |
1455 */ |
1447 */ |
1456 public final DtEnd getEndDate(final boolean deriveFromDuration) { |
1448 public final DtEnd getEndDate(final boolean deriveFromDuration) { |
1457 DtEnd dtEnd = (DtEnd) getProperty(Property.DTEND); |
1449 DtEnd dtEnd = (DtEnd) getProperty(Property.DTEND); |
1458 // No DTEND? No problem, we'll use the DURATION. |
1450 // No DTEND? No problem, we'll use the DURATION. |
1459 if (dtEnd == null && deriveFromDuration && getDuration() != null) { |
1451 if (dtEnd == null && deriveFromDuration && getStartDate() != null) { |
1460 final DtStart dtStart = getStartDate(); |
1452 final DtStart dtStart = getStartDate(); |
1461 final Duration vEventDuration = getDuration(); |
1453 final Duration vEventDuration; |
|
1454 if (getDuration() != null) { |
|
1455 vEventDuration = getDuration(); |
|
1456 } else if (dtStart.getDate() instanceof DateTime) { |
|
1457 // If "DTSTART" is a DATE-TIME, then the event's duration is zero (see: RFC 5545, 3.6.1 Event Component) |
|
1458 vEventDuration = new Duration(new Dur(0, 0, 0, 0)); |
|
1459 } else { |
|
1460 // If "DTSTART" is a DATE, then the event's duration is one day (see: RFC 5545, 3.6.1 Event Component) |
|
1461 vEventDuration = new Duration(new Dur(1, 0, 0, 0)); |
|
1462 } |
|
1463 |
1462 dtEnd = new DtEnd(Dates.getInstance(vEventDuration.getDuration() |
1464 dtEnd = new DtEnd(Dates.getInstance(vEventDuration.getDuration() |
1463 .getTime(dtStart.getDate()), (Value) dtStart |
1465 .getTime(dtStart.getDate()), (Value) dtStart |
1464 .getParameter(Parameter.VALUE))); |
1466 .getParameter(Parameter.VALUE))); |
1465 if (dtStart.isUtc()) { |
1467 if (dtStart.isUtc()) { |
1466 dtEnd.setUtc(true); |
1468 dtEnd.setUtc(true); |