Skip to content

Commit b42ab4f

Browse files
committed
feat: added some property parameters
1 parent ef729a9 commit b42ab4f

15 files changed

+329
-17
lines changed

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,16 @@
2222
*
2323
* @author Zihlu WANG
2424
*/
25-
public class AlarmTriggerRelationship {
25+
public enum AlarmTriggerRelationship implements PropertyParameter {
26+
27+
START,
28+
END
29+
;
30+
31+
private static final String PROPERTY_NAME = "RELATED";
32+
33+
@Override
34+
public String resolve() {
35+
return PROPERTY_NAME + "=" + name();
36+
}
2637
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ public Delegatee build() {
8282

8383
@Override
8484
public String resolve() {
85-
return PROPERTY_NAME + "=" + String.join(",", value
86-
.stream()
85+
return PROPERTY_NAME + "=" + String.join(",", value.stream()
8786
.map((_value) -> "\"" + _value + "\"")
8887
.toList());
8988
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ public Delegator build() {
8383

8484
@Override
8585
public String resolve() {
86-
return PROPERTY_NAME + "=\"" + String.join(",", value
87-
.stream()
86+
return PROPERTY_NAME + "=\"" + String.join(",", value.stream()
8887
.map((_value) -> "\"" + _value + "\"")
8988
.toList()) + "\"";
9089
}

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,50 @@
1717

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

20+
import java.net.URI;
21+
2022
/**
2123
* DirectoryEntryReference
2224
*
2325
* @author Zihlu WANG
2426
*/
25-
public class DirectoryEntryReference {
27+
public final class DirectoryEntryReference implements PropertyParameter {
28+
29+
private static final String PROPERTY_NAME = "DIR";
30+
31+
private final URI value;
32+
33+
private DirectoryEntryReference(URI value) {
34+
this.value = value;
35+
}
36+
37+
public static class Builder {
38+
private URI value;
39+
40+
private Builder() {
41+
}
42+
43+
public Builder directoryEntryReference(URI value) {
44+
this.value = value;
45+
return this;
46+
}
47+
48+
public Builder directoryEntryReference(String value) {
49+
this.value = URI.create(value);
50+
return this;
51+
}
52+
53+
public DirectoryEntryReference build() {
54+
return new DirectoryEntryReference(value);
55+
}
56+
}
57+
58+
public static Builder builder() {
59+
return new Builder();
60+
}
61+
62+
@Override
63+
public String resolve() {
64+
return PROPERTY_NAME + "=\"" + value + "\"";
65+
}
2666
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public enum FormatType implements PropertyParameter {
3030

3131
;
3232

33+
private static final String PROPERTY_NAME = "FMTTYPE";
34+
3335
private final String ianaRegistry;
3436

3537
FormatType(String ianaRegistry) {
@@ -38,6 +40,6 @@ public enum FormatType implements PropertyParameter {
3840

3941
@Override
4042
public String resolve() {
41-
return "FMTTYPE:" + this.ianaRegistry;
43+
return PROPERTY_NAME + "=" + this.ianaRegistry;
4244
}
4345
}

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,24 @@
2222
*
2323
* @author Zihlu WANG
2424
*/
25-
public class FreeBusyTimeType {
25+
public enum FreeBusyTimeType implements PropertyParameter {
26+
27+
FREE("FREE"),
28+
BUSY("BUSY"),
29+
BUSY_UNAVAILABLE("BUSY-UNAVAILABLE"),
30+
BUSY_TENTATIVE("BUSY-TENTATIVE")
31+
;
32+
33+
private static final String PROPERTY_NAME = "FBTYPE";
34+
35+
private final String tag;
36+
37+
FreeBusyTimeType(String tag) {
38+
this.tag = tag;
39+
}
40+
41+
@Override
42+
public String resolve() {
43+
return PROPERTY_NAME + "=" + tag;
44+
}
2645
}

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

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,73 @@
1717

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

20+
import com.onixbyte.icalendar.datatype.CalendarUserAddress;
21+
22+
import java.net.URI;
23+
import java.util.ArrayList;
24+
import java.util.List;
25+
import java.util.function.Supplier;
26+
2027
/**
2128
* GroupOrListMembership
2229
*
2330
* @author Zihlu WANG
2431
*/
25-
public class GroupOrListMembership {
32+
public final class GroupOrListMembership implements PropertyParameter {
33+
34+
private static final String PROPERTY_NAME = "MEMBER";
35+
36+
private final List<CalendarUserAddress> value;
37+
38+
private GroupOrListMembership(List<CalendarUserAddress> value) {
39+
this.value = value;
40+
}
41+
42+
public static class Builder {
43+
private final List<CalendarUserAddress> value;
44+
45+
private Builder() {
46+
this.value = new ArrayList<>();
47+
}
48+
49+
public Builder addMembership(CalendarUserAddress membership) {
50+
value.add(membership);
51+
return this;
52+
}
53+
54+
public Builder addMembership(String membership) {
55+
value.add(new CalendarUserAddress(membership));
56+
return this;
57+
}
58+
59+
public Builder addMembership(URI membership) {
60+
value.add(new CalendarUserAddress(membership));
61+
return this;
62+
}
63+
64+
public Builder addMemberships(List<CalendarUserAddress> memberships) {
65+
value.addAll(memberships);
66+
return this;
67+
}
68+
69+
public Builder addMemberships(Supplier<List<CalendarUserAddress>> memberships) {
70+
value.addAll(memberships.get());
71+
return this;
72+
}
73+
74+
public GroupOrListMembership build() {
75+
return new GroupOrListMembership(value);
76+
}
77+
}
78+
79+
public static Builder builder() {
80+
return new Builder();
81+
}
82+
83+
@Override
84+
public String resolve() {
85+
return PROPERTY_NAME + "=" + String.join(",", value.stream()
86+
.map((_value) -> "\"" + _value + "\"")
87+
.toList());
88+
}
2689
}

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,23 @@
2222
*
2323
* @author Zihlu WANG
2424
*/
25-
public class InlineEncoding {
25+
public enum InlineEncoding implements PropertyParameter {
26+
27+
EIGHT_BIT("8BIT"),
28+
29+
BASE_64("BASE64"),
30+
;
31+
32+
private final String tag;
33+
34+
InlineEncoding(String tag) {
35+
this.tag = tag;
36+
}
37+
38+
private static final String PROPERTY_NAME = "ENCODING";
39+
40+
@Override
41+
public String resolve() {
42+
return PROPERTY_NAME + "=" + tag;
43+
}
2644
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@ public enum Language implements PropertyParameter {
260260
SOUTH_AFRICA_ZULU("zu-ZA")
261261
;
262262

263+
private static final String PROPERTY_NAME = "LANGUAGE";
264+
263265
private final String value;
264266

265267
Language(String value) {
@@ -268,6 +270,6 @@ public enum Language implements PropertyParameter {
268270

269271
@Override
270272
public String resolve() {
271-
return "LANGUAGE=" + value;
273+
return PROPERTY_NAME + "=" + value;
272274
}
273275
}

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,24 @@
2222
*
2323
* @author Zihlu WANG
2424
*/
25-
public class ParticipationRole {
25+
public enum ParticipationRole implements PropertyParameter {
26+
27+
CHAIR("CHAIR"),
28+
REQ_PARTICIPANT("REQ-PARTICIPANT"),
29+
OPT_PARTICIPANT("OPT-PARTICIPANT"),
30+
NON_PARTICIPANT("NON-PARTICIPANT"),
31+
;
32+
33+
private static final String PROPERTY_NAME = "ROLE";
34+
35+
private final String tag;
36+
37+
ParticipationRole(String tag) {
38+
this.tag = tag;
39+
}
40+
41+
@Override
42+
public String resolve() {
43+
return PROPERTY_NAME + "=" + tag;
44+
}
2645
}

0 commit comments

Comments
 (0)