Added method implementations to missing JPA Asset and Alalrm DAO methods
This commit is contained in:
parent
9772c38902
commit
3c5b76b25d
@ -17,6 +17,8 @@ package org.thingsboard.server.common.data.asset;
|
|||||||
|
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class TenantAssetType {
|
public class TenantAssetType {
|
||||||
|
|
||||||
private static final long serialVersionUID = 8057290243855622101L;
|
private static final long serialVersionUID = 8057290243855622101L;
|
||||||
@ -33,6 +35,11 @@ public class TenantAssetType {
|
|||||||
this.tenantId = tenantId;
|
this.tenantId = tenantId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TenantAssetType(String type, UUID tenantId) {
|
||||||
|
this.type = type;
|
||||||
|
this.tenantId = new TenantId(tenantId);
|
||||||
|
}
|
||||||
|
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,7 +76,6 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D> implements Dao<
|
|||||||
@Override
|
@Override
|
||||||
public ListenableFuture<D> findByIdAsync(UUID key) {
|
public ListenableFuture<D> findByIdAsync(UUID key) {
|
||||||
log.debug("Get entity by key async {}", key);
|
log.debug("Get entity by key async {}", key);
|
||||||
// Should ListeningExecutorService be a field?
|
|
||||||
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
|
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
|
||||||
ListenableFuture<D> listenableFuture = service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(key)));
|
ListenableFuture<D> listenableFuture = service.submit(() -> DaoUtil.getData(getCrudRepository().findOne(key)));
|
||||||
return listenableFuture;
|
return listenableFuture;
|
||||||
|
|||||||
@ -27,7 +27,7 @@ import java.util.UUID;
|
|||||||
* Created by Valerii Sosliuk on 5/21/2017.
|
* Created by Valerii Sosliuk on 5/21/2017.
|
||||||
*/
|
*/
|
||||||
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
|
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
|
||||||
public interface AlarmRepository extends CrudRepository<AlarmEntity, Alarm> {
|
public interface AlarmRepository extends CrudRepository<AlarmEntity, UUID> {
|
||||||
|
|
||||||
@Query(nativeQuery = true, value = "SELECT * FROM ALARM WHERE TENANT_ID = ?1 AND ORIGINATOR_ID = ?2 " +
|
@Query(nativeQuery = true, value = "SELECT * FROM ALARM WHERE TENANT_ID = ?1 AND ORIGINATOR_ID = ?2 " +
|
||||||
"AND ?3 = ?3 AND TYPE = ?4 ORDER BY ID DESC LIMIT 1")
|
"AND ?3 = ?3 AND TYPE = ?4 ORDER BY ID DESC LIMIT 1")
|
||||||
|
|||||||
@ -15,23 +15,28 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.dao.sql.alarm;
|
package org.thingsboard.server.dao.sql.alarm;
|
||||||
|
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.*;
|
||||||
import com.google.common.util.concurrent.ListeningExecutorService;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
import org.thingsboard.server.common.data.alarm.Alarm;
|
import org.thingsboard.server.common.data.alarm.Alarm;
|
||||||
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
import org.thingsboard.server.common.data.alarm.AlarmQuery;
|
||||||
import org.thingsboard.server.common.data.id.EntityId;
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
|
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
||||||
import org.thingsboard.server.dao.DaoUtil;
|
import org.thingsboard.server.dao.DaoUtil;
|
||||||
import org.thingsboard.server.dao.alarm.AlarmDao;
|
import org.thingsboard.server.dao.alarm.AlarmDao;
|
||||||
|
import org.thingsboard.server.dao.alarm.BaseAlarmService;
|
||||||
import org.thingsboard.server.dao.model.sql.AlarmEntity;
|
import org.thingsboard.server.dao.model.sql.AlarmEntity;
|
||||||
|
import org.thingsboard.server.dao.relation.RelationDao;
|
||||||
import org.thingsboard.server.dao.sql.JpaAbstractDao;
|
import org.thingsboard.server.dao.sql.JpaAbstractDao;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
@ -41,6 +46,7 @@ import static org.springframework.transaction.annotation.Propagation.REQUIRES_NE
|
|||||||
/**
|
/**
|
||||||
* Created by Valerii Sosliuk on 5/19/2017.
|
* Created by Valerii Sosliuk on 5/19/2017.
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
|
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
|
||||||
public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements AlarmDao {
|
public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements AlarmDao {
|
||||||
@ -48,6 +54,9 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
|
|||||||
@Autowired
|
@Autowired
|
||||||
private AlarmRepository alarmRepository;
|
private AlarmRepository alarmRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RelationDao relationDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Class getEntityClass() {
|
protected Class getEntityClass() {
|
||||||
return AlarmEntity.class;
|
return AlarmEntity.class;
|
||||||
@ -62,21 +71,28 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
|
|||||||
@Transactional(propagation = REQUIRES_NEW)
|
@Transactional(propagation = REQUIRES_NEW)
|
||||||
public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) {
|
public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) {
|
||||||
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
|
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
|
||||||
ListenableFuture<Alarm> listenableFuture = service.submit(() -> DaoUtil.getData(
|
return service.submit(() -> DaoUtil.getData(
|
||||||
alarmRepository.findLatestByOriginatorAndType(tenantId.getId(), originator.getId(),
|
alarmRepository.findLatestByOriginatorAndType(tenantId.getId(), originator.getId(),
|
||||||
originator.getEntityType().ordinal(), type)));
|
originator.getEntityType().ordinal(), type)));
|
||||||
return listenableFuture;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<Alarm> findAlarmByIdAsync(UUID key) {
|
public ListenableFuture<Alarm> findAlarmByIdAsync(UUID key) {
|
||||||
//TODO: Implement
|
return findByIdAsync(key);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<List<Alarm>> findAlarms(AlarmQuery query) {
|
public ListenableFuture<List<Alarm>> findAlarms(AlarmQuery query) {
|
||||||
//TODO: Implement
|
log.trace("Try to find alarms by entity [{}], status [{}] and pageLink [{}]", query.getAffectedEntityId(), query.getStatus(), query.getPageLink());
|
||||||
return null;
|
EntityId affectedEntity = query.getAffectedEntityId();
|
||||||
|
String relationType = query.getStatus() == null ? BaseAlarmService.ALARM_RELATION : BaseAlarmService.ALARM_RELATION_PREFIX + query.getStatus().name();
|
||||||
|
ListenableFuture<List<EntityRelation>> relations = relationDao.findRelations(affectedEntity, relationType, RelationTypeGroup.ALARM, EntityType.ALARM, query.getPageLink());
|
||||||
|
return Futures.transform(relations, (AsyncFunction<List<EntityRelation>, List<Alarm>>) input -> {
|
||||||
|
List<ListenableFuture<Alarm>> alarmFutures = new ArrayList<>(input.size());
|
||||||
|
for (EntityRelation relation : input) {
|
||||||
|
alarmFutures.add(findAlarmByIdAsync(relation.getTo().getId()));
|
||||||
|
}
|
||||||
|
return Futures.successfulAsList(alarmFutures);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import org.thingsboard.server.common.data.asset.Asset;
|
import org.thingsboard.server.common.data.asset.Asset;
|
||||||
|
import org.thingsboard.server.common.data.asset.TenantAssetType;
|
||||||
import org.thingsboard.server.dao.model.sql.AssetEntity;
|
import org.thingsboard.server.dao.model.sql.AssetEntity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -58,4 +59,19 @@ public interface AssetRepository extends CrudRepository<AssetEntity, UUID> {
|
|||||||
List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> assetIds);
|
List<AssetEntity> findByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> assetIds);
|
||||||
|
|
||||||
AssetEntity findByTenantIdAndName(UUID tenantId, String name);
|
AssetEntity findByTenantIdAndName(UUID tenantId, String name);
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "SELECT * FROM ASSET WHERE TENANT_ID = ?2 " +
|
||||||
|
"AND CUSTOMER_ID = ?3 AND TYPE = ?4 " +
|
||||||
|
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?5, '%')) " +
|
||||||
|
"ORDER BY ID LIMIT ?1")
|
||||||
|
List<AssetEntity> findByTenantIdAndCustomerIdAndTypeFirstPage(int limit, UUID tenantId, UUID customerId, String type, String textSearch);
|
||||||
|
|
||||||
|
@Query(nativeQuery = true, value = "SELECT * FROM ASSET WHERE TENANT_ID = ?2 " +
|
||||||
|
"AND CUSTOMER_ID = ?3 AND TYPE = ?4 " +
|
||||||
|
"AND LOWER(SEARCH_TEXT) LIKE LOWER(CONCAT(?5, '%')) " +
|
||||||
|
"AND ID > ?6 ORDER BY ID LIMIT ?1")
|
||||||
|
List<AssetEntity> findByTenantIdAndCustomerIdAndTypeNextPage(int limit, UUID tenantId, UUID customerId, String type, String textSearch, UUID idOffset);
|
||||||
|
|
||||||
|
@Query(value = "SELECT NEW org.thingsboard.server.common.data.asset.TenantAssetType(a.type, a.tenantId) FROM AssetEntity a GROUP BY a.tenantId, a.type")
|
||||||
|
List<TenantAssetType> findTenantAssetTypes();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -104,11 +104,18 @@ public class JpaAssetDao extends JpaAbstractSearchTextDao<AssetEntity, Asset> im
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) {
|
public List<Asset> findAssetsByTenantIdAndCustomerIdAndType(UUID tenantId, UUID customerId, String type, TextPageLink pageLink) {
|
||||||
return null;
|
if (pageLink.getIdOffset() == null) {
|
||||||
|
return DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndTypeFirstPage(pageLink.getLimit(), tenantId,
|
||||||
|
customerId, type, pageLink.getTextSearch()));
|
||||||
|
} else {
|
||||||
|
return DaoUtil.convertDataList(assetRepository.findByTenantIdAndCustomerIdAndTypeNextPage(pageLink.getLimit(), tenantId,
|
||||||
|
customerId, type, pageLink.getTextSearch(), pageLink.getIdOffset()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<List<TenantAssetType>> findTenantAssetTypesAsync() {
|
public ListenableFuture<List<TenantAssetType>> findTenantAssetTypesAsync() {
|
||||||
return null;
|
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10));
|
||||||
|
return service.submit(() -> assetRepository.findTenantAssetTypes());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,84 @@
|
|||||||
|
package org.thingsboard.server.dao.sql.relation;
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
|
import org.thingsboard.server.common.data.page.TimePageLink;
|
||||||
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
|
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
||||||
|
import org.thingsboard.server.dao.relation.RelationDao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Valerii Sosliuk on 5/29/2017.
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@ConditionalOnProperty(prefix = "sql", value = "enabled", havingValue = "true", matchIfMissing = false)
|
||||||
|
public class JpaRelationDao implements RelationDao {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<List<EntityRelation>> findAllByFrom(EntityId from, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<List<EntityRelation>> findAllByFromAndType(EntityId from, String relationType, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<List<EntityRelation>> findAllByTo(EntityId to, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<List<EntityRelation>> findAllByToAndType(EntityId to, String relationType, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<Boolean> checkRelation(EntityId from, EntityId to, String relationType, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<Boolean> saveRelation(EntityRelation relation) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<Boolean> deleteRelation(EntityRelation relation) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<Boolean> deleteRelation(EntityId from, EntityId to, String relationType, RelationTypeGroup typeGroup) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<Boolean> deleteOutboundRelations(EntityId entity) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListenableFuture<List<EntityRelation>> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType toType, TimePageLink pageLink) {
|
||||||
|
// TODO: Implement
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -71,6 +71,11 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
|
|||||||
assertEquals(alarm2Id, alarm.getId().getId());
|
assertEquals(alarm2Id, alarm.getId().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindAlarmByIdAsync() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
private void saveAlarm(UUID id, UUID tenantId, UUID deviceId, String type) {
|
private void saveAlarm(UUID id, UUID tenantId, UUID deviceId, String type) {
|
||||||
Alarm alarm = new Alarm();
|
Alarm alarm = new Alarm();
|
||||||
alarm.setId(new AlarmId(id));
|
alarm.setId(new AlarmId(id));
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.thingsboard.server.common.data.asset.Asset;
|
import org.thingsboard.server.common.data.asset.Asset;
|
||||||
|
import org.thingsboard.server.common.data.asset.TenantAssetType;
|
||||||
import org.thingsboard.server.common.data.id.AssetId;
|
import org.thingsboard.server.common.data.id.AssetId;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
@ -32,6 +33,7 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static junit.framework.TestCase.assertFalse;
|
import static junit.framework.TestCase.assertFalse;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
@ -56,7 +58,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
UUID assetId = UUIDs.timeBased();
|
UUID assetId = UUIDs.timeBased();
|
||||||
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
|
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
|
||||||
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
|
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
|
||||||
saveAsset(assetId, tenantId, customerId, "ASSET_" + i);
|
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
|
||||||
}
|
}
|
||||||
assertEquals(60, assetDao.find().size());
|
assertEquals(60, assetDao.find().size());
|
||||||
|
|
||||||
@ -83,7 +85,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
UUID assetId = UUIDs.timeBased();
|
UUID assetId = UUIDs.timeBased();
|
||||||
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
|
UUID tenantId = i % 2 == 0 ? tenantId1 : tenantId2;
|
||||||
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
|
UUID customerId = i % 2 == 0 ? customerId1 : customerId2;
|
||||||
saveAsset(assetId, tenantId, customerId, "ASSET_" + i);
|
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
|
||||||
}
|
}
|
||||||
|
|
||||||
TextPageLink pageLink1 = new TextPageLink(20, "ASSET_");
|
TextPageLink pageLink1 = new TextPageLink(20, "ASSET_");
|
||||||
@ -106,7 +108,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
List<UUID> searchIds = new ArrayList<>();
|
List<UUID> searchIds = new ArrayList<>();
|
||||||
for (int i = 0; i < 30; i++) {
|
for (int i = 0; i < 30; i++) {
|
||||||
UUID assetId = UUIDs.timeBased();
|
UUID assetId = UUIDs.timeBased();
|
||||||
saveAsset(assetId, tenantId, customerId, "ASSET_" + i);
|
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
|
||||||
if (i % 3 == 0) {
|
if (i % 3 == 0) {
|
||||||
searchIds.add(assetId);
|
searchIds.add(assetId);
|
||||||
}
|
}
|
||||||
@ -128,7 +130,7 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
for (int i = 0; i < 30; i++) {
|
for (int i = 0; i < 30; i++) {
|
||||||
UUID assetId = UUIDs.timeBased();
|
UUID assetId = UUIDs.timeBased();
|
||||||
UUID customerId = i%2 == 0 ? customerId1 : customerId2;
|
UUID customerId = i%2 == 0 ? customerId1 : customerId2;
|
||||||
saveAsset(assetId, tenantId, customerId, "ASSET_" + i);
|
saveAsset(assetId, tenantId, customerId, "ASSET_" + i, "TYPE_1");
|
||||||
if (i % 3 == 0) {
|
if (i % 3 == 0) {
|
||||||
searchIds.add(assetId);
|
searchIds.add(assetId);
|
||||||
}
|
}
|
||||||
@ -150,8 +152,8 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
UUID customerId1 = UUIDs.timeBased();
|
UUID customerId1 = UUIDs.timeBased();
|
||||||
UUID customerId2 = UUIDs.timeBased();
|
UUID customerId2 = UUIDs.timeBased();
|
||||||
String name = "TEST_ASSET";
|
String name = "TEST_ASSET";
|
||||||
saveAsset(assetId1, tenantId1, customerId1, name);
|
saveAsset(assetId1, tenantId1, customerId1, name, "TYPE_1");
|
||||||
saveAsset(assetId2, tenantId2, customerId2, name);
|
saveAsset(assetId2, tenantId2, customerId2, name, "TYPE_1");
|
||||||
|
|
||||||
Optional<Asset> assetOpt1 = assetDao.findAssetsByTenantIdAndName(tenantId2, name);
|
Optional<Asset> assetOpt1 = assetDao.findAssetsByTenantIdAndName(tenantId2, name);
|
||||||
assertTrue("Optional expected to be non-empty", assetOpt1.isPresent());
|
assertTrue("Optional expected to be non-empty", assetOpt1.isPresent());
|
||||||
@ -161,13 +163,61 @@ public class JpaAssetDaoTest extends AbstractJpaDaoTest {
|
|||||||
assertFalse("Optional expected to be empty", assetOpt2.isPresent());
|
assertFalse("Optional expected to be empty", assetOpt2.isPresent());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveAsset(UUID id, UUID tenantId, UUID customerId, String name) {
|
@Test
|
||||||
|
public void testFindAssetsByTenantIdAndType() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindAssetsByTenantIdAndCustomerIdAndType() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindTenantAssetTypesAsync() throws ExecutionException, InterruptedException {
|
||||||
|
UUID assetId1 = UUIDs.timeBased();
|
||||||
|
UUID assetId2 = UUIDs.timeBased();
|
||||||
|
UUID tenantId1 = UUIDs.timeBased();
|
||||||
|
UUID tenantId2 = UUIDs.timeBased();
|
||||||
|
UUID customerId1 = UUIDs.timeBased();
|
||||||
|
UUID customerId2 = UUIDs.timeBased();
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_1", "TYPE_1");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_2", "TYPE_1");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_3", "TYPE_2");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_4", "TYPE_3");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_5", "TYPE_3");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId1, customerId1, "TEST_ASSET_6", "TYPE_3");
|
||||||
|
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId2, customerId2, "TEST_ASSET_7", "TYPE_4");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId2, customerId2, "TEST_ASSET_8", "TYPE_1");
|
||||||
|
saveAsset(UUIDs.timeBased(), tenantId2, customerId2, "TEST_ASSET_9", "TYPE_1");
|
||||||
|
|
||||||
|
ListenableFuture<List<TenantAssetType>> tenantAssetTypesFuture = assetDao.findTenantAssetTypesAsync();
|
||||||
|
List<TenantAssetType> tenantAssetTypes = tenantAssetTypesFuture.get();
|
||||||
|
assertNotNull(tenantAssetTypes);
|
||||||
|
List<TenantAssetType> tenant1Types = tenantAssetTypes.stream().filter(t -> t.getTenantId().getId().equals(tenantId1)).collect(Collectors.toList());
|
||||||
|
List<TenantAssetType> tenant2Types = tenantAssetTypes.stream().filter(t -> t.getTenantId().getId().equals(tenantId2)).collect(Collectors.toList());
|
||||||
|
|
||||||
|
assertEquals(3, tenant1Types.size());
|
||||||
|
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_1")));
|
||||||
|
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_2")));
|
||||||
|
assertTrue(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_3")));
|
||||||
|
assertFalse(tenant1Types.stream().anyMatch(t -> t.getType().equals("TYPE_4")));
|
||||||
|
|
||||||
|
assertEquals(2, tenant2Types.size());
|
||||||
|
assertTrue(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_1")));
|
||||||
|
assertTrue(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_4")));
|
||||||
|
assertFalse(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_2")));
|
||||||
|
assertFalse(tenant2Types.stream().anyMatch(t -> t.getType().equals("TYPE_3")));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveAsset(UUID id, UUID tenantId, UUID customerId, String name, String type) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setId(new AssetId(id));
|
asset.setId(new AssetId(id));
|
||||||
asset.setTenantId(new TenantId(tenantId));
|
asset.setTenantId(new TenantId(tenantId));
|
||||||
asset.setCustomerId(new CustomerId(customerId));
|
asset.setCustomerId(new CustomerId(customerId));
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
|
asset.setType(type);
|
||||||
assetDao.save(asset);
|
assetDao.save(asset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user