1717
1818package com .onixbyte .icalendar .property .parameter ;
1919
20+ import com .onixbyte .icalendar .datatype .CalendarUserAddress ;
2021import com .onixbyte .icalendar .property .CalendarResolvable ;
2122
2223import java .net .URI ;
24+ import java .util .ArrayList ;
25+ import java .util .List ;
26+ import java .util .function .Supplier ;
2327
2428/**
2529 * Delegator
@@ -30,35 +34,58 @@ public final class Delegator implements PropertyParameter {
3034
3135 private static final String PROPERTY_NAME = "DELEGATED-FROM" ;
3236
33- private URI calendarUserAddress ;
37+ private List < CalendarUserAddress > value ;
3438
35- private Delegator () {
39+ private Delegator (List <CalendarUserAddress > value ) {
40+ this .value = value ;
3641 }
3742
38- private Delegator setCalendarUserAddress (String calendarUserAddress ) {
39- this .calendarUserAddress = URI .create (calendarUserAddress );
40- return this ;
43+ public static Builder builder () {
44+ return new Builder ();
4145 }
4246
43- private Delegator setCalendarUserAddress (URI calendarUserAddress ) {
44- this .calendarUserAddress = calendarUserAddress ;
45- return this ;
46- }
47+ public static class Builder {
48+ private List <CalendarUserAddress > value ;
4749
48- private static Delegator initialiseInstance () {
49- return new Delegator ();
50- }
51-
52- public static Delegator createInstance (String calendarUserAddress ) {
53- return initialiseInstance ().setCalendarUserAddress (calendarUserAddress );
54- }
50+ private Builder () {
51+ value = new ArrayList <>();
52+ }
53+
54+ public Builder addDelegator (CalendarUserAddress delegator ) {
55+ value .add (delegator );
56+ return this ;
57+ }
58+
59+ public Builder addDelegator (String delegator ) {
60+ value .add (new CalendarUserAddress (delegator ));
61+ return this ;
62+ }
63+
64+ public Builder addDelegator (URI delegator ) {
65+ value .add (new CalendarUserAddress (delegator ));
66+ return this ;
67+ }
68+
69+ public Builder addDelegators (List <CalendarUserAddress > delegators ) {
70+ value .addAll (delegators );
71+ return this ;
72+ }
73+
74+ public Builder addDelegators (Supplier <List <CalendarUserAddress >> delegators ) {
75+ value .addAll (delegators .get ());
76+ return this ;
77+ }
5578
56- public static Delegator createInstance (URI calendarUserAddress ) {
57- return initialiseInstance ().setCalendarUserAddress (calendarUserAddress );
79+ public Delegator build () {
80+ return new Delegator (value );
81+ }
5882 }
5983
6084 @ Override
6185 public String resolve () {
62- return PROPERTY_NAME + "=\" " + calendarUserAddress + "\" " ;
86+ return PROPERTY_NAME + "=\" " + String .join ("," , value
87+ .stream ()
88+ .map ((_value ) -> "\" " + _value + "\" " )
89+ .toList ()) + "\" " ;
6390 }
6491}
0 commit comments