Skip to content

Commit f3de736

Browse files
[API 7] Event valueType text (#67)
* Feat: Event valueType * Update sample * Get valueType from context --------- Co-authored-by: Christophe Carvalho Vilas-Boas <christophe.carvalhovilasboas@gmail.com>
1 parent bd3073a commit f3de736

File tree

4 files changed

+39
-17
lines changed

4 files changed

+39
-17
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.christophecvb.touchportal.annotations;
2+
3+
public enum ValueType {
4+
TEXT("text"),
5+
CHOICE("choice")
6+
;
7+
8+
private final String key;
9+
10+
ValueType(String key) {
11+
this.key = key;
12+
}
13+
14+
public String getKey() {
15+
return this.key;
16+
}
17+
}

AnnotationsProcessor/src/main/java/com/christophecvb/touchportal/annotations/processor/EventProcessor.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.christophecvb.touchportal.annotations.processor;
22

3-
import com.christophecvb.touchportal.annotations.Category;
4-
import com.christophecvb.touchportal.annotations.Event;
5-
import com.christophecvb.touchportal.annotations.Plugin;
6-
import com.christophecvb.touchportal.annotations.State;
3+
import com.christophecvb.touchportal.annotations.*;
74
import com.christophecvb.touchportal.annotations.processor.utils.Pair;
85
import com.christophecvb.touchportal.annotations.processor.utils.SpecUtils;
96
import com.christophecvb.touchportal.helpers.EventHelper;
@@ -38,12 +35,12 @@ public static Pair<JsonObject, TypeSpec.Builder> process(TouchPortalPluginAnnota
3835
State state = eventElement.getAnnotation(State.class);
3936
Event event = eventElement.getAnnotation(Event.class);
4037

41-
String reference = eventElement.getEnclosingElement().getSimpleName() + "." + eventElement.getSimpleName();
42-
4338
if (state == null) {
4439
throw new TPAnnotationException.Builder(State.class).isMissing(true).forElement(eventElement).build();
4540
}
4641

42+
String reference = eventElement.getEnclosingElement().getSimpleName() + "." + eventElement.getSimpleName();
43+
4744
TypeSpec.Builder eventTypeSpecBuilder = SpecUtils.createEventTypeSpecBuilder(pluginElement, categoryElement, category, eventElement, event);
4845

4946
JsonObject jsonEvent = new JsonObject();
@@ -56,19 +53,21 @@ public static Pair<JsonObject, TypeSpec.Builder> process(TouchPortalPluginAnnota
5653
jsonEvent.addProperty(EventHelper.TYPE, EventHelper.TYPE_COMMUNICATE);
5754
jsonEvent.addProperty(EventHelper.NAME, EventHelper.getEventName(eventElement, event));
5855
jsonEvent.addProperty(EventHelper.FORMAT, event.format());
56+
jsonEvent.addProperty(EventHelper.VALUE_STATE_ID, StateHelper.getStateId(pluginElement, categoryElement, category, eventElement, state));
5957

6058
String desiredTPType = GenericHelper.getTouchPortalType(reference, eventElement);
61-
if (desiredTPType.equals(StateHelper.TYPE_TEXT)) {
62-
jsonEvent.addProperty(EventHelper.VALUE_TYPE, EventHelper.VALUE_TYPE_CHOICE);
63-
JsonArray eventValueChoices = new JsonArray();
64-
for (String valueChoice : event.valueChoices()) {
65-
eventValueChoices.add(valueChoice);
59+
60+
if (desiredTPType.equals(EventHelper.VALUE_TYPE)) {
61+
if (event.valueChoices().length > 0) {
62+
jsonEvent.addProperty(EventHelper.VALUE_TYPE, StateHelper.TYPE_CHOICE);
63+
JsonArray eventValueChoices = new JsonArray();
64+
for (String valueChoice : event.valueChoices()) {
65+
eventValueChoices.add(valueChoice);
66+
}
67+
jsonEvent.add(EventHelper.VALUE_CHOICES, eventValueChoices);
68+
} else {
69+
jsonEvent.addProperty(EventHelper.VALUE_TYPE, StateHelper.TYPE_TEXT);
6670
}
67-
jsonEvent.add(EventHelper.VALUE_CHOICES, eventValueChoices);
68-
jsonEvent.addProperty(EventHelper.VALUE_STATE_ID, StateHelper.getStateId(pluginElement, categoryElement, category, eventElement, state));
69-
}
70-
else {
71-
throw new GenericHelper.TPTypeException.Builder(reference).typeUnsupported(desiredTPType).forAnnotation(GenericHelper.TPTypeException.ForAnnotation.EVENT).build();
7271
}
7372

7473
return Pair.create(jsonEvent, eventTypeSpecBuilder);

AnnotationsProcessor/src/main/java/com/christophecvb/touchportal/annotations/processor/utils/SpecUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ public static TypeSpec.Builder createEventTypeSpecBuilder(Element pluginElement,
297297
eventTypeSpecBuilder.addField(SpecUtils.getStaticFinalStringFieldSpec("name", EventHelper.getEventName(eventElement, event)));
298298
eventTypeSpecBuilder.addField(SpecUtils.getStaticFinalStringFieldSpec("format", event.format()));
299299
eventTypeSpecBuilder.addField(SpecUtils.getStaticFinalStringArrayFieldSpec("value_choices", event.valueChoices()));
300+
eventTypeSpecBuilder.addField(SpecUtils.getStaticFinalStringFieldSpec("value_type", event.valueType().getKey()));
300301

301302
return eventTypeSpecBuilder;
302303
}

SampleJava/src/main/java/com/christophecvb/touchportal/samplejava/TouchPortalSampleJavaPlugin.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,15 @@ private enum Categories {
6565
* State and Event definition example
6666
*/
6767
@State(defaultValue = "1", categoryId = "BaseCategory")
68-
@Event(valueChoices = {"1", "2"}, format = "When customStateWithEvent becomes $val")
68+
@Event(valueChoices = {"1", "2"}, valueType = ValueType.CHOICE, format = "When customStateWithEvent becomes $val")
6969
private String customStateWithEvent;
7070

7171
/**
72+
* State and Event definition example
73+
*/
74+
@State(defaultValue = "1", categoryId = "BaseCategory")
75+
@Event(valueType = ValueType.TEXT, format = "When customStateWithEvent becomes $val")
76+
private String stateWithEventTypeText;
7277
* State and Event in Subcategory definition example
7378
*/
7479
@State(defaultValue = "1", categoryId = "CategoryWithSubs")

0 commit comments

Comments
 (0)