From 70ee36352816639472463caf089675411ba84005 Mon Sep 17 00:00:00 2001 From: viktorbasanets Date: Wed, 5 Sep 2018 18:14:45 +0300 Subject: [PATCH] commit2 --- .../server/dao/model/ModelConstants.java | 1 + .../dao/model/nosql/EntityViewEntity.java | 32 ++++++--------- .../dao/model/sql/EntityViewEntity.java | 40 +++++++++---------- dao/src/main/resources/sql/schema.sql | 1 + 4 files changed, 34 insertions(+), 40 deletions(-) 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 e084593324..d06ddbd8e5 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 a6d57829c7..65914dd566 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 { 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.setCustomerId(new CustomerId(customerId)); } entityView.setName(name); - try { - entityView.setKeys(new ObjectMapper().readValue(keys.toString(), new TypeReference>(){})); - } 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 b12cf07976..62e9eb3e78 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 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 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 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 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 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 implements Searc } entityView.setName(name); try { - entityView.setKeys(new ObjectMapper().readValue(keys.toString(), new TypeReference>(){})); + 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 8e21e72e9d..b79b61f3af 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)