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)