Skip to content

Commit c987bdd

Browse files
committed
style: optimised delegator
1 parent c0af4d0 commit c987bdd

File tree

2 files changed

+46
-144
lines changed

2 files changed

+46
-144
lines changed

webcal/src/main/java/com/onixbyte/icalendar/property/parameter/Delegator.java

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717

1818
package com.onixbyte.icalendar.property.parameter;
1919

20+
import com.onixbyte.icalendar.datatype.CalendarUserAddress;
2021
import com.onixbyte.icalendar.property.CalendarResolvable;
2122

2223
import 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
}

webcal/src/test/java/com/onixbyte/icalendar/test/DelegateeTest.java

Lines changed: 0 additions & 125 deletions
This file was deleted.

0 commit comments

Comments
 (0)