|
|
|
@ -26,7 +26,6 @@ import org.junit.Assert; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.jdbc.core.JdbcTemplate; |
|
|
|
import org.springframework.jdbc.core.ResultSetExtractor; |
|
|
|
import org.thingsboard.server.common.data.DataConstants; |
|
|
|
import org.thingsboard.server.common.data.Device; |
|
|
|
@ -50,6 +49,7 @@ import org.thingsboard.server.common.data.kv.LongDataEntry; |
|
|
|
import org.thingsboard.server.common.data.kv.StringDataEntry; |
|
|
|
import org.thingsboard.server.common.data.page.PageData; |
|
|
|
import org.thingsboard.server.common.data.query.AssetSearchQueryFilter; |
|
|
|
import org.thingsboard.server.common.data.query.AssetTypeFilter; |
|
|
|
import org.thingsboard.server.common.data.query.DeviceSearchQueryFilter; |
|
|
|
import org.thingsboard.server.common.data.query.DeviceTypeFilter; |
|
|
|
import org.thingsboard.server.common.data.query.EdgeSearchQueryFilter; |
|
|
|
@ -62,6 +62,7 @@ import org.thingsboard.server.common.data.query.EntityDataSortOrder; |
|
|
|
import org.thingsboard.server.common.data.query.EntityKey; |
|
|
|
import org.thingsboard.server.common.data.query.EntityKeyType; |
|
|
|
import org.thingsboard.server.common.data.query.EntityListFilter; |
|
|
|
import org.thingsboard.server.common.data.query.EntityNameFilter; |
|
|
|
import org.thingsboard.server.common.data.query.FilterPredicateValue; |
|
|
|
import org.thingsboard.server.common.data.query.KeyFilter; |
|
|
|
import org.thingsboard.server.common.data.query.NumericFilterPredicate; |
|
|
|
@ -106,9 +107,6 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
|
|
|
|
|
private TenantId tenantId; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private JdbcTemplate template; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private RelationRepository relationRepository; |
|
|
|
|
|
|
|
@ -986,6 +984,360 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest { |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_entity_name_starts_with() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device " + i + " test"); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
EntityNameFilter deviceTypeFilter = new EntityNameFilter(); |
|
|
|
deviceTypeFilter.setEntityType(EntityType.DEVICE); |
|
|
|
deviceTypeFilter.setEntityNameFilter("Device"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("Device%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("%Device%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("%Device"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_entity_name_ends_with() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device " + i + " test"); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
EntityNameFilter deviceTypeFilter = new EntityNameFilter(); |
|
|
|
deviceTypeFilter.setEntityType(EntityType.DEVICE); |
|
|
|
deviceTypeFilter.setEntityNameFilter("%test"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("%test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_entity_name_contains() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device test" + i); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
EntityNameFilter deviceTypeFilter = new EntityNameFilter(); |
|
|
|
deviceTypeFilter.setEntityType(EntityType.DEVICE); |
|
|
|
deviceTypeFilter.setEntityNameFilter("%test%"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setEntityNameFilter("%test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_device_type_name_starts_with() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device " + i + " test"); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
DeviceTypeFilter deviceTypeFilter = new DeviceTypeFilter(); |
|
|
|
deviceTypeFilter.setDeviceType("default"); |
|
|
|
deviceTypeFilter.setDeviceNameFilter("Device"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("Device%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("%Device%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("%Device"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_device_type_name_ends_with() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device " + i + " test"); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
DeviceTypeFilter deviceTypeFilter = new DeviceTypeFilter(); |
|
|
|
deviceTypeFilter.setDeviceType("default"); |
|
|
|
deviceTypeFilter.setDeviceNameFilter("%test"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("%test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_device_type_name_contains() { |
|
|
|
List<Device> devices = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setTenantId(tenantId); |
|
|
|
device.setName("Device test" + i); |
|
|
|
device.setType("default"); |
|
|
|
devices.add(device); |
|
|
|
} |
|
|
|
|
|
|
|
devices.forEach(deviceService::saveDevice); |
|
|
|
|
|
|
|
DeviceTypeFilter deviceTypeFilter = new DeviceTypeFilter(); |
|
|
|
deviceTypeFilter.setDeviceType("default"); |
|
|
|
deviceTypeFilter.setDeviceNameFilter("%test%"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(deviceTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(devices.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
deviceTypeFilter.setDeviceNameFilter("%test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_asset_type_name_starts_with() { |
|
|
|
List<Asset> assets = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Asset asset = new Asset(); |
|
|
|
asset.setTenantId(tenantId); |
|
|
|
asset.setName("Asset " + i + " test"); |
|
|
|
asset.setType("default"); |
|
|
|
assets.add(asset); |
|
|
|
} |
|
|
|
|
|
|
|
assets.forEach(assetService::saveAsset); |
|
|
|
|
|
|
|
AssetTypeFilter assetTypeFilter = new AssetTypeFilter(); |
|
|
|
assetTypeFilter.setAssetType("default"); |
|
|
|
assetTypeFilter.setAssetNameFilter("Asset"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(assetTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("Asset%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("%Asset%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("%Asset"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_asset_type_name_ends_with() { |
|
|
|
List<Asset> assets = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Asset asset = new Asset(); |
|
|
|
asset.setTenantId(tenantId); |
|
|
|
asset.setName("Asset " + i + " test"); |
|
|
|
asset.setType("default"); |
|
|
|
assets.add(asset); |
|
|
|
} |
|
|
|
|
|
|
|
assets.forEach(assetService::saveAsset); |
|
|
|
|
|
|
|
AssetTypeFilter assetTypeFilter = new AssetTypeFilter(); |
|
|
|
assetTypeFilter.setAssetType("default"); |
|
|
|
assetTypeFilter.setAssetNameFilter("%test"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(assetTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("%test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindEntityDataByQuery_filter_asset_type_name_contains() { |
|
|
|
List<Asset> assets = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i = 0; i < 10; i++) { |
|
|
|
Asset asset = new Asset(); |
|
|
|
asset.setTenantId(tenantId); |
|
|
|
asset.setName("Asset test" + i); |
|
|
|
asset.setType("default"); |
|
|
|
assets.add(asset); |
|
|
|
} |
|
|
|
|
|
|
|
assets.forEach(assetService::saveAsset); |
|
|
|
|
|
|
|
AssetTypeFilter assetTypeFilter = new AssetTypeFilter(); |
|
|
|
assetTypeFilter.setAssetType("default"); |
|
|
|
assetTypeFilter.setAssetNameFilter("%test%"); |
|
|
|
|
|
|
|
EntityDataPageLink pageLink = new EntityDataPageLink(1000, 0, null, null); |
|
|
|
|
|
|
|
EntityDataQuery query = new EntityDataQuery(assetTypeFilter, pageLink, null, null, null); |
|
|
|
|
|
|
|
PageData<EntityData> result = searchEntities(query); |
|
|
|
assertEquals(assets.size(), result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("test%"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
|
|
|
|
assetTypeFilter.setAssetNameFilter("%test"); |
|
|
|
|
|
|
|
result = searchEntities(query); |
|
|
|
assertEquals(0, result.getTotalElements()); |
|
|
|
} |
|
|
|
|
|
|
|
private PageData<EntityData> searchEntities(EntityDataQuery query) { |
|
|
|
return entityService.findEntityDataByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), query); |
|
|
|
} |
|
|
|
|