From 0c23baf14b417b526469ca82121bf92853134bdd Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Mon, 9 May 2022 20:58:45 +0200 Subject: [PATCH 1/8] feat: add parentGroup field in createState message --- .../helpers/SentMessageHelper.java | 1 + .../touchportal/TouchPortalPlugin.java | 35 ++++++++++++++++++- .../touchportal/test/LibraryTests.java | 5 +++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/SentMessageHelper.java b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/SentMessageHelper.java index a5a8d2cb..a852b127 100644 --- a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/SentMessageHelper.java +++ b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/SentMessageHelper.java @@ -47,5 +47,6 @@ public class SentMessageHelper { public static final String OPTIONS = "options"; public static final String CONNECTOR_ID = "connectorId"; public static final String SHORT_ID = "shortId"; + public static final String PARENT_GROUP = "parentGroup"; } \ No newline at end of file diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index ae58cf00..b0d286ed 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -712,7 +712,21 @@ public boolean sendStateUpdate(String stateId, Object value, boolean allowEmptyV * @return boolean stateUpdateMessageSent */ public boolean sendCreateState(String categoryId, String stateId, String description, Object value) { - return this.sendCreateState(categoryId, stateId, description, value, false, false); + return this.sendCreateState(categoryId, stateId, description, value, false, false, null); + } + + /** + * Send a Create a State Message to the Touch Portal Plugin System not allowing empty value + * + * @param categoryId String + * @param stateId String + * @param description String + * @param value Object + * @param parentGroup String + * @return boolean stateUpdateMessageSent + */ + public boolean sendCreateState(String categoryId, String stateId, String description, Object value, String parentGroup) { + return this.sendCreateState(categoryId, stateId, description, value, false, false, parentGroup); } /** @@ -727,6 +741,22 @@ public boolean sendCreateState(String categoryId, String stateId, String descrip * @return boolean stateCreateSent */ public boolean sendCreateState(String categoryId, String stateId, String description, Object value, boolean allowEmptyValue, boolean forceUpdate) { + return this.sendCreateState(categoryId, stateId, description, value, allowEmptyValue, forceUpdate, null); + } + + /** + * Send a Create a State Message to the Touch Portal Plugin System + * + * @param categoryId String + * @param stateId String + * @param description String + * @param value Object + * @param allowEmptyValue boolean + * @param forceUpdate boolean + * @param parentGroup String + * @return boolean stateCreateSent + */ + public boolean sendCreateState(String categoryId, String stateId, String description, Object value, boolean allowEmptyValue, boolean forceUpdate, String parentGroup) { boolean sent = false; String valueStr = value != null ? String.valueOf(value) : null; if (categoryId != null && !categoryId.isEmpty() && stateId != null && !stateId.isEmpty() && description != null && !description.isEmpty() && valueStr != null && (allowEmptyValue || !valueStr.isEmpty())) { @@ -737,6 +767,9 @@ public boolean sendCreateState(String categoryId, String stateId, String descrip createStateMessage.addProperty(SentMessageHelper.ID, stateId); createStateMessage.addProperty(SentMessageHelper.DESCRIPTION, description); createStateMessage.addProperty(SentMessageHelper.DEFAULT_VALUE, valueStr); + if (parentGroup != null && !parentGroup.isEmpty()) { + createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, parentGroup); + } sent = this.send(createStateMessage); if (sent) { this.currentStates.put(stateId, valueStr); diff --git a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java index db68892d..7586f082 100644 --- a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java +++ b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java @@ -344,6 +344,11 @@ public void testDynamicStates() { assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01")); assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 02")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01", "Parent")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 02", "")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 03", null)); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", "Default Value 04", true, false, "Parent")); + assertFalse(this.touchPortalPluginTest.sendRemoveState(null, null)); assertFalse(this.touchPortalPluginTest.sendRemoveState("", null)); assertFalse(this.touchPortalPluginTest.sendRemoveState(null, "")); From 424052daf06b486b45833758e1656569fe6438b1 Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Mon, 9 May 2022 21:03:33 +0200 Subject: [PATCH 2/8] bump SDK and TP Api version --- .../com/christophecvb/touchportal/helpers/PluginHelper.java | 2 +- build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/PluginHelper.java b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/PluginHelper.java index 0c615b3a..b4706d68 100644 --- a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/PluginHelper.java +++ b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/PluginHelper.java @@ -43,7 +43,7 @@ public class PluginHelper { /** * Touch Portal Plugin System version */ - public static final int TOUCH_PORTAL_PLUGIN_VERSION = 5; + public static final int TOUCH_PORTAL_PLUGIN_VERSION = 6; /** * Argument passed to the jar to start the plugin */ diff --git a/build.gradle b/build.gradle index 03f26fbc..0af94084 100644 --- a/build.gradle +++ b/build.gradle @@ -5,8 +5,8 @@ allprojects { } ext.versionMajor = 8 -ext.versionMinor = 1 -ext.versionPatch = 2 +ext.versionMinor = 2 +ext.versionPatch = 0 ext.isRelease = System.getenv('IS_RELEASE') == 'YES' From fb033d4c914eba732044fbcf7a51a0cae42ddb02 Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Tue, 10 May 2022 15:49:31 +0200 Subject: [PATCH 3/8] Change parameter order --- .../touchportal/TouchPortalPlugin.java | 14 +++++++------- .../touchportal/test/LibraryTests.java | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index b0d286ed..2b6e722d 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -712,7 +712,7 @@ public boolean sendStateUpdate(String stateId, Object value, boolean allowEmptyV * @return boolean stateUpdateMessageSent */ public boolean sendCreateState(String categoryId, String stateId, String description, Object value) { - return this.sendCreateState(categoryId, stateId, description, value, false, false, null); + return this.sendCreateState(categoryId, stateId, null, description, value, false, false); } /** @@ -720,13 +720,13 @@ public boolean sendCreateState(String categoryId, String stateId, String descrip * * @param categoryId String * @param stateId String + * @param parentGroup String * @param description String * @param value Object - * @param parentGroup String * @return boolean stateUpdateMessageSent */ - public boolean sendCreateState(String categoryId, String stateId, String description, Object value, String parentGroup) { - return this.sendCreateState(categoryId, stateId, description, value, false, false, parentGroup); + public boolean sendCreateState(String categoryId, String stateId, String parentGroup, String description, Object value) { + return this.sendCreateState(categoryId, stateId, parentGroup, description, value, false, false); } /** @@ -741,7 +741,7 @@ public boolean sendCreateState(String categoryId, String stateId, String descrip * @return boolean stateCreateSent */ public boolean sendCreateState(String categoryId, String stateId, String description, Object value, boolean allowEmptyValue, boolean forceUpdate) { - return this.sendCreateState(categoryId, stateId, description, value, allowEmptyValue, forceUpdate, null); + return this.sendCreateState(categoryId, stateId, null, description, value, allowEmptyValue, forceUpdate); } /** @@ -749,14 +749,14 @@ public boolean sendCreateState(String categoryId, String stateId, String descrip * * @param categoryId String * @param stateId String + * @param parentGroup String * @param description String * @param value Object * @param allowEmptyValue boolean * @param forceUpdate boolean - * @param parentGroup String * @return boolean stateCreateSent */ - public boolean sendCreateState(String categoryId, String stateId, String description, Object value, boolean allowEmptyValue, boolean forceUpdate, String parentGroup) { + public boolean sendCreateState(String categoryId, String stateId, String parentGroup, String description, Object value, boolean allowEmptyValue, boolean forceUpdate) { boolean sent = false; String valueStr = value != null ? String.valueOf(value) : null; if (categoryId != null && !categoryId.isEmpty() && stateId != null && !stateId.isEmpty() && description != null && !description.isEmpty() && valueStr != null && (allowEmptyValue || !valueStr.isEmpty())) { diff --git a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java index 7586f082..0d1271e2 100644 --- a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java +++ b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java @@ -344,10 +344,10 @@ public void testDynamicStates() { assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01")); assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 02")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01", "Parent")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 02", "")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 03", null)); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", "Default Value 04", true, false, "Parent")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Parent", "Dynamically Created State", "Default Value 01")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "", "Dynamically Created State", "Default Value 02")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", null, "Dynamically Created State", "Default Value 03")); + assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Parent", "Dynamically Created State", "Default Value 04", true, false)); assertFalse(this.touchPortalPluginTest.sendRemoveState(null, null)); assertFalse(this.touchPortalPluginTest.sendRemoveState("", null)); From f902aa9643fe8241ccbb862903a658414a62d78b Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Tue, 10 May 2022 22:36:57 +0200 Subject: [PATCH 4/8] feat: use the name from the category of the categoryId if parentGroup isn't specified --- .../touchportal/annotations/Category.java | 2 +- .../touchportal/TouchPortalPlugin.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Annotations/src/main/java/com/christophecvb/touchportal/annotations/Category.java b/Annotations/src/main/java/com/christophecvb/touchportal/annotations/Category.java index 43c843fb..e6b622b3 100644 --- a/Annotations/src/main/java/com/christophecvb/touchportal/annotations/Category.java +++ b/Annotations/src/main/java/com/christophecvb/touchportal/annotations/Category.java @@ -33,7 +33,7 @@ * * @see TP Documentation: Categories */ -@Retention(RetentionPolicy.SOURCE) +@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface Category { /** diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index 2b6e722d..8fd0a2b7 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -767,9 +767,22 @@ public boolean sendCreateState(String categoryId, String stateId, String parentG createStateMessage.addProperty(SentMessageHelper.ID, stateId); createStateMessage.addProperty(SentMessageHelper.DESCRIPTION, description); createStateMessage.addProperty(SentMessageHelper.DEFAULT_VALUE, valueStr); - if (parentGroup != null && !parentGroup.isEmpty()) { + if (parentGroup == null || parentGroup.isEmpty()) { + for (Class subClass : this.pluginClass.getDeclaredClasses()) { + for (Field subClassField : subClass.getDeclaredFields()) { + if (subClassField.isAnnotationPresent(Category.class)) { + Category category = subClassField.getAnnotation(Category.class); + + if(category.name().equals(categoryId) || category.id().equals(categoryId) || subClassField.getName().equals(categoryId)) { + createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, category.name()); + } + } + } + } + } else { createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, parentGroup); } + sent = this.send(createStateMessage); if (sent) { this.currentStates.put(stateId, valueStr); From 4bc11e8291ee3f9c030a1fe4d8392b0c526c2975 Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Wed, 11 May 2022 14:41:28 +0200 Subject: [PATCH 5/8] fix: typo's in stateId fix: use correct categoryId --- .../touchportal/test/LibraryTests.java | 65 ++++++++++--------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java index 0d1271e2..2f85477c 100644 --- a/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java +++ b/Library/src/test/java/com/christophecvb/touchportal/test/LibraryTests.java @@ -321,42 +321,43 @@ public void testDynamicStates() { assertFalse(this.touchPortalPluginTest.sendCreateState(null, null, null, "")); assertFalse(this.touchPortalPluginTest.sendCreateState("", "", "", "")); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", null, null, null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "", null, null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", null, "", null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", null, null, "")); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "", "", "")); - - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", null, null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "", null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", null, "")); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "", "")); - - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", null)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "")); - - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", null, true, false)); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", "", true, false)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", "", true, false)); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Dynamically Created State", "", true, true)); - - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01")); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 02")); - - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Parent", "Dynamically Created State", "Default Value 01")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "", "Dynamically Created State", "Default Value 02")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", null, "Dynamically Created State", "Default Value 03")); - assertTrue(this.touchPortalPluginTest.sendCreateState("CategoryId", "StateId", "Parent", "Dynamically Created State", "Default Value 04", true, false)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", null, null, null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "", null, null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", null, "", null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", null, null, "")); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "", "", "")); + + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", null, null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "", null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", null, "")); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "", "")); + + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", null)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "")); + + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", null, true, false)); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "", true, false)); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "", true, false)); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "", true, true)); + + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "Default Value 01")); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "Default Value 01")); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "Default Value 02")); + + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Parent", "Dynamically Created State", "Default Value 01")); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "", "Dynamically Created State", "Default Value 02")); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", null, "Dynamically Created State", "Default Value 03")); + assertTrue(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Parent", "Dynamically Created State", "Default Value 04", true, false)); + assertFalse(this.touchPortalPluginTest.sendRemoveState(null, null)); assertFalse(this.touchPortalPluginTest.sendRemoveState("", null)); assertFalse(this.touchPortalPluginTest.sendRemoveState(null, "")); assertFalse(this.touchPortalPluginTest.sendRemoveState("", "")); - assertFalse(this.touchPortalPluginTest.sendRemoveState("CategoryId", null)); - assertFalse(this.touchPortalPluginTest.sendRemoveState("CategoryId", "")); + assertFalse(this.touchPortalPluginTest.sendRemoveState("BaseCategory", null)); + assertFalse(this.touchPortalPluginTest.sendRemoveState("BaseCategory", "")); - assertTrue(this.touchPortalPluginTest.sendRemoveState("CategoryId", "SateId")); + assertTrue(this.touchPortalPluginTest.sendRemoveState("BaseCategory", "StateId")); } @Test @@ -365,8 +366,8 @@ public void testSendFail() { assertFalse(this.touchPortalPluginTest.sendStateUpdate(TouchPortalPluginTestConstants.BaseCategory.States.CustomState.ID, "New Value")); assertFalse(this.touchPortalPluginTest.sendChoiceUpdate("listId", null, true)); assertFalse(this.touchPortalPluginTest.sendSpecificChoiceUpdate("listId", "instanceId", null, true)); - assertFalse(this.touchPortalPluginTest.sendCreateState("CategoryId", "SateId", "Dynamically Created State", "Default Value 01")); - assertFalse(this.touchPortalPluginTest.sendRemoveState("CategoryId", "SateId")); + assertFalse(this.touchPortalPluginTest.sendCreateState("BaseCategory", "StateId", "Dynamically Created State", "Default Value 01")); + assertFalse(this.touchPortalPluginTest.sendRemoveState("BaseCategory", "StateId")); } @Test From c466f376b908a85e680c6a0bfd4d763bf9da4d4f Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Wed, 11 May 2022 14:44:02 +0200 Subject: [PATCH 6/8] fix: add check for category id from constants --- .../touchportal/helpers/CategoryHelper.java | 12 ++++++++++++ .../christophecvb/touchportal/TouchPortalPlugin.java | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java index 42e7bb6d..58120592 100644 --- a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java +++ b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java @@ -23,6 +23,7 @@ import com.christophecvb.touchportal.annotations.Category; import javax.lang.model.element.Element; +import java.lang.reflect.Field; /** * Touch Portal Plugin Category Helper @@ -59,6 +60,17 @@ public static String getCategoryName(Element categoryElement, Category category) return category.name().isEmpty() ? categoryElement.getSimpleName().toString() : category.name(); } + /** + * Get the generated Category Name + * + * @param categoryField {@link Field} + * @param category {@link Category} + * @return String categoryName + */ + public static String getCategoryName(Field categoryField, Category category) { + return category.name().isEmpty() ? categoryField.getName() : category.name(); + } + /** * Get the generated Category ID * diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index 8fd0a2b7..04a964f1 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -773,8 +773,8 @@ public boolean sendCreateState(String categoryId, String stateId, String parentG if (subClassField.isAnnotationPresent(Category.class)) { Category category = subClassField.getAnnotation(Category.class); - if(category.name().equals(categoryId) || category.id().equals(categoryId) || subClassField.getName().equals(categoryId)) { - createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, category.name()); + if(category.name().equals(categoryId) || category.id().equals(categoryId) || subClassField.getName().equals(categoryId) || categoryId.equals(CategoryHelper.getCategoryId(this.pluginClass, subClassField.getName()))) { + createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, CategoryHelper.getCategoryName(subClassField, category)); } } } From 06adc2bbae321f7fe779655f00dca47193b3b61b Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Thu, 12 May 2022 09:29:08 +0200 Subject: [PATCH 7/8] fix: break outer loop --- .../java/com/christophecvb/touchportal/TouchPortalPlugin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index 04a964f1..05b893c9 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -768,6 +768,7 @@ public boolean sendCreateState(String categoryId, String stateId, String parentG createStateMessage.addProperty(SentMessageHelper.DESCRIPTION, description); createStateMessage.addProperty(SentMessageHelper.DEFAULT_VALUE, valueStr); if (parentGroup == null || parentGroup.isEmpty()) { + classLoop: for (Class subClass : this.pluginClass.getDeclaredClasses()) { for (Field subClassField : subClass.getDeclaredFields()) { if (subClassField.isAnnotationPresent(Category.class)) { @@ -775,6 +776,7 @@ public boolean sendCreateState(String categoryId, String stateId, String parentG if(category.name().equals(categoryId) || category.id().equals(categoryId) || subClassField.getName().equals(categoryId) || categoryId.equals(CategoryHelper.getCategoryId(this.pluginClass, subClassField.getName()))) { createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, CategoryHelper.getCategoryName(subClassField, category)); + break classLoop; } } } From 4d77a74fc0cf98e6418e5d54242a144e8b1bfb73 Mon Sep 17 00:00:00 2001 From: Pjiesco Date: Wed, 18 May 2022 14:46:55 +0200 Subject: [PATCH 8/8] feat: add CategoryHelper.getCategoryShortId method --- .../touchportal/helpers/CategoryHelper.java | 11 +++++++++++ .../christophecvb/touchportal/TouchPortalPlugin.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java index 58120592..c4eba796 100644 --- a/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java +++ b/Helpers/src/main/java/com/christophecvb/touchportal/helpers/CategoryHelper.java @@ -49,6 +49,17 @@ public static String getCategoryId(Element pluginElement, Element categoryElemen return CategoryHelper._getCategoryId(PluginHelper.getPluginId(pluginElement), category.id().isEmpty() ? categoryElement.getSimpleName().toString() : category.id()); } + /** + * Get Category Short ID + * + * @param categoryField {@link Field} + * @param category {@link Category} + * @return String categoryId + */ + public static String getCategoryShortId(Field categoryField, Category category) { + return category.id().isEmpty() ? categoryField.getName() : category.id(); + } + /** * Get the generated Category Name * diff --git a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java index 05b893c9..37865d03 100644 --- a/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java +++ b/Library/src/main/java/com/christophecvb/touchportal/TouchPortalPlugin.java @@ -774,7 +774,7 @@ public boolean sendCreateState(String categoryId, String stateId, String parentG if (subClassField.isAnnotationPresent(Category.class)) { Category category = subClassField.getAnnotation(Category.class); - if(category.name().equals(categoryId) || category.id().equals(categoryId) || subClassField.getName().equals(categoryId) || categoryId.equals(CategoryHelper.getCategoryId(this.pluginClass, subClassField.getName()))) { + if(categoryId.equals(CategoryHelper.getCategoryShortId(subClassField, category))) { createStateMessage.addProperty(SentMessageHelper.PARENT_GROUP, CategoryHelper.getCategoryName(subClassField, category)); break classLoop; }