diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java index 31fc832c30..4333c5ec5b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/RelationCompositeKey.java @@ -36,8 +36,8 @@ public class RelationCompositeKey implements Serializable { private String fromType; private UUID toId; private String toType; - private String relationTypeGroup; private String relationType; + private String relationTypeGroup; public RelationCompositeKey(EntityRelation relation) { this.fromId = relation.getFrom().getId(); diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java index 803b89a64e..9abcdb9280 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/TsKvLatestEntity.java @@ -18,7 +18,7 @@ package org.thingsboard.server.dao.model.sql; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.thingsboard.server.common.data.kv.TsKvEntry; +import org.thingsboard.server.common.data.kv.*; import org.thingsboard.server.dao.model.ToData; import javax.persistence.*; @@ -63,6 +63,16 @@ public final class TsKvLatestEntity implements ToData { @Override public TsKvEntry toData() { - return null; + KvEntry kvEntry = null; + if (strValue != null) { + kvEntry = new StringDataEntry(key, strValue); + } else if (longValue != null) { + kvEntry = new LongDataEntry(key, longValue); + } else if (doubleValue != null) { + kvEntry = new DoubleDataEntry(key, doubleValue); + } else if (booleanValue != null) { + kvEntry = new BooleanDataEntry(key, booleanValue); + } + return new BasicTsKvEntry(ts, kvEntry); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java index 37ef0582d9..20fba3aea0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java @@ -100,7 +100,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink) { - Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, ID_PROPERTY); + Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "id"); Specification fieldsSpec = getEntityFieldsSpec(tenantId, entityId, eventType); Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC; Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, ID_PROPERTY); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java index 8fca908f85..169bc6d02d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java @@ -144,29 +144,25 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple @Override public ListenableFuture deleteOutboundRelations(EntityId entity) { - RelationEntity relationEntity = new RelationEntity(); - relationEntity.setFromId(entity.getId()); - relationEntity.setFromType(entity.getEntityType().name()); - return service.submit( () -> { boolean relationExistsBeforeDelete = relationRepository - .findAllByFromIdAndFromType(relationEntity.getFromId(), relationEntity.getFromType()) + .findAllByFromIdAndFromType(entity.getId(), entity.getEntityType().name()) .size() > 0; - relationRepository.delete(relationEntity); + relationRepository.deleteByFromIdAndFromType(entity.getId(), entity.getEntityType().name()); return relationExistsBeforeDelete; }); } @Override public ListenableFuture> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) { - Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, RELATION_TO_ID_PROPERTY); + Specification timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "toId"); Specification fieldsSpec = getEntityFieldsSpec(from, relationType, typeGroup, childType); Pageable pageable = new PageRequest(0, pageLink.getLimit(), new Sort( - new Order(ASC, RELATION_TYPE_GROUP_PROPERTY), - new Order(ASC, RELATION_TYPE_PROPERTY), - new Order(ASC, RELATION_TO_TYPE_PROPERTY)) + new Order(ASC, "relationTypeGroup"), + new Order(ASC, "relationType"), + new Order(ASC, "toType")) ); return service.submit(() -> DaoUtil.convertDataList(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent())); @@ -188,7 +184,7 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple predicates.add(relationTypePredicate); } if (typeGroup != null) { - Predicate typeGroupPredicate = criteriaBuilder.equal(root.get("relationTypeGroup"), typeGroup); + Predicate typeGroupPredicate = criteriaBuilder.equal(root.get("relationTypeGroup"), typeGroup.name()); predicates.add(typeGroupPredicate); } if (childType != null) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java index 2f0cd7a914..5f453b4113 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java @@ -21,6 +21,7 @@ import org.thingsboard.server.dao.annotation.SqlDao; import org.thingsboard.server.dao.model.sql.RelationCompositeKey; import org.thingsboard.server.dao.model.sql.RelationEntity; +import javax.transaction.Transactional; import java.util.List; import java.util.UUID; @@ -48,4 +49,7 @@ public interface RelationRepository List findAllByFromIdAndFromType(UUID fromId, String fromType); + + @Transactional + List deleteByFromIdAndFromType(UUID fromId, String fromType); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java index df37ae74c0..7df7605ca0 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/timeseries/JpaTimeseriesDao.java @@ -46,7 +46,8 @@ public class JpaTimeseriesDao extends JpaAbstractDaoListeningExecutorService imp @Override public ListenableFuture> findAllAsync(EntityId entityId, List queries) { - return null; + // TODO - Add implementation + return service.submit(() -> null); } private ListenableFuture> findAllAsync(EntityId entityId, TsKvQuery query) { @@ -92,7 +93,7 @@ public class JpaTimeseriesDao extends JpaAbstractDaoListeningExecutorService imp @Override public ListenableFuture savePartition(EntityId entityId, long tsKvEntryTs, String key, long ttl) { - return null; + return service.submit(() -> null); } @Override