Added findEntityViewByTenantIdAndEdgeIdAndType and findDevicesByTenantIdAndEdgeIdAndDeviceProfileId

This commit is contained in:
Artem Babak 2020-12-11 08:48:18 +02:00
parent 3ffa7e3592
commit c19cf2372e
12 changed files with 176 additions and 3 deletions

View File

@ -701,6 +701,8 @@ public class DeviceController extends BaseController {
@PathVariable(EDGE_ID) String strEdgeId,
@RequestParam int pageSize,
@RequestParam int page,
@RequestParam(required = false) String type,
@RequestParam(required = false) String deviceProfileId,
@RequestParam(required = false) String textSearch,
@RequestParam(required = false) String sortProperty,
@RequestParam(required = false) String sortOrder,
@ -712,7 +714,15 @@ public class DeviceController extends BaseController {
EdgeId edgeId = new EdgeId(toUUID(strEdgeId));
checkEdgeId(edgeId, Operation.READ);
TimePageLink pageLink = createTimePageLink(pageSize, page, textSearch, sortProperty, sortOrder, startTime, endTime);
return checkNotNull(deviceService.findDevicesByTenantIdAndEdgeId(tenantId, edgeId, pageLink));
if (type != null && type.trim().length() > 0) {
return checkNotNull(deviceService.findDevicesByTenantIdAndEdgeIdAndType(tenantId, edgeId, type, pageLink));
}
else if (deviceProfileId != null && deviceProfileId.length() > 0) {
DeviceProfileId profileId = new DeviceProfileId(toUUID(deviceProfileId));
return checkNotNull(deviceService.findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(tenantId, edgeId, profileId, pageLink));
} else {
return checkNotNull(deviceService.findDevicesByTenantIdAndEdgeId(tenantId, edgeId, pageLink));
}
} catch (Exception e) {
throw handleException(e);
}

View File

@ -677,6 +677,7 @@ public class EntityViewController extends BaseController {
@PathVariable(EDGE_ID) String strEdgeId,
@RequestParam int pageSize,
@RequestParam int page,
@RequestParam(required = false) String type,
@RequestParam(required = false) String textSearch,
@RequestParam(required = false) String sortProperty,
@RequestParam(required = false) String sortOrder,
@ -688,7 +689,11 @@ public class EntityViewController extends BaseController {
EdgeId edgeId = new EdgeId(toUUID(strEdgeId));
checkEdgeId(edgeId, Operation.READ);
TimePageLink pageLink = createTimePageLink(pageSize, page, textSearch, sortProperty, sortOrder, startTime, endTime);
return checkNotNull(entityViewService.findEntityViewsByTenantIdAndEdgeId(tenantId, edgeId, pageLink));
if (type != null && type.trim().length() > 0) {
return checkNotNull(entityViewService.findEntityViewsByTenantIdAndEdgeIdAndType(tenantId, edgeId, type, pageLink));
} else {
return checkNotNull(entityViewService.findEntityViewsByTenantIdAndEdgeId(tenantId, edgeId, pageLink));
}
} catch (Exception e) {
throw handleException(e);
}

View File

@ -90,4 +90,9 @@ public interface DeviceService {
Device unassignDeviceFromEdge(TenantId tenantId, DeviceId deviceId, EdgeId edgeId);
PageData<Device> findDevicesByTenantIdAndEdgeId(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink);
PageData<Device> findDevicesByTenantIdAndEdgeIdAndType(TenantId tenantId, EdgeId edgeId, String type, TimePageLink pageLink);
PageData<Device> findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(TenantId tenantId, EdgeId edgeId, DeviceProfileId deviceProfileId, TimePageLink pageLink);
}

View File

@ -83,4 +83,6 @@ public interface EntityViewService {
EntityView unassignEntityViewFromEdge(TenantId tenantId, EntityViewId entityViewId, EdgeId edgeId);
PageData<EntityView> findEntityViewsByTenantIdAndEdgeId(TenantId tenantId, EdgeId edgeId, TimePageLink pageLink);
PageData<EntityView> findEntityViewsByTenantIdAndEdgeIdAndType(TenantId tenantId, EdgeId edgeId, String type, TimePageLink pageLink);
}

View File

@ -226,4 +226,27 @@ public interface DeviceDao extends Dao<Device> {
* @return the list of device objects
*/
PageData<Device> findDevicesByTenantIdAndEdgeId(UUID tenantId, UUID edgeId, TimePageLink pageLink);
/**
* Find devices by tenantId, edgeId, type and page link.
*
* @param tenantId the tenantId
* @param edgeId the edgeId
* @param type the type
* @param pageLink the page link
* @return the list of device objects
*/
PageData<Device> findDevicesByTenantIdAndEdgeIdAndType(UUID tenantId, UUID edgeId, String type, TimePageLink pageLink);
/**
* Find devices by tenantId, edgeId, type, deviceProfileId and page link.
*
* @param tenantId the tenantId
* @param edgeId the edgeId
* @param deviceProfileId the deviceProfileId
* @param pageLink the page link
* @return the list of device objects
*/
PageData<Device> findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(UUID tenantId, UUID edgeId, UUID deviceProfileId, TimePageLink pageLink);
}

View File

@ -515,6 +515,26 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
return deviceDao.findDevicesByTenantIdAndEdgeId(tenantId.getId(), edgeId.getId(), pageLink);
}
@Override
public PageData<Device> findDevicesByTenantIdAndEdgeIdAndType(TenantId tenantId, EdgeId edgeId, String type, TimePageLink pageLink) {
log.trace("Executing findDevicesByTenantIdAndEdgeIdAndType, tenantId [{}], edgeId [{}], type [{}], pageLink [{}]", tenantId, edgeId, type, pageLink);
validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
validateId(edgeId, INCORRECT_EDGE_ID + edgeId);
validateString(type, "Incorrect type " + type);
validatePageLink(pageLink);
return deviceDao.findDevicesByTenantIdAndEdgeIdAndType(tenantId.getId(), edgeId.getId(), type, pageLink);
}
@Override
public PageData<Device> findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(TenantId tenantId, EdgeId edgeId, DeviceProfileId deviceProfileId, TimePageLink pageLink) {
log.trace("Executing findDevicesByTenantIdAndEdgeIdAndDeviceProfileId, tenantId [{}], edgeId [{}], deviceProfileId [{}], pageLink [{}]", tenantId, edgeId, deviceProfileId, pageLink);
validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
validateId(edgeId, INCORRECT_EDGE_ID + edgeId);
validateId(deviceProfileId, INCORRECT_DEVICE_PROFILE_ID + deviceProfileId);
validatePageLink(pageLink);
return deviceDao.findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(tenantId.getId(), edgeId.getId(), deviceProfileId.getId(), pageLink);
}
private DataValidator<Device> deviceValidator =
new DataValidator<Device>() {

View File

@ -165,4 +165,18 @@ public interface EntityViewDao extends Dao<EntityView> {
UUID edgeId,
PageLink pageLink);
/**
* Find entity views by tenantId, edgeId, type and page link.
*
* @param tenantId the tenantId
* @param edgeId the edgeId
* @param type the type
* @param pageLink the page link
* @return the list of entity view objects
*/
PageData<EntityView> findEntityViewsByTenantIdAndEdgeIdAndType(UUID tenantId,
UUID edgeId,
String type,
PageLink pageLink);
}

View File

@ -390,6 +390,16 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
return entityViewDao.findEntityViewsByTenantIdAndEdgeId(tenantId.getId(), edgeId.getId(), pageLink);
}
@Override
public PageData<EntityView> findEntityViewsByTenantIdAndEdgeIdAndType(TenantId tenantId, EdgeId edgeId, String type, TimePageLink pageLink) {
log.trace("Executing findEntityViewsByTenantIdAndEdgeIdAndType, tenantId [{}], edgeId [{}], type [{}], pageLink [{}]", tenantId, edgeId, type, pageLink);
validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
validateId(edgeId, INCORRECT_EDGE_ID + edgeId);
validateString(type, "Incorrect type " + type);
validatePageLink(pageLink);
return entityViewDao.findEntityViewsByTenantIdAndEdgeIdAndType(tenantId.getId(), edgeId.getId(), type, pageLink);
}
private DataValidator<EntityView> entityViewValidator =
new DataValidator<EntityView>() {

View File

@ -20,7 +20,6 @@ import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.thingsboard.server.dao.model.sql.AssetEntity;
import org.thingsboard.server.dao.model.sql.DeviceEntity;
import org.thingsboard.server.dao.model.sql.DeviceInfoEntity;
@ -179,4 +178,42 @@ public interface DeviceRepository extends PagingAndSortingRepository<DeviceEntit
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d, RelationEntity re WHERE d.tenantId = :tenantId " +
"AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND d.type = :type " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%'))")
Page<DeviceEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId,
@Param("type") String type,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d, RelationEntity re " +
"LEFT JOIN DeviceProfileEntity p on p.id = d.deviceProfileId " +
"WHERE d.tenantId = :tenantId " +
"AND d.id = re.toId AND re.toType = 'DEVICE' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND d.deviceProfileId = :deviceProfileId " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:searchText, '%'))")
Page<DeviceEntity> findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId,
@Param("deviceProfileId") UUID deviceProfileId,
@Param("searchText") String searchText,
Pageable pageable);
// @Query("SELECT new org.thingsboard.server.dao.model.sql.DeviceInfoEntity(d, c.title, c.additionalInfo, p.name) " +
// "FROM DeviceEntity d " +
// "LEFT JOIN CustomerEntity c on c.id = d.customerId " +
// "LEFT JOIN DeviceProfileEntity p on p.id = d.deviceProfileId " +
// "WHERE d.tenantId = :tenantId " +
// "AND d.customerId = :customerId " +
// "AND d.deviceProfileId = :deviceProfileId " +
// "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))")
// Page<DeviceInfoEntity> findDeviceInfosByTenantIdAndCustomerIdAndDeviceProfileId2(@Param("tenantId") UUID tenantId,
// @Param("customerId") UUID customerId,
// @Param("deviceProfileId") UUID deviceProfileId,
// @Param("textSearch") String textSearch,
// Pageable pageable);
}

View File

@ -243,4 +243,28 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<Device> findDevicesByTenantIdAndEdgeIdAndType(UUID tenantId, UUID edgeId, String type, TimePageLink pageLink) {
log.debug("Try to find devices by tenantId [{}], edgeId [{}], type [{}] and pageLink [{}]", tenantId, edgeId, type, pageLink);
return DaoUtil.toPageData(deviceRepository
.findByTenantIdAndEdgeIdAndType(
tenantId,
edgeId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<Device> findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(UUID tenantId, UUID edgeId, UUID deviceProfileId, TimePageLink pageLink) {
log.debug("Try to find devices by tenantId [{}], edgeId [{}], deviceProfileId [{}] and pageLink [{}]", tenantId, edgeId, deviceProfileId, pageLink);
return DaoUtil.toPageData(deviceRepository
.findDevicesByTenantIdAndEdgeIdAndDeviceProfileId(
tenantId,
edgeId,
deviceProfileId,
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
}

View File

@ -129,4 +129,15 @@ public interface EntityViewRepository extends PagingAndSortingRepository<EntityV
@Param("edgeId") UUID edgeId,
@Param("searchText") String searchText,
Pageable pageable);
@Query("SELECT ev FROM EntityViewEntity ev, RelationEntity re WHERE ev.tenantId = :tenantId " +
"AND ev.id = re.toId AND re.toType = 'ENTITY_VIEW' AND re.relationTypeGroup = 'EDGE' " +
"AND re.relationType = 'Contains' AND re.fromId = :edgeId AND re.fromType = 'EDGE' " +
"AND ev.type = :type " +
"AND LOWER(ev.searchText) LIKE LOWER(CONCAT(:searchText, '%'))")
Page<EntityViewEntity> findByTenantIdAndEdgeIdAndType(@Param("tenantId") UUID tenantId,
@Param("edgeId") UUID edgeId,
@Param("type") String type,
@Param("searchText") String searchText,
Pageable pageable);
}

View File

@ -192,4 +192,16 @@ public class JpaEntityViewDao extends JpaAbstractSearchTextDao<EntityViewEntity,
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<EntityView> findEntityViewsByTenantIdAndEdgeIdAndType(UUID tenantId, UUID edgeId, String type, PageLink pageLink) {
log.debug("Try to find entity views by tenantId [{}], edgeId [{}], type [{}] and pageLink [{}]", tenantId, edgeId, type, pageLink);
return DaoUtil.toPageData(entityViewRepository
.findByTenantIdAndEdgeIdAndType(
tenantId,
edgeId,
type,
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
}