From a04ef6fee7751a2209e8a4383ad4c844b2499fa3 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 12 Sep 2015 19:10:26 +1000 Subject: [PATCH] Use closures to reduce duplication of code --- .../component/VEventCounterValidator.java | 46 ++++++++------- .../VEventDeclineCounterValidator.java | 57 +++++++++---------- .../component/VEventPublishValidator.java | 47 ++++++++------- 3 files changed, 78 insertions(+), 72 deletions(-) diff --git a/src/main/java/net/fortuna/ical4j/validate/component/VEventCounterValidator.java b/src/main/java/net/fortuna/ical4j/validate/component/VEventCounterValidator.java index 1ac40967d..f849fcda9 100644 --- a/src/main/java/net/fortuna/ical4j/validate/component/VEventCounterValidator.java +++ b/src/main/java/net/fortuna/ical4j/validate/component/VEventCounterValidator.java @@ -8,6 +8,10 @@ import net.fortuna.ical4j.validate.PropertyValidator; import net.fortuna.ical4j.validate.ValidationException; import net.fortuna.ical4j.validate.Validator; +import org.apache.commons.collections4.Closure; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Arrays; /** * METHOD:COUNTER Validator. @@ -74,33 +78,33 @@ public class VEventCounterValidator implements Validator { private static final long serialVersionUID = 1L; - public void validate(VEvent target) throws ValidationException { - PropertyValidator.getInstance().assertOne(Property.DTSTAMP, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.DTSTART, target.getProperties()); + public void validate(final VEvent target) throws ValidationException { + CollectionUtils.forAllDo(Arrays.asList(Property.DTSTAMP, Property.DTSTART), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOne(input, target.getProperties()); + } + }); if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) { PropertyValidator.getInstance().assertOne(Property.ORGANIZER, target.getProperties()); } - PropertyValidator.getInstance().assertOne(Property.SEQUENCE, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.SUMMARY, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.UID, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.SEQUENCE, Property.SUMMARY, Property.UID), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOne(input, target.getProperties()); + } + }); - PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.GEO, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.URL, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.CATEGORIES, Property.CLASS, Property.CREATED, Property.DESCRIPTION, + Property.DTEND, Property.DURATION, Property.GEO, Property.LAST_MODIFIED, Property.LOCATION, Property.PRIORITY, + Property.RECURRENCE_ID, Property.RESOURCES, Property.STATUS, Property.TRANSP, Property.URL), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOneOrLess(input, target.getProperties()); + } + }); for (final VAlarm alarm : target.getAlarms()) { alarm.validate(Method.COUNTER); diff --git a/src/main/java/net/fortuna/ical4j/validate/component/VEventDeclineCounterValidator.java b/src/main/java/net/fortuna/ical4j/validate/component/VEventDeclineCounterValidator.java index 0227d4e6a..1b147cb24 100644 --- a/src/main/java/net/fortuna/ical4j/validate/component/VEventDeclineCounterValidator.java +++ b/src/main/java/net/fortuna/ical4j/validate/component/VEventDeclineCounterValidator.java @@ -7,6 +7,10 @@ import net.fortuna.ical4j.validate.PropertyValidator; import net.fortuna.ical4j.validate.ValidationException; import net.fortuna.ical4j.validate.Validator; +import org.apache.commons.collections4.Closure; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Arrays; /** * METHOD:DECLINECOUNTER Validator. @@ -67,38 +71,31 @@ public class VEventDeclineCounterValidator implements Validator { private static final long serialVersionUID = 1L; - public void validate(VEvent target) throws ValidationException { - PropertyValidator.getInstance().assertOne(Property.DTSTAMP, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.ORGANIZER, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.UID, target.getProperties()); + public void validate(final VEvent target) throws ValidationException { + CollectionUtils.forAllDo(Arrays.asList(Property.DTSTAMP, Property.ORGANIZER, Property.UID), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOne(input, target.getProperties()); + } + }); - PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.RECURRENCE_ID, Property.SEQUENCE), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOneOrLess(input, target.getProperties()); + } + }); - PropertyValidator.getInstance().assertNone(Property.ATTACH, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.ATTENDEE, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.CATEGORIES, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.CLASS, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.CONTACT, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.CREATED, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.DESCRIPTION, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.DTEND, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.DTSTART, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.DURATION, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.EXDATE, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.EXRULE, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.GEO, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.LAST_MODIFIED, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.LOCATION, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.PRIORITY, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.RDATE, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.RELATED_TO, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.RESOURCES, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.RRULE, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.STATUS, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.SUMMARY, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.TRANSP, target.getProperties()); - PropertyValidator.getInstance().assertNone(Property.URL, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.ATTACH, Property.ATTENDEE, Property.CATEGORIES, Property.CLASS, + Property.CONTACT, Property.CREATED, Property.DESCRIPTION, Property.DTEND, Property.DTSTART, Property.DURATION, + Property.EXDATE, Property.EXRULE, Property.GEO, Property.LAST_MODIFIED, Property.LOCATION, Property.PRIORITY, + Property.RDATE, Property.RELATED_TO, Property.RESOURCES, Property.RRULE, Property.STATUS, Property.SUMMARY, + Property.TRANSP, Property.URL), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertNone(input, target.getProperties()); + } + }); ComponentValidator.assertNone(Component.VALARM, target.getAlarms()); } diff --git a/src/main/java/net/fortuna/ical4j/validate/component/VEventPublishValidator.java b/src/main/java/net/fortuna/ical4j/validate/component/VEventPublishValidator.java index 2e0ea9748..10576febc 100644 --- a/src/main/java/net/fortuna/ical4j/validate/component/VEventPublishValidator.java +++ b/src/main/java/net/fortuna/ical4j/validate/component/VEventPublishValidator.java @@ -8,6 +8,10 @@ import net.fortuna.ical4j.validate.PropertyValidator; import net.fortuna.ical4j.validate.ValidationException; import net.fortuna.ical4j.validate.Validator; +import org.apache.commons.collections4.Closure; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Arrays; /** * METHOD:PUBLISH Validator. @@ -69,33 +73,34 @@ public class VEventPublishValidator implements Validator { private static final long serialVersionUID = 1L; - public void validate(VEvent target) throws ValidationException { - PropertyValidator.getInstance().assertOne(Property.DTSTAMP, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.DTSTART, target.getProperties()); + public void validate(final VEvent target) throws ValidationException { + CollectionUtils.forAllDo(Arrays.asList(Property.DTSTAMP, Property.DTSTART), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOne(input, target.getProperties()); + } + }); if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) { - PropertyValidator.getInstance().assertOne(Property.ORGANIZER, target.getProperties()); - PropertyValidator.getInstance().assertOne(Property.SUMMARY, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.ORGANIZER, Property.SUMMARY), new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOne(input, target.getProperties()); + } + }); } PropertyValidator.getInstance().assertOne(Property.UID, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.RECURRENCE_ID, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.SEQUENCE, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.CATEGORIES, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.CLASS, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.CREATED, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DESCRIPTION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DTEND, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.DURATION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.GEO, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.LAST_MODIFIED, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.LOCATION, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.PRIORITY, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.RESOURCES, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.STATUS, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.TRANSP, target.getProperties()); - PropertyValidator.getInstance().assertOneOrLess(Property.URL, target.getProperties()); + CollectionUtils.forAllDo(Arrays.asList(Property.RECURRENCE_ID, Property.SEQUENCE, Property.CATEGORIES, Property.CLASS, + Property.CREATED, Property.DESCRIPTION, Property.DTEND, Property.DURATION, Property.GEO, Property.LAST_MODIFIED, + Property.LOCATION, Property.PRIORITY, Property.RESOURCES, Property.STATUS, Property.TRANSP, Property.URL), + new Closure() { + @Override + public void execute(String input) { + PropertyValidator.getInstance().assertOneOrLess(input, target.getProperties()); + } + }); if (!CompatibilityHints.isHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION)) { PropertyValidator.getInstance().assertNone(Property.ATTENDEE, target.getProperties());