Details
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 31fc832..4333c5e 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 803b89a..9abcdb9 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<TsKvEntry> {
@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 37ef058..20fba3a 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<EventEntity, Event
}
@Override
public List<Event> findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink) {
- Specification<EventEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<EventEntity>getTimeSearchPageSpec(pageLink, ID_PROPERTY);
+ Specification<EventEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<EventEntity>getTimeSearchPageSpec(pageLink, "id");
Specification<EventEntity> 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 8fca908..169bc6d 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<Boolean> 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<List<EntityRelation>> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) {
- Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<RelationEntity>getTimeSearchPageSpec(pageLink, RELATION_TO_ID_PROPERTY);
+ Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<RelationEntity>getTimeSearchPageSpec(pageLink, "toId");
Specification<RelationEntity> 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 2f0cd7a..5f453b4 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<RelationEntity> findAllByFromIdAndFromType(UUID fromId,
String fromType);
+
+ @Transactional
+ List<RelationEntity> 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 df37ae7..7df7605 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<List<TsKvEntry>> findAllAsync(EntityId entityId, List<TsKvQuery> queries) {
- return null;
+ // TODO - Add implementation
+ return service.submit(() -> null);
}
private ListenableFuture<List<TsKvEntry>> findAllAsync(EntityId entityId, TsKvQuery query) {
@@ -92,7 +93,7 @@ public class JpaTimeseriesDao extends JpaAbstractDaoListeningExecutorService imp
@Override
public ListenableFuture<Void> savePartition(EntityId entityId, long tsKvEntryTs, String key, long ttl) {
- return null;
+ return service.submit(() -> null);
}
@Override