Search in sources :

Example 1 with EntityTypeFilter

use of org.thingsboard.server.common.data.relation.EntityTypeFilter in project thingsboard by thingsboard.

the class BaseRelationServiceTest method testCyclicRecursiveRelation.

@Test
public void testCyclicRecursiveRelation() throws ExecutionException, InterruptedException {
    // A -> B -> C -> A
    AssetId assetA = new AssetId(UUIDs.timeBased());
    AssetId assetB = new AssetId(UUIDs.timeBased());
    AssetId assetC = new AssetId(UUIDs.timeBased());
    EntityRelation relationA = new EntityRelation(assetA, assetB, EntityRelation.CONTAINS_TYPE);
    EntityRelation relationB = new EntityRelation(assetB, assetC, EntityRelation.CONTAINS_TYPE);
    EntityRelation relationC = new EntityRelation(assetC, assetA, EntityRelation.CONTAINS_TYPE);
    saveRelation(relationA);
    saveRelation(relationB);
    saveRelation(relationC);
    EntityRelationsQuery query = new EntityRelationsQuery();
    query.setParameters(new RelationsSearchParameters(assetA, EntitySearchDirection.FROM, -1));
    query.setFilters(Collections.singletonList(new EntityTypeFilter(EntityRelation.CONTAINS_TYPE, Collections.singletonList(EntityType.ASSET))));
    List<EntityRelation> relations = relationService.findByQuery(query).get();
    Assert.assertEquals(3, relations.size());
    Assert.assertTrue(relations.contains(relationA));
    Assert.assertTrue(relations.contains(relationB));
    Assert.assertTrue(relations.contains(relationC));
}
Also used : EntityTypeFilter(org.thingsboard.server.common.data.relation.EntityTypeFilter) EntityRelation(org.thingsboard.server.common.data.relation.EntityRelation) EntityRelationsQuery(org.thingsboard.server.common.data.relation.EntityRelationsQuery) RelationsSearchParameters(org.thingsboard.server.common.data.relation.RelationsSearchParameters) AssetId(org.thingsboard.server.common.data.id.AssetId) Test(org.junit.Test)

Example 2 with EntityTypeFilter

use of org.thingsboard.server.common.data.relation.EntityTypeFilter in project thingsboard by thingsboard.

the class AssetSearchQuery method toEntitySearchQuery.

public EntityRelationsQuery toEntitySearchQuery() {
    EntityRelationsQuery query = new EntityRelationsQuery();
    query.setParameters(parameters);
    query.setFilters(Collections.singletonList(new EntityTypeFilter(relationType == null ? EntityRelation.CONTAINS_TYPE : relationType, Collections.singletonList(EntityType.ASSET))));
    return query;
}
Also used : EntityTypeFilter(org.thingsboard.server.common.data.relation.EntityTypeFilter) EntityRelationsQuery(org.thingsboard.server.common.data.relation.EntityRelationsQuery)

Example 3 with EntityTypeFilter

use of org.thingsboard.server.common.data.relation.EntityTypeFilter in project thingsboard by thingsboard.

the class DeviceSearchQuery method toEntitySearchQuery.

public EntityRelationsQuery toEntitySearchQuery() {
    EntityRelationsQuery query = new EntityRelationsQuery();
    query.setParameters(parameters);
    query.setFilters(Collections.singletonList(new EntityTypeFilter(relationType == null ? EntityRelation.CONTAINS_TYPE : relationType, Collections.singletonList(EntityType.DEVICE))));
    return query;
}
Also used : EntityTypeFilter(org.thingsboard.server.common.data.relation.EntityTypeFilter) EntityRelationsQuery(org.thingsboard.server.common.data.relation.EntityRelationsQuery)

Example 4 with EntityTypeFilter

use of org.thingsboard.server.common.data.relation.EntityTypeFilter in project thingsboard by thingsboard.

the class BaseRelationServiceTest method testRecursiveRelation.

@Test
public void testRecursiveRelation() throws ExecutionException, InterruptedException {
    // A -> B -> [C,D]
    AssetId assetA = new AssetId(UUIDs.timeBased());
    AssetId assetB = new AssetId(UUIDs.timeBased());
    AssetId assetC = new AssetId(UUIDs.timeBased());
    DeviceId deviceD = new DeviceId(UUIDs.timeBased());
    EntityRelation relationAB = new EntityRelation(assetA, assetB, EntityRelation.CONTAINS_TYPE);
    EntityRelation relationBC = new EntityRelation(assetB, assetC, EntityRelation.CONTAINS_TYPE);
    EntityRelation relationBD = new EntityRelation(assetB, deviceD, EntityRelation.CONTAINS_TYPE);
    saveRelation(relationAB);
    saveRelation(relationBC);
    saveRelation(relationBD);
    EntityRelationsQuery query = new EntityRelationsQuery();
    query.setParameters(new RelationsSearchParameters(assetA, EntitySearchDirection.FROM, -1));
    query.setFilters(Collections.singletonList(new EntityTypeFilter(EntityRelation.CONTAINS_TYPE, Collections.singletonList(EntityType.ASSET))));
    List<EntityRelation> relations = relationService.findByQuery(query).get();
    Assert.assertEquals(2, relations.size());
    Assert.assertTrue(relations.contains(relationAB));
    Assert.assertTrue(relations.contains(relationBC));
}
Also used : EntityTypeFilter(org.thingsboard.server.common.data.relation.EntityTypeFilter) EntityRelation(org.thingsboard.server.common.data.relation.EntityRelation) EntityRelationsQuery(org.thingsboard.server.common.data.relation.EntityRelationsQuery) DeviceId(org.thingsboard.server.common.data.id.DeviceId) RelationsSearchParameters(org.thingsboard.server.common.data.relation.RelationsSearchParameters) AssetId(org.thingsboard.server.common.data.id.AssetId) Test(org.junit.Test)

Aggregations

EntityRelationsQuery (org.thingsboard.server.common.data.relation.EntityRelationsQuery)4 EntityTypeFilter (org.thingsboard.server.common.data.relation.EntityTypeFilter)4 Test (org.junit.Test)2 AssetId (org.thingsboard.server.common.data.id.AssetId)2 EntityRelation (org.thingsboard.server.common.data.relation.EntityRelation)2 RelationsSearchParameters (org.thingsboard.server.common.data.relation.RelationsSearchParameters)2 DeviceId (org.thingsboard.server.common.data.id.DeviceId)1