Browse Source

Performance improvement

pull/2209/head
Andrew Shvayka 7 years ago
parent
commit
6d2b856afe
  1. 1
      common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
  2. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
  3. 21
      dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java

1
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java

@ -409,6 +409,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
private void processDisconnect(ChannelHandlerContext ctx) {
ctx.close();
log.info("[{}] Client disconnected!", sessionId);
if (deviceSessionCtx.isConnected()) {
transportService.process(sessionInfo, AbstractTransportService.getSessionEventMsg(SessionEvent.CLOSED), null);
transportService.deregisterSession(sessionInfo);

6
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java

@ -41,6 +41,12 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, String> {
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND d.id > :idOffset ORDER BY d.id")
List<DeviceEntity> findByTenantId(@Param("tenantId") String tenantId,
@Param("idOffset") String idOffset,
Pageable pageable);
@Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
"AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%')) " +
"AND d.id > :idOffset ORDER BY d.id")

21
dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceDao.java

@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.thingsboard.server.common.data.Device;
import org.thingsboard.server.common.data.EntitySubtype;
import org.thingsboard.server.common.data.EntityType;
@ -65,12 +66,20 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
@Override
public List<Device> findDevicesByTenantId(UUID tenantId, TextPageLink pageLink) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantId(
fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
if (StringUtils.isEmpty(pageLink.getTextSearch())) {
return DaoUtil.convertDataList(
deviceRepository.findByTenantId(
fromTimeUUID(tenantId),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
} else {
return DaoUtil.convertDataList(
deviceRepository.findByTenantId(
fromTimeUUID(tenantId),
Objects.toString(pageLink.getTextSearch(), ""),
pageLink.getIdOffset() == null ? NULL_UUID_STR : fromTimeUUID(pageLink.getIdOffset()),
new PageRequest(0, pageLink.getLimit())));
}
}
@Override

Loading…
Cancel
Save