thingsboard-memoizeit

commit2

9/5/2018 12:14:45 PM

Details

diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java b/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
index e084593..d06ddbd 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
@@ -152,6 +152,7 @@ public class ModelConstants {
     public static final String ENTITY_VIEW_TENANT_ID_PROPERTY = TENANT_ID_PROPERTY;
     public static final String ENTITY_VIEW_CUSTOMER_ID_PROPERTY = CUSTOMER_ID_PROPERTY;
     public static final String ENTITY_VIEW_NAME_PROPERTY = DEVICE_NAME_PROPERTY;
+    public static final String ENTITY_VIEW_TYPE_PROPERTY = "type_entity";
     public static final String ENTITY_VIEW_KEYS_PROPERTY = "keys";
     public static final String ENTITY_VIEW_TS_BEGIN_PROPERTY = "ts_begin";
     public static final String ENTITY_VIEW_TS_END_PROPERTY = "ts_end";
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EntityViewEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EntityViewEntity.java
index a6d5782..65914dd 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EntityViewEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/nosql/EntityViewEntity.java
@@ -18,9 +18,7 @@ package org.thingsboard.server.dao.model.nosql;
 import com.datastax.driver.core.utils.UUIDs;
 import com.datastax.driver.mapping.annotations.PartitionKey;
 import com.datastax.driver.mapping.annotations.Table;
-import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
@@ -30,15 +28,14 @@ import org.thingsboard.server.common.data.id.CustomerId;
 import org.thingsboard.server.common.data.id.DeviceId;
 import org.thingsboard.server.common.data.id.EntityViewId;
 import org.thingsboard.server.common.data.id.TenantId;
+import org.thingsboard.server.common.data.objects.TelemetryEntityView;
 import org.thingsboard.server.dao.model.ModelConstants;
 import org.thingsboard.server.dao.model.SearchTextEntity;
 
 import javax.persistence.Column;
 
 import java.io.IOException;
-import java.util.List;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_VIEW_TABLE_FAMILY_NAME;
 import static org.thingsboard.server.dao.model.ModelConstants.ID_PROPERTY;
@@ -106,16 +103,13 @@ public class EntityViewEntity implements SearchTextEntity<EntityView> {
             this.customerId = entityView.getCustomerId().getId();
         }
         this.name = entityView.getName();
-        try {
-            this.keys = new ObjectMapper().readTree("{\"" + entityView.getName() + "\" : [" +
-                    entityView.getKeys().stream()
-                            .map(k -> "\"" + k + "\"")
-                            .collect(Collectors.joining(", ")) + "]}");
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        this.tsBegin = String.valueOf(entityView.getTsBegin());
-        this.tsEnd = String.valueOf(entityView.getTsEnd());
+//        try {
+//            this.keys = entityView.getKeys();
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
+        this.tsBegin = entityView.getTsBegin() != null ? String.valueOf(entityView.getTsBegin()) : "0";
+        this.tsEnd = entityView.getTsEnd() != null ? String.valueOf(entityView.getTsEnd()) : "0";
         this.searchText = entityView.getSearchText();
         this.additionalInfo = entityView.getAdditionalInfo();
     }
@@ -139,11 +133,11 @@ public class EntityViewEntity implements SearchTextEntity<EntityView> {
             entityView.setCustomerId(new CustomerId(customerId));
         }
         entityView.setName(name);
-        try {
-            entityView.setKeys(new ObjectMapper().readValue(keys.toString(), new TypeReference<List<String>>(){}));
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+//        try {
+//            entityView.setKeys((TelemetryEntityView) entityView.getKeys().toObject(keys));
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//        }
         entityView.setTsBegin(Long.parseLong(tsBegin));
         entityView.setTsEnd(Long.parseLong(tsEnd));
         entityView.setAdditionalInfo(additionalInfo);
diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityViewEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityViewEntity.java
index b12cf07..62e9eb3 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityViewEntity.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/EntityViewEntity.java
@@ -16,7 +16,6 @@
 package org.thingsboard.server.dao.model.sql;
 
 import com.datastax.driver.core.utils.UUIDs;
-import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.Data;
@@ -25,21 +24,18 @@ import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
 import org.thingsboard.server.common.data.EntityType;
 import org.thingsboard.server.common.data.EntityView;
-import org.thingsboard.server.common.data.id.CustomerId;
-import org.thingsboard.server.common.data.id.DeviceId;
-import org.thingsboard.server.common.data.id.EntityViewId;
-import org.thingsboard.server.common.data.id.TenantId;
+import org.thingsboard.server.common.data.id.*;
+import org.thingsboard.server.common.data.objects.TelemetryEntityView;
 import org.thingsboard.server.dao.model.BaseSqlEntity;
 import org.thingsboard.server.dao.model.ModelConstants;
 import org.thingsboard.server.dao.model.SearchTextEntity;
 import org.thingsboard.server.dao.util.mapping.JsonStringType;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.IOException;
-import java.util.List;
-import java.util.stream.Collectors;
+
+import static org.thingsboard.server.dao.model.ModelConstants.AUDIT_LOG_ENTITY_TYPE_PROPERTY;
+import static org.thingsboard.server.dao.model.ModelConstants.ENTITY_TYPE_PROPERTY;
 
 /**
  * Created by Victor Basanets on 8/30/2017.
@@ -64,9 +60,12 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
     @Column(name = ModelConstants.ENTITY_VIEW_NAME_PROPERTY)
     private String name;
 
-    @Type(type = "json")
+    @Enumerated(EnumType.STRING)
+    @Column(name = ENTITY_TYPE_PROPERTY)
+    private EntityType entityType;
+
     @Column(name = ModelConstants.ENTITY_VIEW_KEYS_PROPERTY)
-    private JsonNode keys;
+    private String keys;
 
     @Column(name = ModelConstants.ENTITY_VIEW_TS_BEGIN_PROPERTY)
     private String tsBegin;
@@ -81,6 +80,8 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
     @Column(name = ModelConstants.ENTITY_VIEW_ADDITIONAL_INFO_PROPERTY)
     private JsonNode additionalInfo;
 
+    private static final ObjectMapper mapper = new ObjectMapper();
+
     public EntityViewEntity() {
         super();
     }
@@ -91,6 +92,7 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
         }
         if (entityView.getEntityId() != null) {
             this.entityId = toString(entityView.getEntityId().getId());
+            this.entityType = entityView.getEntityId().getEntityType();
         }
         if (entityView.getTenantId() != null) {
             this.tenantId = toString(entityView.getTenantId().getId());
@@ -100,15 +102,12 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
         }
         this.name = entityView.getName();
         try {
-            this.keys = new ObjectMapper().readTree("{\"" + entityView.getName() + "\" : [" +
-                    entityView.getKeys().stream()
-                            .map(k -> "\"" + k + "\"")
-                            .collect(Collectors.joining(", ")) + "]}");
+            this.keys = mapper.writeValueAsString(entityView.getKeys());
         } catch (IOException e) {
             e.printStackTrace();
         }
-        this.tsBegin = String.valueOf(entityView.getTsBegin());
-        this.tsEnd = String.valueOf(entityView.getTsEnd());
+        this.tsBegin = entityView.getTsBegin() != null ? String.valueOf(entityView.getTsBegin()) : "";
+        this.tsEnd = entityView.getTsEnd() != null ? String.valueOf(entityView.getTsEnd()) : "";
         this.searchText = entityView.getSearchText();
         this.additionalInfo = entityView.getAdditionalInfo();
     }
@@ -128,9 +127,8 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
         EntityView entityView = new EntityView(new EntityViewId(getId()));
         entityView.setCreatedTime(UUIDs.unixTimestamp(getId()));
 
-        /*Ned to refactor and replace DeviceId to Class<> instance*/
         if (entityId != null) {
-            entityView.setEntityId(new DeviceId(toUUID(entityId)));
+            entityView.setEntityId(EntityIdFactory.getByTypeAndId(entityType.name(), toUUID(entityId).toString()));
         }
         if (tenantId != null) {
             entityView.setTenantId(new TenantId(toUUID(tenantId)));
@@ -140,7 +138,7 @@ public class EntityViewEntity extends BaseSqlEntity<EntityView> implements Searc
         }
         entityView.setName(name);
         try {
-            entityView.setKeys(new ObjectMapper().readValue(keys.toString(), new TypeReference<List<String>>(){}));
+            entityView.setKeys(mapper.readValue(keys, TelemetryEntityView.class));
         } catch (IOException e) {
             e.printStackTrace();
         }
diff --git a/dao/src/main/resources/sql/schema.sql b/dao/src/main/resources/sql/schema.sql
index 8e21e72..b79b61f 100644
--- a/dao/src/main/resources/sql/schema.sql
+++ b/dao/src/main/resources/sql/schema.sql
@@ -260,6 +260,7 @@ CREATE TABLE IF NOT EXISTS entity_views (
     ts_begin varchar(255),
     ts_end varchar(255),
     name varchar(255),
+    entity_type varchar(255),
     search_text varchar(255),
     entity_id varchar(31),
     tenant_id varchar(31)