Implement of method to find dashboard by name and tenant ID, used to find correct dashboard in case multiple dashboard start with the same name.

This commit is contained in:
AndrewVolosytnykhThingsboard 2021-06-01 16:07:18 +03:00 committed by Andrew Shvayka
parent 8b70cbdb55
commit 7975e2a96a
6 changed files with 18 additions and 7 deletions

View File

@ -31,7 +31,6 @@ import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.id.CustomerId; import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.IdBased;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig; import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2Registration; import org.thingsboard.server.common.data.oauth2.OAuth2Registration;
@ -206,11 +205,7 @@ public abstract class AbstractOAuth2ClientMapper {
} }
private Optional<DashboardId> getDashboardId(TenantId tenantId, String dashboardName) { private Optional<DashboardId> getDashboardId(TenantId tenantId, String dashboardName) {
PageLink searchTextLink = new PageLink(1, 0, dashboardName); return Optional.of(dashboardService.findFirstDashboardInfoByTenantIdAndName(tenantId, dashboardName).getId());
PageData<DashboardInfo> dashboardsPage = dashboardService.findDashboardsByTenantId(tenantId, searchTextLink);
return dashboardsPage.getData().stream()
.findAny()
.map(IdBased::getId);
} }
private Optional<DashboardId> getDashboardId(TenantId tenantId, CustomerId customerId, String dashboardName) { private Optional<DashboardId> getDashboardId(TenantId tenantId, CustomerId customerId, String dashboardName) {

View File

@ -58,4 +58,6 @@ public interface DashboardService {
Dashboard unassignDashboardFromEdge(TenantId tenantId, DashboardId dashboardId, EdgeId edgeId); Dashboard unassignDashboardFromEdge(TenantId tenantId, DashboardId dashboardId, EdgeId edgeId);
PageData<DashboardInfo> findDashboardsByTenantIdAndEdgeId(TenantId tenantId, EdgeId edgeId, PageLink pageLink); PageData<DashboardInfo> findDashboardsByTenantIdAndEdgeId(TenantId tenantId, EdgeId edgeId, PageLink pageLink);
DashboardInfo findFirstDashboardInfoByTenantIdAndName(TenantId tenantId, String name);
} }

View File

@ -56,4 +56,6 @@ public interface DashboardInfoDao extends Dao<DashboardInfo> {
*/ */
PageData<DashboardInfo> findDashboardsByTenantIdAndEdgeId(UUID tenantId, UUID edgeId, PageLink pageLink); PageData<DashboardInfo> findDashboardsByTenantIdAndEdgeId(UUID tenantId, UUID edgeId, PageLink pageLink);
DashboardInfo findFirstByTenantIdAndName(UUID tenantId, String name);
} }

View File

@ -34,7 +34,6 @@ import org.thingsboard.server.common.data.id.EdgeId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.common.data.relation.EntityRelation; import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.RelationTypeGroup; import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileConfiguration; import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileConfiguration;
@ -269,6 +268,11 @@ public class DashboardServiceImpl extends AbstractEntityService implements Dashb
return dashboardInfoDao.findDashboardsByTenantIdAndEdgeId(tenantId.getId(), edgeId.getId(), pageLink); return dashboardInfoDao.findDashboardsByTenantIdAndEdgeId(tenantId.getId(), edgeId.getId(), pageLink);
} }
@Override
public DashboardInfo findFirstDashboardInfoByTenantIdAndName(TenantId tenantId, String name) {
return dashboardInfoDao.findFirstByTenantIdAndName(tenantId.getId(), name);
}
private DataValidator<Dashboard> dashboardValidator = private DataValidator<Dashboard> dashboardValidator =
new DataValidator<Dashboard>() { new DataValidator<Dashboard>() {
@Override @Override

View File

@ -29,6 +29,9 @@ import java.util.UUID;
*/ */
public interface DashboardInfoRepository extends PagingAndSortingRepository<DashboardInfoEntity, UUID> { public interface DashboardInfoRepository extends PagingAndSortingRepository<DashboardInfoEntity, UUID> {
DashboardInfoEntity findFirstByTenantIdAndTitle(@Param("tenantId") UUID tenantId,
@Param("name") String title);
@Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " + @Query("SELECT di FROM DashboardInfoEntity di WHERE di.tenantId = :tenantId " +
"AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") "AND LOWER(di.searchText) LIKE LOWER(CONCAT(:searchText, '%'))")
Page<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId, Page<DashboardInfoEntity> findByTenantId(@Param("tenantId") UUID tenantId,

View File

@ -83,4 +83,9 @@ public class JpaDashboardInfoDao extends JpaAbstractSearchTextDao<DashboardInfoE
Objects.toString(pageLink.getTextSearch(), ""), Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink))); DaoUtil.toPageable(pageLink)));
} }
@Override
public DashboardInfo findFirstByTenantIdAndName(UUID tenantId, String name) {
return DaoUtil.getData(dashboardInfoRepository.findFirstByTenantIdAndTitle(tenantId, name));
}
} }