You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2020/06/26 09:53:27 UTC

[unomi] 01/01: UNOMI - 355 Add long value type

This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch UNOMI-355-long-valuetype
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 73ac09bf44cec8e718d8318193cf48a99569250d
Author: Serge Huber <sh...@apache.org>
AuthorDate: Fri Jun 26 11:53:14 2020 +0200

    UNOMI - 355 Add long value type
---
 .../router/core/processor/LineSplitProcessor.java   |  2 ++
 .../unomi/graphql/schema/GraphQLSchemaProvider.java |  3 +++
 .../unomi/graphql/schema/PropertyFilterUtils.java   | 21 +++++++++++++++++++++
 .../ElasticSearchPersistenceServiceImpl.java        | 11 +++++++++++
 .../cxs/properties/profiles/personal/age.json       |  2 +-
 .../cxs/properties/profiles/system/nbOfVisits.json  |  2 +-
 .../main/resources/META-INF/cxs/values/long.json    |  3 +++
 7 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
index 289ae39..94c60e9 100644
--- a/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
+++ b/extensions/router/router-core/src/main/java/org/apache/unomi/router/core/processor/LineSplitProcessor.java
@@ -142,6 +142,8 @@ public class LineSplitProcessor implements Processor {
                             properties.put(fieldMappingKey, new Boolean(profileData[fieldsMapping.get(fieldMappingKey)].trim()));
                         } else if (propertyType.getValueTypeId().equals("integer")) {
                             properties.put(fieldMappingKey, new Integer(profileData[fieldsMapping.get(fieldMappingKey)].trim()));
+                        } else if (propertyType.getValueTypeId().equals("long")) {
+                            properties.put(fieldMappingKey, new Long(profileData[fieldsMapping.get(fieldMappingKey)].trim()));
                         }
                     } catch (Throwable t) {
                         logger.error("Error converting profileData", t);
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
index 94bd1b8..4cbd993 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
@@ -706,6 +706,9 @@ public class GraphQLSchemaProvider {
             case "integer":
                 graphQLType = Scalars.GraphQLInt;
                 break;
+            case "long":
+                graphQLType = Scalars.GraphQLLong;
+                break;
             case "float":
                 graphQLType = Scalars.GraphQLFloat;
                 break;
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
index 2cdf12a..436193a 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/PropertyFilterUtils.java
@@ -71,6 +71,27 @@ public class PropertyFilterUtils {
                     .name(propertyName + "_gte")
                     .type(Scalars.GraphQLInt)
                     .build());
+        } else if ("long".equals(propertyType.getValueTypeId())) {
+            fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
+                    .name(propertyName + "_equals")
+                    .type(Scalars.GraphQLLong)
+                    .build());
+            fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
+                    .name(propertyName + "_lt")
+                    .type(Scalars.GraphQLLong)
+                    .build());
+            fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
+                    .name(propertyName + "_lte")
+                    .type(Scalars.GraphQLLong)
+                    .build());
+            fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
+                    .name(propertyName + "_gt")
+                    .type(Scalars.GraphQLLong)
+                    .build());
+            fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
+                    .name(propertyName + "_gte")
+                    .type(Scalars.GraphQLLong)
+                    .build());
         } else if ("float".equals(propertyType.getValueTypeId())) {
 
             fieldDefinitions.add(GraphQLInputObjectField.newInputObjectField()
diff --git a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
index b1c7654..2506fa2 100644
--- a/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
+++ b/persistence-elasticsearch/core/src/main/java/org/apache/unomi/persistence/elasticsearch/ElasticSearchPersistenceServiceImpl.java
@@ -1190,6 +1190,15 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
     private Map<String, Object> createPropertyMapping(final String fieldName, final String fieldType) {
         final HashMap<String, Object> definition = new HashMap<>();
         definition.put("type", fieldType);
+        if ("text".equals(fieldType)) {
+            definition.put("analyzer", "folding");
+            final Map<String, Object> fields = new HashMap<>();
+            final Map<String, Object> keywordField = new HashMap<>();
+            keywordField.put("type", "keyword");
+            keywordField.put("ignore_above", 256);
+            fields.put("keyword", keywordField);
+            definition.put("fields", fields);
+        }
 
         final HashMap<String, Object> map = new HashMap<>();
         map.put(fieldName, definition);
@@ -1206,6 +1215,8 @@ public class ElasticSearchPersistenceServiceImpl implements PersistenceService,
                 return "geo_point";
             case "integer":
                 return "integer";
+            case "long" :
+                return "long";
             case "float":
                 return "float";
             case "date":
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
index d0ef96e..6ea67ca 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/personal/age.json
@@ -8,7 +8,7 @@
       "personalProfileProperties"
     ]
   },
-  "type": "integer",
+  "type": "long",
   "defaultValue": "",
   "numericRanges": [
     {"key":"*_10", "to" : 10 },
diff --git a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
index 25180f1..d9a371b 100644
--- a/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
+++ b/services/src/main/resources/META-INF/cxs/properties/profiles/system/nbOfVisits.json
@@ -8,7 +8,7 @@
         "systemProfileProperties"
       ]
     },
-    "type": "integer",
+    "type": "long",
     "defaultValue": "",
     "automaticMappingsFrom": [ ],
     "numericRanges": [
diff --git a/services/src/main/resources/META-INF/cxs/values/long.json b/services/src/main/resources/META-INF/cxs/values/long.json
new file mode 100644
index 0000000..2626a8e
--- /dev/null
+++ b/services/src/main/resources/META-INF/cxs/values/long.json
@@ -0,0 +1,3 @@
+{
+  "id" : "long"
+}
\ No newline at end of file