From ccbfac8b0b903fb69bd3889aaabb52f4224530a0 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 13:44:30 +1000 Subject: [PATCH 1/6] Added vcard templates --- .../ical4j/template/groupware/Individual.java | 68 +++++++++++++++++++ .../template/groupware/Organization.java | 38 +++++++++++ .../org/ical4j/template/groupware/Team.java | 49 +++++++++++++ .../template/groupware/IndividualTest.groovy | 36 ++++++++++ 4 files changed, 191 insertions(+) create mode 100644 src/main/java/org/ical4j/template/groupware/Individual.java create mode 100644 src/main/java/org/ical4j/template/groupware/Organization.java create mode 100644 src/main/java/org/ical4j/template/groupware/Team.java create mode 100644 src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy diff --git a/src/main/java/org/ical4j/template/groupware/Individual.java b/src/main/java/org/ical4j/template/groupware/Individual.java new file mode 100644 index 0000000..f1cacb9 --- /dev/null +++ b/src/main/java/org/ical4j/template/groupware/Individual.java @@ -0,0 +1,68 @@ +package org.ical4j.template.groupware; + +import net.fortuna.ical4j.vcard.GeneralPropertyModifiers; +import net.fortuna.ical4j.vcard.IdentificationPropertyModifiers; +import net.fortuna.ical4j.vcard.VCard; +import net.fortuna.ical4j.vcard.property.N; +import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind; +import org.ical4j.template.AbstractTemplate; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Individual extends AbstractTemplate { + + private String familyName; + + private String givenName; + + private final List additionalNames = new ArrayList<>(); + + private final List prefixes = new ArrayList<>(); + + private final List suffixes = new ArrayList<>(); + + public Individual() { + super(VCard.class); + } + + public Individual(T prototype) { + super(prototype.getClass()); + setPrototype(prototype); + } + + public Individual familyName(String familyName) { + this.familyName = familyName; + return this; + } + + public Individual givenName(String givenName) { + this.givenName = givenName; + return this; + } + + public Individual additionalName(String... additionalName) { + this.additionalNames.addAll(Arrays.asList(additionalName)); + return this; + } + + public Individual prefix(String... prefix) { + this.prefixes.addAll(Arrays.asList(prefix)); + return this; + } + + public Individual suffix(String... suffix) { + this.suffixes.addAll(Arrays.asList(suffix)); + return this; + } + + @Override + public VCard apply(VCard vCard) { + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.INDIVIDUAL); + vCard.with(IdentificationPropertyModifiers.N, new N(familyName, givenName, + additionalNames.toArray(new String[0]), prefixes.toArray(new String[0]), + suffixes.toArray(new String[0]))); + return vCard; + } +} diff --git a/src/main/java/org/ical4j/template/groupware/Organization.java b/src/main/java/org/ical4j/template/groupware/Organization.java new file mode 100644 index 0000000..a28b9f8 --- /dev/null +++ b/src/main/java/org/ical4j/template/groupware/Organization.java @@ -0,0 +1,38 @@ +package org.ical4j.template.groupware; + +import net.fortuna.ical4j.vcard.GeneralPropertyModifiers; +import net.fortuna.ical4j.vcard.IdentificationPropertyModifiers; +import net.fortuna.ical4j.vcard.VCard; +import net.fortuna.ical4j.vcard.property.Fn; +import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind; +import org.ical4j.template.AbstractTemplate; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Organization extends AbstractTemplate { + + private final List names = new ArrayList<>(); + + public Organization() { + super(VCard.class); + } + + public Organization(T prototype) { + super(prototype.getClass()); + setPrototype(prototype); + } + + public Organization name(String...name) { + names.addAll(Arrays.asList(name)); + return this; + } + + @Override + public VCard apply(VCard vCard) { + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.ORG); + names.forEach(name -> vCard.with(IdentificationPropertyModifiers.FN, new Fn(name))); + return vCard; + } +} diff --git a/src/main/java/org/ical4j/template/groupware/Team.java b/src/main/java/org/ical4j/template/groupware/Team.java new file mode 100644 index 0000000..28431ac --- /dev/null +++ b/src/main/java/org/ical4j/template/groupware/Team.java @@ -0,0 +1,49 @@ +package org.ical4j.template.groupware; + +import net.fortuna.ical4j.vcard.GeneralPropertyModifiers; +import net.fortuna.ical4j.vcard.IdentificationPropertyModifiers; +import net.fortuna.ical4j.vcard.OrganizationalPropertyModifiers; +import net.fortuna.ical4j.vcard.VCard; +import net.fortuna.ical4j.vcard.property.Fn; +import net.fortuna.ical4j.vcard.property.Member; +import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind; +import org.ical4j.template.AbstractTemplate; + +import java.net.URI; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Team extends AbstractTemplate { + + private final List names = new ArrayList<>(); + + private final List members = new ArrayList<>(); + + public Team() { + super(VCard.class); + } + + public Team(T prototype) { + super(prototype.getClass()); + setPrototype(prototype); + } + + public Team name(String...name) { + names.addAll(Arrays.asList(name)); + return this; + } + + public Team member(URI...member) { + members.addAll(Arrays.asList(member)); + return this; + } + + @Override + public VCard apply(VCard vCard) { + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.GROUP); + names.forEach(name -> vCard.with(IdentificationPropertyModifiers.FN, new Fn(name))); + members.forEach(member -> vCard.with(OrganizationalPropertyModifiers.MEMBER, new Member(member))); + return vCard; + } +} diff --git a/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy b/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy new file mode 100644 index 0000000..66c5079 --- /dev/null +++ b/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy @@ -0,0 +1,36 @@ +package org.ical4j.template.groupware + +import net.fortuna.ical4j.vcard.ContentBuilder +import net.fortuna.ical4j.vcard.VCard +import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind +import spock.lang.Specification + +class IndividualTest extends Specification { + + def 'test kind is set correctly'() { + expect: 'kind == individual for new instances' + new Individual().apply().kind.orElseThrow() == ImmutableKind.INDIVIDUAL + + and: 'kind is updated correctly for existing instances' + VCard card = new ContentBuilder().vcard { + kind ImmutableKind.ORG + } + new Individual().apply(card).kind.orElseThrow() == ImmutableKind.INDIVIDUAL + } + + def 'test template with name creation'() { + when: 'individual is created from inputs' + def individual = new Individual().familyName(familyName) + .givenName(givenName).additionalName(additionalNames).prefix(prefix) + .suffix(suffix).apply() + + then: 'N property matches expected string' + individual.n.orElseThrow() as String == expectedNString + + where: + familyName | givenName | additionalNames | prefix | suffix | expectedNString + 'Bloggs' | 'Joe' | 'Xavier' | 'Mr.' | 'Esq.' | 'N:Bloggs;Joe;Xavier;Mr.;Esq.\r\n' + 'Fields' | 'Sally' | ['Rosemary', 'Lavender'] as String[] + | 'Dr.' | 'Jr.' | 'N:Fields;Sally;Rosemary,Lavender;Dr.;Jr.\r\n' + } +} From 0c5bc691264e999dbd64cb2b80c7e5b40eb917c6 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 13:45:11 +1000 Subject: [PATCH 2/6] Updated dependencies --- build.gradle | 3 +-- gradle.properties | 9 ++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index f799092..0478b9c 100644 --- a/build.gradle +++ b/build.gradle @@ -48,8 +48,7 @@ dependencies { "org.spockframework:spock-core" // logging - testImplementation "org.slf4j:slf4j-log4j12:$slf4jVersion", - "org.apache.logging.log4j:log4j:$log4jVersion" + testImplementation "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { diff --git a/gradle.properties b/gradle.properties index 77a8c6e..ca6bf1f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,10 @@ -ical4jVersion = 4.0.0-rc4 -ical4jVcardVersion = 2.0.0-beta3 +ical4jVersion = 4.0.2 +ical4jVcardVersion = 2.0.0-rc1 ical4jExtensionsVersion = 2.0.0-rc4 -groovyVersion=3.0.20 +groovyVersion=3.0.21 bndVersion = 6.1.0 -slf4jVersion = 2.0.9 -log4jVersion = 2.22.1 +log4jVersion = 2.23.1 j2htmlVersion = 1.5.0 spockVersion = 2.4-M1-groovy-3.0 From 258af032f8ebd9dcbf97adc31dc8ae9b7b9aae21 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 13:45:50 +1000 Subject: [PATCH 3/6] Automate release notes --- .github/workflows/create-release.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/create-release.yml diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml new file mode 100644 index 0000000..91e4521 --- /dev/null +++ b/.github/workflows/create-release.yml @@ -0,0 +1,21 @@ +name: Create Release + +on: + push: + tags: + - "ical4j-template-*" + - "!ical4j-template-*-pre" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 +# - name: Generate changelog +# run: make changelog + - name: Release + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true +# body_path: CHANGELOG.md \ No newline at end of file From 733906f44af7852e4d6fe554a1d548be5e1199cf Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 13:46:26 +1000 Subject: [PATCH 4/6] Define template contract --- .../org/ical4j/template/AbstractTemplate.java | 9 ++++--- .../java/org/ical4j/template/Template.java | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/ical4j/template/Template.java diff --git a/src/main/java/org/ical4j/template/AbstractTemplate.java b/src/main/java/org/ical4j/template/AbstractTemplate.java index e5f4b50..e6039ad 100644 --- a/src/main/java/org/ical4j/template/AbstractTemplate.java +++ b/src/main/java/org/ical4j/template/AbstractTemplate.java @@ -1,14 +1,15 @@ package org.ical4j.template; import java.lang.reflect.InvocationTargetException; -import java.util.function.UnaryOperator; /** - * Base class for templates with the added ability to construct new object instances. + * Base class for templates with support for a prototype instance. A prototype is an + * instance of the applicable object type used to construct a new instance or modify + * an existing instance prior to applying the template. * - * @param + * @param the applicable object type */ -public abstract class AbstractTemplate implements UnaryOperator { +public abstract class AbstractTemplate implements Template { private final Class typeClass; diff --git a/src/main/java/org/ical4j/template/Template.java b/src/main/java/org/ical4j/template/Template.java new file mode 100644 index 0000000..9d10063 --- /dev/null +++ b/src/main/java/org/ical4j/template/Template.java @@ -0,0 +1,26 @@ +package org.ical4j.template; + +import java.lang.reflect.InvocationTargetException; +import java.util.function.UnaryOperator; + +/** + * A template encapsulates rules for creating and modifying complex iCalendar and + * vCard objects. + * + * @param the applicable object type + */ +public interface Template extends UnaryOperator { + + /** + * Apply the template to a new object instance. The use of this method requires + * that the applicable object type contains a default noargs constructor that + * can be used to create a new object instance. + * @return a new object instance resulting from applying the template + * @throws NoSuchMethodException if a noargs constructor doesn't exist on the applicable object type + * @throws InvocationTargetException an error resulting from invoking the noargs constructor + * @throws InstantiationException an error resulting from invoking the noargs constructor + * @throws IllegalAccessException an error resulting from invoking the noargs constructor + */ + T apply() throws NoSuchMethodException, InvocationTargetException, InstantiationException, + IllegalAccessException; +} From e2c540c0e1afe999780ed9ea84138e88bba9e0d0 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 15:11:50 +1000 Subject: [PATCH 5/6] Apply prototype --- .../java/org/ical4j/template/AbstractTemplate.java | 11 ++++++++++- .../java/org/ical4j/template/groupware/Action.java | 7 +++++-- .../java/org/ical4j/template/groupware/Agenda.java | 2 ++ .../org/ical4j/template/groupware/Anniversary.java | 2 ++ .../org/ical4j/template/groupware/Appointment.java | 2 ++ .../org/ical4j/template/groupware/Attendance.java | 2 ++ .../org/ical4j/template/groupware/Individual.java | 2 ++ .../java/org/ical4j/template/groupware/Meeting.java | 5 +---- src/main/java/org/ical4j/template/groupware/Note.java | 2 ++ .../org/ical4j/template/groupware/Observance.java | 2 ++ .../org/ical4j/template/groupware/Organization.java | 2 ++ src/main/java/org/ical4j/template/groupware/Team.java | 2 ++ .../ical4j/template/groupware/IndividualTest.groovy | 6 ++++++ .../org/ical4j/template/groupware/MeetingTest.groovy | 9 ++++++--- 14 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/ical4j/template/AbstractTemplate.java b/src/main/java/org/ical4j/template/AbstractTemplate.java index e6039ad..f90012e 100644 --- a/src/main/java/org/ical4j/template/AbstractTemplate.java +++ b/src/main/java/org/ical4j/template/AbstractTemplate.java @@ -1,5 +1,7 @@ package org.ical4j.template; +import net.fortuna.ical4j.model.PropertyContainer; + import java.lang.reflect.InvocationTargetException; /** @@ -9,7 +11,7 @@ * * @param the applicable object type */ -public abstract class AbstractTemplate implements Template { +public abstract class AbstractTemplate implements Template { private final Class typeClass; @@ -32,4 +34,11 @@ public T apply() throws NoSuchMethodException, InvocationTargetException, Instan return apply(typeClass.getDeclaredConstructor().newInstance()); } + + protected T applyPrototype(T target) { + if (prototype != null) { + getPrototype().getProperties().forEach(p -> target.add(p.copy())); + } + return target; + } } diff --git a/src/main/java/org/ical4j/template/groupware/Action.java b/src/main/java/org/ical4j/template/groupware/Action.java index 1f24773..4cce506 100644 --- a/src/main/java/org/ical4j/template/groupware/Action.java +++ b/src/main/java/org/ical4j/template/groupware/Action.java @@ -14,7 +14,7 @@ /** * This represents an action undertaken by an actor in response to a related component. - * Typically, actions are chained together to form a workflow. + * Actions may be chained together to form a workflow. * * See: Action */ @@ -58,9 +58,12 @@ public Action due(Temporal due) { @Override public VToDo apply(VToDo vToDo) { - vToDo.with(COMPLETED, completed); + applyPrototype(vToDo); + +// vToDo.with(CONCEPT, ImmutableConcept.ACTION); vToDo.with(SUMMARY, summary); vToDo.with(DUE, due); + vToDo.with(COMPLETED, completed); vToDo.with((BiFunction) (c, p) -> { if (p != null) c.add(p); return c;}, participant); return vToDo; diff --git a/src/main/java/org/ical4j/template/groupware/Agenda.java b/src/main/java/org/ical4j/template/groupware/Agenda.java index e5cb5bc..01d3d3f 100644 --- a/src/main/java/org/ical4j/template/groupware/Agenda.java +++ b/src/main/java/org/ical4j/template/groupware/Agenda.java @@ -62,6 +62,8 @@ public Agenda nextItem(VToDo item) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + vToDo.replace(ActionType.AGENDA); vToDo.with(SUMMARY, summary); vToDo.with(DESCRIPTION, description); diff --git a/src/main/java/org/ical4j/template/groupware/Anniversary.java b/src/main/java/org/ical4j/template/groupware/Anniversary.java index e2c9a47..4e9e1b4 100644 --- a/src/main/java/org/ical4j/template/groupware/Anniversary.java +++ b/src/main/java/org/ical4j/template/groupware/Anniversary.java @@ -43,6 +43,8 @@ public Anniversary withDate(LocalDate date) { @Override public VEvent apply(VEvent vEvent) { + applyPrototype(vEvent); + vEvent.with(DTSTART, date); vEvent.with(RRULE, schedule); return vEvent; diff --git a/src/main/java/org/ical4j/template/groupware/Appointment.java b/src/main/java/org/ical4j/template/groupware/Appointment.java index 5c8c2e0..6fdb7cd 100644 --- a/src/main/java/org/ical4j/template/groupware/Appointment.java +++ b/src/main/java/org/ical4j/template/groupware/Appointment.java @@ -32,6 +32,8 @@ public Appointment start(ZonedDateTime start) { @Override public VEvent apply(VEvent vEvent) { + applyPrototype(vEvent); + vEvent.with(DTSTART, start); return vEvent; } diff --git a/src/main/java/org/ical4j/template/groupware/Attendance.java b/src/main/java/org/ical4j/template/groupware/Attendance.java index a3d5688..3dc44c5 100644 --- a/src/main/java/org/ical4j/template/groupware/Attendance.java +++ b/src/main/java/org/ical4j/template/groupware/Attendance.java @@ -57,6 +57,8 @@ public Attendance end(Temporal end) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + vJournal.with(DTSTART, start); vJournal.with(DTEND, end); vJournal.with(RELATED_COMPONENT, context); diff --git a/src/main/java/org/ical4j/template/groupware/Individual.java b/src/main/java/org/ical4j/template/groupware/Individual.java index f1cacb9..7fe82f3 100644 --- a/src/main/java/org/ical4j/template/groupware/Individual.java +++ b/src/main/java/org/ical4j/template/groupware/Individual.java @@ -59,6 +59,8 @@ public Individual suffix(String... suffix) { @Override public VCard apply(VCard vCard) { + applyPrototype(vCard); + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.INDIVIDUAL); vCard.with(IdentificationPropertyModifiers.N, new N(familyName, givenName, additionalNames.toArray(new String[0]), prefixes.toArray(new String[0]), diff --git a/src/main/java/org/ical4j/template/groupware/Meeting.java b/src/main/java/org/ical4j/template/groupware/Meeting.java index bfef2a3..6c01173 100644 --- a/src/main/java/org/ical4j/template/groupware/Meeting.java +++ b/src/main/java/org/ical4j/template/groupware/Meeting.java @@ -121,10 +121,7 @@ public Meeting agenda(VToDo agenda) { @Override public VEvent apply(VEvent vEvent) { - // apply prototype.. - if (getPrototype() != null) { - getPrototype().getProperties().forEach(vEvent::add); - } + applyPrototype(vEvent); // apply mandatory properties.. vEvent.replace(EventType.MEETING); diff --git a/src/main/java/org/ical4j/template/groupware/Note.java b/src/main/java/org/ical4j/template/groupware/Note.java index 972179a..2e026fd 100644 --- a/src/main/java/org/ical4j/template/groupware/Note.java +++ b/src/main/java/org/ical4j/template/groupware/Note.java @@ -51,6 +51,8 @@ public Note location(VLocation location) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + vJournal.with(SUMMARY, title); vJournal.with(DTSTART, date); vJournal.add(location); diff --git a/src/main/java/org/ical4j/template/groupware/Observance.java b/src/main/java/org/ical4j/template/groupware/Observance.java index 360a564..5341bce 100644 --- a/src/main/java/org/ical4j/template/groupware/Observance.java +++ b/src/main/java/org/ical4j/template/groupware/Observance.java @@ -72,6 +72,8 @@ public Observance repeats(Repeats schedule) { @Override public VEvent apply(VEvent vEvent) { + applyPrototype(vEvent); + vEvent.replace(ImmutableTransp.TRANSPARENT); vEvent.with(DescriptivePropertyModifiers.SUMMARY, title); vEvent.with(DateTimePropertyModifiers.DTSTART, start); diff --git a/src/main/java/org/ical4j/template/groupware/Organization.java b/src/main/java/org/ical4j/template/groupware/Organization.java index a28b9f8..42ea02c 100644 --- a/src/main/java/org/ical4j/template/groupware/Organization.java +++ b/src/main/java/org/ical4j/template/groupware/Organization.java @@ -31,6 +31,8 @@ public Organization name(String...name) { @Override public VCard apply(VCard vCard) { + applyPrototype(vCard); + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.ORG); names.forEach(name -> vCard.with(IdentificationPropertyModifiers.FN, new Fn(name))); return vCard; diff --git a/src/main/java/org/ical4j/template/groupware/Team.java b/src/main/java/org/ical4j/template/groupware/Team.java index 28431ac..e7d1a72 100644 --- a/src/main/java/org/ical4j/template/groupware/Team.java +++ b/src/main/java/org/ical4j/template/groupware/Team.java @@ -41,6 +41,8 @@ public Team member(URI...member) { @Override public VCard apply(VCard vCard) { + applyPrototype(vCard); + vCard.with(GeneralPropertyModifiers.KIND, ImmutableKind.GROUP); names.forEach(name -> vCard.with(IdentificationPropertyModifiers.FN, new Fn(name))); members.forEach(member -> vCard.with(OrganizationalPropertyModifiers.MEMBER, new Member(member))); diff --git a/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy b/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy index 66c5079..78a7ba9 100644 --- a/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy +++ b/src/test/groovy/org/ical4j/template/groupware/IndividualTest.groovy @@ -11,6 +11,12 @@ class IndividualTest extends Specification { expect: 'kind == individual for new instances' new Individual().apply().kind.orElseThrow() == ImmutableKind.INDIVIDUAL + and: 'kind is updated correctly when using a prototype' + VCard prototype = new ContentBuilder().vcard { + kind ImmutableKind.ORG + } + new Individual(prototype).apply().kind.orElseThrow() == ImmutableKind.INDIVIDUAL + and: 'kind is updated correctly for existing instances' VCard card = new ContentBuilder().vcard { kind ImmutableKind.ORG diff --git a/src/test/groovy/org/ical4j/template/groupware/MeetingTest.groovy b/src/test/groovy/org/ical4j/template/groupware/MeetingTest.groovy index 69e815c..7c361d4 100644 --- a/src/test/groovy/org/ical4j/template/groupware/MeetingTest.groovy +++ b/src/test/groovy/org/ical4j/template/groupware/MeetingTest.groovy @@ -33,9 +33,12 @@ END:VEVENT\r\n/ fn('Big Boss') caladruri('mailto:boss@example.com') } - meeting = new Meeting().organizer(organizer) - .start(LocalDate.of(2023, 11, 13).atStartOfDay().atZone(ZoneId.of('America/New_York'))) - .duration(Duration.ofMinutes(30)).apply(meeting) + meeting = new Meeting() + .organizer(organizer) + .start(LocalDate.of(2023, 11, 13) + .atStartOfDay().atZone(ZoneId.of('America/New_York'))) + .duration(Duration.ofMinutes(30)) + .apply(meeting) then: 'the result matches expected' meeting as String ==~ /BEGIN:VEVENT\r From 978d6695f533109b72778b49b301fdbf8d952060 Mon Sep 17 00:00:00 2001 From: Ben Fortuna Date: Sat, 3 Aug 2024 15:20:56 +1000 Subject: [PATCH 6/6] Apply prototype --- src/main/java/org/ical4j/template/agile/Backlog.java | 2 ++ src/main/java/org/ical4j/template/agile/Criteria.java | 2 ++ src/main/java/org/ical4j/template/agile/Epic.java | 2 ++ src/main/java/org/ical4j/template/agile/Retrospective.java | 2 ++ src/main/java/org/ical4j/template/agile/Sprint.java | 2 ++ src/main/java/org/ical4j/template/agile/Story.java | 2 ++ src/main/java/org/ical4j/template/project/Decision.java | 2 ++ src/main/java/org/ical4j/template/project/Issue.java | 2 ++ src/main/java/org/ical4j/template/project/Milestone.java | 2 ++ src/main/java/org/ical4j/template/project/Objective.java | 2 ++ src/main/java/org/ical4j/template/project/Project.java | 2 ++ src/main/java/org/ical4j/template/project/Risk.java | 2 ++ src/main/java/org/ical4j/template/project/Task.java | 2 ++ src/main/java/org/ical4j/template/project/Timesheet.java | 2 ++ src/main/java/org/ical4j/template/wiki/Article.java | 2 ++ src/main/java/org/ical4j/template/wiki/Definition.java | 2 ++ src/main/java/org/ical4j/template/wiki/Faq.java | 2 ++ src/main/java/org/ical4j/template/wiki/Topic.java | 2 ++ src/main/java/org/ical4j/template/workflow/Approval.java | 2 ++ src/main/java/org/ical4j/template/workflow/Request.java | 2 ++ src/main/java/org/ical4j/template/workflow/Roster.java | 2 ++ src/main/java/org/ical4j/template/workflow/Workspace.java | 2 ++ 22 files changed, 44 insertions(+) diff --git a/src/main/java/org/ical4j/template/agile/Backlog.java b/src/main/java/org/ical4j/template/agile/Backlog.java index 174ac71..acde777 100644 --- a/src/main/java/org/ical4j/template/agile/Backlog.java +++ b/src/main/java/org/ical4j/template/agile/Backlog.java @@ -28,6 +28,8 @@ public Backlog(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/agile/Criteria.java b/src/main/java/org/ical4j/template/agile/Criteria.java index 01ce23e..0d76b35 100644 --- a/src/main/java/org/ical4j/template/agile/Criteria.java +++ b/src/main/java/org/ical4j/template/agile/Criteria.java @@ -23,6 +23,8 @@ public Criteria(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/agile/Epic.java b/src/main/java/org/ical4j/template/agile/Epic.java index 38b90c1..556c81e 100644 --- a/src/main/java/org/ical4j/template/agile/Epic.java +++ b/src/main/java/org/ical4j/template/agile/Epic.java @@ -28,6 +28,8 @@ public Epic(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/agile/Retrospective.java b/src/main/java/org/ical4j/template/agile/Retrospective.java index b37ab3e..a62b2b9 100644 --- a/src/main/java/org/ical4j/template/agile/Retrospective.java +++ b/src/main/java/org/ical4j/template/agile/Retrospective.java @@ -32,6 +32,8 @@ public Retrospective(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/agile/Sprint.java b/src/main/java/org/ical4j/template/agile/Sprint.java index 90e6676..aec086c 100644 --- a/src/main/java/org/ical4j/template/agile/Sprint.java +++ b/src/main/java/org/ical4j/template/agile/Sprint.java @@ -26,6 +26,8 @@ public Sprint(T prototype) { @Override public VEvent apply(VEvent vEvent) { + applyPrototype(vEvent); + return vEvent; } } diff --git a/src/main/java/org/ical4j/template/agile/Story.java b/src/main/java/org/ical4j/template/agile/Story.java index 5c95040..b966108 100644 --- a/src/main/java/org/ical4j/template/agile/Story.java +++ b/src/main/java/org/ical4j/template/agile/Story.java @@ -26,6 +26,8 @@ public Story(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/project/Decision.java b/src/main/java/org/ical4j/template/project/Decision.java index 72e71ea..56b032c 100644 --- a/src/main/java/org/ical4j/template/project/Decision.java +++ b/src/main/java/org/ical4j/template/project/Decision.java @@ -40,6 +40,8 @@ public Decision(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + vJournal.replace(status); return vJournal; } diff --git a/src/main/java/org/ical4j/template/project/Issue.java b/src/main/java/org/ical4j/template/project/Issue.java index d21a7a9..032cbcb 100644 --- a/src/main/java/org/ical4j/template/project/Issue.java +++ b/src/main/java/org/ical4j/template/project/Issue.java @@ -47,6 +47,8 @@ public Issue parent(RelatedTo parent) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + vToDo.replace(issueType); // vToDo.replace(status); vToDo.replace(parent); diff --git a/src/main/java/org/ical4j/template/project/Milestone.java b/src/main/java/org/ical4j/template/project/Milestone.java index 25121b2..b1bd33c 100644 --- a/src/main/java/org/ical4j/template/project/Milestone.java +++ b/src/main/java/org/ical4j/template/project/Milestone.java @@ -28,6 +28,8 @@ public Milestone(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/project/Objective.java b/src/main/java/org/ical4j/template/project/Objective.java index e4f2494..1521d40 100644 --- a/src/main/java/org/ical4j/template/project/Objective.java +++ b/src/main/java/org/ical4j/template/project/Objective.java @@ -20,6 +20,8 @@ public Objective(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/project/Project.java b/src/main/java/org/ical4j/template/project/Project.java index e505fb5..d7068d9 100644 --- a/src/main/java/org/ical4j/template/project/Project.java +++ b/src/main/java/org/ical4j/template/project/Project.java @@ -34,6 +34,8 @@ public Project(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/project/Risk.java b/src/main/java/org/ical4j/template/project/Risk.java index 7b253e5..7bac072 100644 --- a/src/main/java/org/ical4j/template/project/Risk.java +++ b/src/main/java/org/ical4j/template/project/Risk.java @@ -38,6 +38,8 @@ public Risk(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + vJournal.replace(status); return vJournal; } diff --git a/src/main/java/org/ical4j/template/project/Task.java b/src/main/java/org/ical4j/template/project/Task.java index c2b4da1..d260e47 100644 --- a/src/main/java/org/ical4j/template/project/Task.java +++ b/src/main/java/org/ical4j/template/project/Task.java @@ -20,6 +20,8 @@ public Task(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/project/Timesheet.java b/src/main/java/org/ical4j/template/project/Timesheet.java index 254628c..8729c61 100644 --- a/src/main/java/org/ical4j/template/project/Timesheet.java +++ b/src/main/java/org/ical4j/template/project/Timesheet.java @@ -20,6 +20,8 @@ public Timesheet(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/wiki/Article.java b/src/main/java/org/ical4j/template/wiki/Article.java index ace5edb..2745226 100644 --- a/src/main/java/org/ical4j/template/wiki/Article.java +++ b/src/main/java/org/ical4j/template/wiki/Article.java @@ -23,6 +23,8 @@ public Article(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/wiki/Definition.java b/src/main/java/org/ical4j/template/wiki/Definition.java index 3ad35d1..65ae02f 100644 --- a/src/main/java/org/ical4j/template/wiki/Definition.java +++ b/src/main/java/org/ical4j/template/wiki/Definition.java @@ -20,6 +20,8 @@ public Definition(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/wiki/Faq.java b/src/main/java/org/ical4j/template/wiki/Faq.java index 138e09a..c0da06a 100644 --- a/src/main/java/org/ical4j/template/wiki/Faq.java +++ b/src/main/java/org/ical4j/template/wiki/Faq.java @@ -20,6 +20,8 @@ public Faq(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/wiki/Topic.java b/src/main/java/org/ical4j/template/wiki/Topic.java index e302b7b..720c9a7 100644 --- a/src/main/java/org/ical4j/template/wiki/Topic.java +++ b/src/main/java/org/ical4j/template/wiki/Topic.java @@ -20,6 +20,8 @@ public Topic(T prototype) { @Override public VJournal apply(VJournal vJournal) { + applyPrototype(vJournal); + return vJournal; } } diff --git a/src/main/java/org/ical4j/template/workflow/Approval.java b/src/main/java/org/ical4j/template/workflow/Approval.java index b62c6a6..f89af75 100644 --- a/src/main/java/org/ical4j/template/workflow/Approval.java +++ b/src/main/java/org/ical4j/template/workflow/Approval.java @@ -23,6 +23,8 @@ public Approval(T prototype) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + return vToDo; } } diff --git a/src/main/java/org/ical4j/template/workflow/Request.java b/src/main/java/org/ical4j/template/workflow/Request.java index d6630a9..cd54a4f 100644 --- a/src/main/java/org/ical4j/template/workflow/Request.java +++ b/src/main/java/org/ical4j/template/workflow/Request.java @@ -28,6 +28,8 @@ public Request type(String summary, RequestType requestType) { @Override public VToDo apply(VToDo vToDo) { + applyPrototype(vToDo); + vToDo.replace(requestType); return vToDo; } diff --git a/src/main/java/org/ical4j/template/workflow/Roster.java b/src/main/java/org/ical4j/template/workflow/Roster.java index 2815ce7..74bf192 100644 --- a/src/main/java/org/ical4j/template/workflow/Roster.java +++ b/src/main/java/org/ical4j/template/workflow/Roster.java @@ -20,6 +20,8 @@ public Roster(T prototype) { @Override public VAvailability apply(VAvailability vAvailability) { + applyPrototype(vAvailability); + return vAvailability; } } diff --git a/src/main/java/org/ical4j/template/workflow/Workspace.java b/src/main/java/org/ical4j/template/workflow/Workspace.java index d8a59ed..b99ceb3 100644 --- a/src/main/java/org/ical4j/template/workflow/Workspace.java +++ b/src/main/java/org/ical4j/template/workflow/Workspace.java @@ -43,6 +43,8 @@ public Workspace member(VCard member) { @Override public VCard apply(VCard vCard) { + applyPrototype(vCard); + vCard.replace(new Fn(title)); members.forEach(m -> vCard.add(new Member(m))); return vCard;