UNOMI-84 : Handle boolean property type
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/9ed047c8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/9ed047c8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/9ed047c8 Branch: refs/heads/master Commit: 9ed047c8acf5caa0ca023ffceead0dd3cbb5254d Parents: 3ecd61c Author: Abdelkader Midani <[email protected]> Authored: Mon Feb 20 19:10:39 2017 +0100 Committer: Abdelkader Midani <[email protected]> Committed: Mon Feb 20 19:10:39 2017 +0100 ---------------------------------------------------------------------- .../unomi/persistence/spi/PropertyHelper.java | 20 ++++++++++++++++++++ .../baseplugin/actions/SetPropertyAction.java | 14 ++++++++++++-- .../META-INF/cxs/actions/setPropertyAction.json | 5 +++++ .../resources/META-INF/cxs/values/boolean.json | 3 +++ 4 files changed, 40 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/9ed047c8/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyHelper.java ---------------------------------------------------------------------- diff --git a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyHelper.java b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyHelper.java index e70a09f..ff7d0c0 100644 --- a/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyHelper.java +++ b/persistence-spi/src/main/java/org/apache/unomi/persistence/spi/PropertyHelper.java @@ -109,4 +109,24 @@ public class PropertyHelper { return null; } + public static Boolean getBooleanValue(Object setPropertyValueBoolean) { + + if (setPropertyValueBoolean instanceof Boolean) { + return((Boolean)setPropertyValueBoolean); + } else if (setPropertyValueBoolean instanceof Number) { + if (((Number)setPropertyValueBoolean).intValue() >= 1) { + return new Boolean(true); + } else { + return new Boolean(false); + } + } else { + if (((String)setPropertyValueBoolean).equalsIgnoreCase("true") || ((String)setPropertyValueBoolean).equalsIgnoreCase("on") || + ((String)setPropertyValueBoolean).equalsIgnoreCase("yes") || ((String)setPropertyValueBoolean).equalsIgnoreCase("1")) { + return new Boolean(true); + } else { + return new Boolean(false); + } + } + + } } http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/9ed047c8/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java ---------------------------------------------------------------------- diff --git a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java index f50de42..3771114 100644 --- a/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java +++ b/plugins/baseplugin/src/main/java/org/apache/unomi/plugins/baseplugin/actions/SetPropertyAction.java @@ -18,10 +18,12 @@ package org.apache.unomi.plugins.baseplugin.actions; import org.apache.unomi.api.Event; +import org.apache.unomi.api.PropertyType; import org.apache.unomi.api.actions.Action; import org.apache.unomi.api.actions.ActionExecutor; import org.apache.unomi.api.services.EventService; import org.apache.unomi.api.services.PrivacyService; +import org.apache.unomi.api.services.ProfileService; import org.apache.unomi.persistence.spi.PropertyHelper; import java.text.SimpleDateFormat; @@ -30,11 +32,16 @@ import java.util.TimeZone; public class SetPropertyAction implements ActionExecutor { private PrivacyService privacyService; + private ProfileService profileService; public void setPrivacyService(PrivacyService privacyService) { this.privacyService = privacyService; } + public void setProfileService(ProfileService profileService) { + this.profileService = profileService; + } + public int execute(Action action, Event event) { boolean storeInSession = Boolean.TRUE.equals(action.getParameterValues().get("storeInSession")); @@ -46,14 +53,18 @@ public class SetPropertyAction implements ActionExecutor { } Object propertyValueInteger = action.getParameterValues().get("setPropertyValueInteger"); Object setPropertyValueMultiple = action.getParameterValues().get("setPropertyValueMultiple"); + Object setPropertyValueBoolean = action.getParameterValues().get("setPropertyValueBoolean"); if (propertyValue == null) { if (propertyValueInteger != null) { propertyValue = PropertyHelper.getInteger(propertyValueInteger); } - if(setPropertyValueMultiple != null) { + if (setPropertyValueMultiple != null) { propertyValue = setPropertyValueMultiple; } + if (setPropertyValueBoolean != null) { + propertyValue = PropertyHelper.getBooleanValue(setPropertyValueBoolean); + } } if (propertyValue != null && propertyValue.equals("now")) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); @@ -61,7 +72,6 @@ public class SetPropertyAction implements ActionExecutor { propertyValue = format.format(event.getTimeStamp()); } - Object target = storeInSession ? event.getSession() : event.getProfile(); if (PropertyHelper.setProperty(target, propertyName, propertyValue, (String) action.getParameterValues().get("setPropertyStrategy"))) { http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/9ed047c8/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json ---------------------------------------------------------------------- diff --git a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json index ff72333..c076eb7 100644 --- a/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json +++ b/plugins/baseplugin/src/main/resources/META-INF/cxs/actions/setPropertyAction.json @@ -21,6 +21,11 @@ "multivalued": false }, { + "id": "setPropertyValueBoolean", + "type": "boolean", + "multivalued": false + }, + { "id": "setPropertyValueInteger", "type": "integer", "multivalued": false http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/9ed047c8/services/src/main/resources/META-INF/cxs/values/boolean.json ---------------------------------------------------------------------- diff --git a/services/src/main/resources/META-INF/cxs/values/boolean.json b/services/src/main/resources/META-INF/cxs/values/boolean.json new file mode 100644 index 0000000..237d86d --- /dev/null +++ b/services/src/main/resources/META-INF/cxs/values/boolean.json @@ -0,0 +1,3 @@ +{ + "id": "boolean" +} \ No newline at end of file
