Commit 3c4ee1288d2982c2f25d215d07c5247218af636d
Merge branch 'develop/3.3-firmware' of https://github.com/YevhenBondarenko/thing…
…sboard into YevhenBondarenko-develop/3.3-firmware
Showing
14 changed files
with
149 additions
and
11 deletions
@@ -37,7 +37,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | @@ -37,7 +37,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | ||
37 | content_type varchar(255), | 37 | content_type varchar(255), |
38 | checksum_algorithm varchar(32), | 38 | checksum_algorithm varchar(32), |
39 | checksum varchar(1020), | 39 | checksum varchar(1020), |
40 | - data binary, | 40 | + data bytea, |
41 | additional_info varchar, | 41 | additional_info varchar, |
42 | search_text varchar(255), | 42 | search_text varchar(255), |
43 | CONSTRAINT firmware_tenant_title_version_unq_key UNIQUE (tenant_id, title, version) | 43 | CONSTRAINT firmware_tenant_title_version_unq_key UNIQUE (tenant_id, title, version) |
@@ -717,7 +717,7 @@ public abstract class BaseController { | @@ -717,7 +717,7 @@ public abstract class BaseController { | ||
717 | validateId(firmwareId, "Incorrect firmwareId " + firmwareId); | 717 | validateId(firmwareId, "Incorrect firmwareId " + firmwareId); |
718 | Firmware firmware = firmwareService.findFirmwareById(getCurrentUser().getTenantId(), firmwareId); | 718 | Firmware firmware = firmwareService.findFirmwareById(getCurrentUser().getTenantId(), firmwareId); |
719 | checkNotNull(firmware); | 719 | checkNotNull(firmware); |
720 | - accessControlService.checkPermission(getCurrentUser(), Resource.TB_RESOURCE, operation, firmwareId, firmware); | 720 | + accessControlService.checkPermission(getCurrentUser(), Resource.FIRMWARE, operation, firmwareId, firmware); |
721 | return firmware; | 721 | return firmware; |
722 | } catch (Exception e) { | 722 | } catch (Exception e) { |
723 | throw handleException(e, false); | 723 | throw handleException(e, false); |
@@ -98,7 +98,8 @@ public class FirmwareController extends BaseController { | @@ -98,7 +98,8 @@ public class FirmwareController extends BaseController { | ||
98 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | 98 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
99 | @RequestMapping(value = "/firmware", method = RequestMethod.POST) | 99 | @RequestMapping(value = "/firmware", method = RequestMethod.POST) |
100 | @ResponseBody | 100 | @ResponseBody |
101 | - public FirmwareInfo saveFirmwareInfo(@RequestParam("title") FirmwareInfo firmwareInfo) throws ThingsboardException { | 101 | + public FirmwareInfo saveFirmwareInfo(@RequestBody FirmwareInfo firmwareInfo) throws ThingsboardException { |
102 | + firmwareInfo.setTenantId(getTenantId()); | ||
102 | checkEntity(firmwareInfo.getId(), firmwareInfo, Resource.FIRMWARE); | 103 | checkEntity(firmwareInfo.getId(), firmwareInfo, Resource.FIRMWARE); |
103 | try { | 104 | try { |
104 | return firmwareService.saveFirmwareInfo(firmwareInfo); | 105 | return firmwareService.saveFirmwareInfo(firmwareInfo); |
@@ -112,7 +113,7 @@ public class FirmwareController extends BaseController { | @@ -112,7 +113,7 @@ public class FirmwareController extends BaseController { | ||
112 | @ResponseBody | 113 | @ResponseBody |
113 | public Firmware saveFirmwareData(@PathVariable(FIRMWARE_ID) String strFirmwareId, | 114 | public Firmware saveFirmwareData(@PathVariable(FIRMWARE_ID) String strFirmwareId, |
114 | @RequestParam String checksum, | 115 | @RequestParam String checksum, |
115 | - @RequestParam String checksumAlgorithm, | 116 | + @RequestParam(required = false) String checksumAlgorithm, |
116 | @RequestBody MultipartFile firmwareFile) throws ThingsboardException { | 117 | @RequestBody MultipartFile firmwareFile) throws ThingsboardException { |
117 | checkParameter(FIRMWARE_ID, strFirmwareId); | 118 | checkParameter(FIRMWARE_ID, strFirmwareId); |
118 | checkParameter("checksum", checksum); | 119 | checkParameter("checksum", checksum); |
@@ -123,6 +124,7 @@ public class FirmwareController extends BaseController { | @@ -123,6 +124,7 @@ public class FirmwareController extends BaseController { | ||
123 | Firmware firmware = new Firmware(firmwareId); | 124 | Firmware firmware = new Firmware(firmwareId); |
124 | firmware.setCreatedTime(info.getCreatedTime()); | 125 | firmware.setCreatedTime(info.getCreatedTime()); |
125 | firmware.setTenantId(getTenantId()); | 126 | firmware.setTenantId(getTenantId()); |
127 | + firmware.setTitle(info.getTitle()); | ||
126 | firmware.setVersion(info.getVersion()); | 128 | firmware.setVersion(info.getVersion()); |
127 | firmware.setAdditionalInfo(info.getAdditionalInfo()); | 129 | firmware.setAdditionalInfo(info.getAdditionalInfo()); |
128 | 130 | ||
@@ -138,7 +140,7 @@ public class FirmwareController extends BaseController { | @@ -138,7 +140,7 @@ public class FirmwareController extends BaseController { | ||
138 | } | 140 | } |
139 | 141 | ||
140 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | 142 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
141 | - @RequestMapping(value = "/firmware", method = RequestMethod.GET) | 143 | + @RequestMapping(value = "/firmwares", method = RequestMethod.GET) |
142 | @ResponseBody | 144 | @ResponseBody |
143 | public PageData<FirmwareInfo> getFirmwares(@RequestParam int pageSize, | 145 | public PageData<FirmwareInfo> getFirmwares(@RequestParam int pageSize, |
144 | @RequestParam int page, | 146 | @RequestParam int page, |
@@ -154,6 +156,23 @@ public class FirmwareController extends BaseController { | @@ -154,6 +156,23 @@ public class FirmwareController extends BaseController { | ||
154 | } | 156 | } |
155 | 157 | ||
156 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | 158 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
159 | + @RequestMapping(value = "/firmwares/{hasData}", method = RequestMethod.GET) | ||
160 | + @ResponseBody | ||
161 | + public PageData<FirmwareInfo> getFirmwares(@PathVariable("hasData") boolean hasData, | ||
162 | + @RequestParam int pageSize, | ||
163 | + @RequestParam int page, | ||
164 | + @RequestParam(required = false) String textSearch, | ||
165 | + @RequestParam(required = false) String sortProperty, | ||
166 | + @RequestParam(required = false) String sortOrder) throws ThingsboardException { | ||
167 | + try { | ||
168 | + PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); | ||
169 | + return checkNotNull(firmwareService.findTenantFirmwaresByTenantIdAndHasData(getTenantId(), hasData, pageLink)); | ||
170 | + } catch (Exception e) { | ||
171 | + throw handleException(e); | ||
172 | + } | ||
173 | + } | ||
174 | + | ||
175 | + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | ||
157 | @RequestMapping(value = "/firmware/{firmwareId}", method = RequestMethod.DELETE) | 176 | @RequestMapping(value = "/firmware/{firmwareId}", method = RequestMethod.DELETE) |
158 | @ResponseBody | 177 | @ResponseBody |
159 | public void deleteResource(@PathVariable("firmwareId") String strFirmwareId) throws ThingsboardException { | 178 | public void deleteResource(@PathVariable("firmwareId") String strFirmwareId) throws ThingsboardException { |
@@ -34,6 +34,8 @@ public interface FirmwareService { | @@ -34,6 +34,8 @@ public interface FirmwareService { | ||
34 | 34 | ||
35 | PageData<FirmwareInfo> findTenantFirmwaresByTenantId(TenantId tenantId, PageLink pageLink); | 35 | PageData<FirmwareInfo> findTenantFirmwaresByTenantId(TenantId tenantId, PageLink pageLink); |
36 | 36 | ||
37 | + PageData<FirmwareInfo> findTenantFirmwaresByTenantIdAndHasData(TenantId tenantId, boolean hasData, PageLink pageLink); | ||
38 | + | ||
37 | void deleteFirmware(TenantId tenantId, FirmwareId firmwareId); | 39 | void deleteFirmware(TenantId tenantId, FirmwareId firmwareId); |
38 | 40 | ||
39 | void deleteFirmwaresByTenantId(TenantId tenantId); | 41 | void deleteFirmwaresByTenantId(TenantId tenantId); |
@@ -31,6 +31,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | @@ -31,6 +31,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | ||
31 | private TenantId tenantId; | 31 | private TenantId tenantId; |
32 | private String title; | 32 | private String title; |
33 | private String version; | 33 | private String version; |
34 | + private boolean hasData; | ||
34 | 35 | ||
35 | public FirmwareInfo() { | 36 | public FirmwareInfo() { |
36 | super(); | 37 | super(); |
@@ -70,6 +70,8 @@ public class EntityIdFactory { | @@ -70,6 +70,8 @@ public class EntityIdFactory { | ||
70 | return new ApiUsageStateId(uuid); | 70 | return new ApiUsageStateId(uuid); |
71 | case TB_RESOURCE: | 71 | case TB_RESOURCE: |
72 | return new TbResourceId(uuid); | 72 | return new TbResourceId(uuid); |
73 | + case FIRMWARE: | ||
74 | + return new FirmwareId(uuid); | ||
73 | } | 75 | } |
74 | throw new IllegalArgumentException("EntityType " + type + " is not supported!"); | 76 | throw new IllegalArgumentException("EntityType " + type + " is not supported!"); |
75 | } | 77 | } |
@@ -110,6 +110,13 @@ public class BaseFirmwareService implements FirmwareService { | @@ -110,6 +110,13 @@ public class BaseFirmwareService implements FirmwareService { | ||
110 | } | 110 | } |
111 | 111 | ||
112 | @Override | 112 | @Override |
113 | + public PageData<FirmwareInfo> findTenantFirmwaresByTenantIdAndHasData(TenantId tenantId, boolean hasData, PageLink pageLink) { | ||
114 | + log.trace("Executing findTenantFirmwaresByTenantIdAndHasData, tenantId [{}], hasData [{}] pageLink [{}]", tenantId, hasData, pageLink); | ||
115 | + validateId(tenantId, INCORRECT_TENANT_ID + tenantId); | ||
116 | + validatePageLink(pageLink); | ||
117 | + return firmwareInfoDao.findFirmwareInfoByTenantIdAndHasData(tenantId, hasData, pageLink); } | ||
118 | + | ||
119 | + @Override | ||
113 | public void deleteFirmware(TenantId tenantId, FirmwareId firmwareId) { | 120 | public void deleteFirmware(TenantId tenantId, FirmwareId firmwareId) { |
114 | log.trace("Executing deleteFirmware [{}]", firmwareId); | 121 | log.trace("Executing deleteFirmware [{}]", firmwareId); |
115 | validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId); | 122 | validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId); |
@@ -27,4 +27,6 @@ public interface FirmwareInfoDao extends Dao<FirmwareInfo> { | @@ -27,4 +27,6 @@ public interface FirmwareInfoDao extends Dao<FirmwareInfo> { | ||
27 | 27 | ||
28 | PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink); | 28 | PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink); |
29 | 29 | ||
30 | + PageData<FirmwareInfo> findFirmwareInfoByTenantIdAndHasData(TenantId tenantId, boolean hasData, PageLink pageLink); | ||
31 | + | ||
30 | } | 32 | } |
@@ -482,6 +482,7 @@ public class ModelConstants { | @@ -482,6 +482,7 @@ public class ModelConstants { | ||
482 | public static final String FIRMWARE_CHECKSUM_COLUMN = "checksum"; | 482 | public static final String FIRMWARE_CHECKSUM_COLUMN = "checksum"; |
483 | public static final String FIRMWARE_DATA_COLUMN = "data"; | 483 | public static final String FIRMWARE_DATA_COLUMN = "data"; |
484 | public static final String FIRMWARE_ADDITIONAL_INFO_COLUMN = ADDITIONAL_INFO_PROPERTY; | 484 | public static final String FIRMWARE_ADDITIONAL_INFO_COLUMN = ADDITIONAL_INFO_PROPERTY; |
485 | + public static final String FIRMWARE_HAS_DATA_PROPERTY = "has_data"; | ||
485 | 486 | ||
486 | 487 | ||
487 | /** | 488 | /** |
@@ -124,6 +124,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | @@ -124,6 +124,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | ||
124 | firmware.setChecksum(checksum); | 124 | firmware.setChecksum(checksum); |
125 | if (data != null) { | 125 | if (data != null) { |
126 | firmware.setData(ByteBuffer.wrap(data)); | 126 | firmware.setData(ByteBuffer.wrap(data)); |
127 | + firmware.setHasData(true); | ||
127 | } | 128 | } |
128 | firmware.setAdditionalInfo(additionalInfo); | 129 | firmware.setAdditionalInfo(additionalInfo); |
129 | return firmware; | 130 | return firmware; |
@@ -20,6 +20,7 @@ import lombok.Data; | @@ -20,6 +20,7 @@ import lombok.Data; | ||
20 | import lombok.EqualsAndHashCode; | 20 | import lombok.EqualsAndHashCode; |
21 | import org.hibernate.annotations.Type; | 21 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 22 | import org.hibernate.annotations.TypeDef; |
23 | +import org.thingsboard.common.util.JacksonUtil; | ||
23 | import org.thingsboard.server.common.data.FirmwareInfo; | 24 | import org.thingsboard.server.common.data.FirmwareInfo; |
24 | import org.thingsboard.server.common.data.id.FirmwareId; | 25 | import org.thingsboard.server.common.data.id.FirmwareId; |
25 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
@@ -31,8 +32,10 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | @@ -31,8 +32,10 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | ||
31 | import javax.persistence.Column; | 32 | import javax.persistence.Column; |
32 | import javax.persistence.Entity; | 33 | import javax.persistence.Entity; |
33 | import javax.persistence.Table; | 34 | import javax.persistence.Table; |
35 | +import javax.persistence.Transient; | ||
34 | import java.util.UUID; | 36 | import java.util.UUID; |
35 | 37 | ||
38 | +import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_HAS_DATA_PROPERTY; | ||
36 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; | 39 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; |
37 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; | 40 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; |
38 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; | 41 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; |
@@ -62,6 +65,10 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -62,6 +65,10 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
62 | @Column(name = SEARCH_TEXT_PROPERTY) | 65 | @Column(name = SEARCH_TEXT_PROPERTY) |
63 | private String searchText; | 66 | private String searchText; |
64 | 67 | ||
68 | +// @Column(name = FIRMWARE_HAS_DATA_PROPERTY, insertable = false, updatable = false) | ||
69 | + @Transient | ||
70 | + private boolean hasData; | ||
71 | + | ||
65 | public FirmwareInfoEntity() { | 72 | public FirmwareInfoEntity() { |
66 | super(); | 73 | super(); |
67 | } | 74 | } |
@@ -75,6 +82,16 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -75,6 +82,16 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
75 | this.additionalInfo = firmware.getAdditionalInfo(); | 82 | this.additionalInfo = firmware.getAdditionalInfo(); |
76 | } | 83 | } |
77 | 84 | ||
85 | + public FirmwareInfoEntity(UUID id, long createdTime, UUID tenantId, String title, String version, Object additionalInfo, boolean hasData) { | ||
86 | + this.id = id; | ||
87 | + this.createdTime = createdTime; | ||
88 | + this.tenantId = tenantId; | ||
89 | + this.title = title; | ||
90 | + this.version = version; | ||
91 | + this.hasData = hasData; | ||
92 | + this.additionalInfo = JacksonUtil.convertValue(additionalInfo, JsonNode.class); | ||
93 | + } | ||
94 | + | ||
78 | @Override | 95 | @Override |
79 | public String getSearchTextSource() { | 96 | public String getSearchTextSource() { |
80 | return title; | 97 | return title; |
@@ -93,6 +110,7 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -93,6 +110,7 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
93 | firmware.setTitle(title); | 110 | firmware.setTitle(title); |
94 | firmware.setVersion(version); | 111 | firmware.setVersion(version); |
95 | firmware.setAdditionalInfo(additionalInfo); | 112 | firmware.setAdditionalInfo(additionalInfo); |
113 | + firmware.setHasData(hasData); | ||
96 | return firmware; | 114 | return firmware; |
97 | } | 115 | } |
98 | } | 116 | } |
@@ -25,10 +25,22 @@ import org.thingsboard.server.dao.model.sql.FirmwareInfoEntity; | @@ -25,10 +25,22 @@ import org.thingsboard.server.dao.model.sql.FirmwareInfoEntity; | ||
25 | import java.util.UUID; | 25 | import java.util.UUID; |
26 | 26 | ||
27 | public interface FirmwareInfoRepository extends CrudRepository<FirmwareInfoEntity, UUID> { | 27 | public interface FirmwareInfoRepository extends CrudRepository<FirmwareInfoEntity, UUID> { |
28 | - @Query("SELECT fi FROM FirmwareInfoEntity fi WHERE " + | ||
29 | - "fi.tenantId = :tenantId " + | ||
30 | - "AND LOWER(fi.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") | 28 | + @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.title, f.version, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + |
29 | + "f.tenantId = :tenantId " + | ||
30 | + "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") | ||
31 | Page<FirmwareInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId, | 31 | Page<FirmwareInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId, |
32 | - @Param("searchText") String searchText, | ||
33 | - Pageable pageable); | 32 | + @Param("searchText") String searchText, |
33 | + Pageable pageable); | ||
34 | + | ||
35 | + @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.title, f.version, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + | ||
36 | + "f.tenantId = :tenantId " + | ||
37 | + "AND ((f.data IS NOT NULL AND :hasData = true) OR (f.data IS NULL AND :hasData = false ))" + | ||
38 | + "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") | ||
39 | + Page<FirmwareInfoEntity> findAllByTenantIdAndHasData(@Param("tenantId") UUID tenantId, | ||
40 | + @Param("hasData") boolean hasData, | ||
41 | + @Param("searchText") String searchText, | ||
42 | + Pageable pageable); | ||
43 | + | ||
44 | + @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.title, f.version, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE f.id = :id") | ||
45 | + FirmwareInfoEntity findFirmwareInfoById(@Param("id") UUID id); | ||
34 | } | 46 | } |
@@ -49,6 +49,21 @@ public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEnt | @@ -49,6 +49,21 @@ public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEnt | ||
49 | } | 49 | } |
50 | 50 | ||
51 | @Override | 51 | @Override |
52 | + public FirmwareInfo findById(TenantId tenantId, UUID id) { | ||
53 | + return DaoUtil.getData(firmwareInfoRepository.findFirmwareInfoById(id)); | ||
54 | + } | ||
55 | + | ||
56 | + @Override | ||
57 | + public FirmwareInfo save(TenantId tenantId, FirmwareInfo firmwareInfo) { | ||
58 | + FirmwareInfo savedFirmware = super.save(tenantId, firmwareInfo); | ||
59 | + if (firmwareInfo.getId() == null) { | ||
60 | + return savedFirmware; | ||
61 | + } else { | ||
62 | + return findById(tenantId, savedFirmware.getId().getId()); | ||
63 | + } | ||
64 | + } | ||
65 | + | ||
66 | + @Override | ||
52 | public PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink) { | 67 | public PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink) { |
53 | return DaoUtil.toPageData(firmwareInfoRepository | 68 | return DaoUtil.toPageData(firmwareInfoRepository |
54 | .findAllByTenantId( | 69 | .findAllByTenantId( |
@@ -56,4 +71,14 @@ public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEnt | @@ -56,4 +71,14 @@ public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEnt | ||
56 | Objects.toString(pageLink.getTextSearch(), ""), | 71 | Objects.toString(pageLink.getTextSearch(), ""), |
57 | DaoUtil.toPageable(pageLink))); | 72 | DaoUtil.toPageable(pageLink))); |
58 | } | 73 | } |
74 | + | ||
75 | + @Override | ||
76 | + public PageData<FirmwareInfo> findFirmwareInfoByTenantIdAndHasData(TenantId tenantId, boolean hasData, PageLink pageLink) { | ||
77 | + return DaoUtil.toPageData(firmwareInfoRepository | ||
78 | + .findAllByTenantIdAndHasData( | ||
79 | + tenantId.getId(), | ||
80 | + hasData, | ||
81 | + Objects.toString(pageLink.getTextSearch(), ""), | ||
82 | + DaoUtil.toPageable(pageLink))); | ||
83 | + } | ||
59 | } | 84 | } |
@@ -127,7 +127,9 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | @@ -127,7 +127,9 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | ||
127 | 127 | ||
128 | Firmware foundFirmware = firmwareService.findFirmwareById(tenantId, firmware.getId()); | 128 | Firmware foundFirmware = firmwareService.findFirmwareById(tenantId, firmware.getId()); |
129 | firmware.setAdditionalInfo(JacksonUtil.newObjectNode()); | 129 | firmware.setAdditionalInfo(JacksonUtil.newObjectNode()); |
130 | + | ||
130 | Assert.assertEquals(foundFirmware.getTitle(), firmware.getTitle()); | 131 | Assert.assertEquals(foundFirmware.getTitle(), firmware.getTitle()); |
132 | + Assert.assertTrue(foundFirmware.isHasData()); | ||
131 | 133 | ||
132 | firmwareService.deleteFirmware(tenantId, savedFirmwareInfo.getId()); | 134 | firmwareService.deleteFirmware(tenantId, savedFirmwareInfo.getId()); |
133 | } | 135 | } |
@@ -367,7 +369,10 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | @@ -367,7 +369,10 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | ||
367 | firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM); | 369 | firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM); |
368 | firmware.setChecksum(CHECKSUM); | 370 | firmware.setChecksum(CHECKSUM); |
369 | firmware.setData(DATA); | 371 | firmware.setData(DATA); |
370 | - firmwares.add(new FirmwareInfo(firmwareService.saveFirmware(firmware))); | 372 | + |
373 | + FirmwareInfo info = new FirmwareInfo(firmwareService.saveFirmware(firmware)); | ||
374 | + info.setHasData(true); | ||
375 | + firmwares.add(info); | ||
371 | } | 376 | } |
372 | 377 | ||
373 | List<FirmwareInfo> loadedFirmwares = new ArrayList<>(); | 378 | List<FirmwareInfo> loadedFirmwares = new ArrayList<>(); |
@@ -394,4 +399,47 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | @@ -394,4 +399,47 @@ public abstract class BaseFirmwareServiceTest extends AbstractServiceTest { | ||
394 | Assert.assertTrue(pageData.getData().isEmpty()); | 399 | Assert.assertTrue(pageData.getData().isEmpty()); |
395 | } | 400 | } |
396 | 401 | ||
402 | + @Test | ||
403 | + public void testFindTenantFirmwaresByTenantIdAndHasData() { | ||
404 | + List<FirmwareInfo> firmwares = new ArrayList<>(); | ||
405 | + for (int i = 0; i < 165; i++) { | ||
406 | + Firmware firmware = new Firmware(); | ||
407 | + firmware.setTenantId(tenantId); | ||
408 | + firmware.setTitle(TITLE); | ||
409 | + firmware.setVersion(VERSION + i); | ||
410 | + firmware.setFileName(FILE_NAME); | ||
411 | + firmware.setContentType(CONTENT_TYPE); | ||
412 | + firmware.setChecksumAlgorithm(CHECKSUM_ALGORITHM); | ||
413 | + firmware.setChecksum(CHECKSUM); | ||
414 | + firmware.setData(DATA); | ||
415 | + | ||
416 | + FirmwareInfo info = new FirmwareInfo(firmwareService.saveFirmware(firmware)); | ||
417 | + info.setHasData(true); | ||
418 | + firmwares.add(info); | ||
419 | + } | ||
420 | + | ||
421 | + List<FirmwareInfo> loadedFirmwares = new ArrayList<>(); | ||
422 | + PageLink pageLink = new PageLink(16); | ||
423 | + PageData<FirmwareInfo> pageData; | ||
424 | + do { | ||
425 | + pageData = firmwareService.findTenantFirmwaresByTenantIdAndHasData(tenantId, true, pageLink); | ||
426 | + loadedFirmwares.addAll(pageData.getData()); | ||
427 | + if (pageData.hasNext()) { | ||
428 | + pageLink = pageLink.nextPageLink(); | ||
429 | + } | ||
430 | + } while (pageData.hasNext()); | ||
431 | + | ||
432 | + Collections.sort(firmwares, idComparator); | ||
433 | + Collections.sort(loadedFirmwares, idComparator); | ||
434 | + | ||
435 | + Assert.assertEquals(firmwares, loadedFirmwares); | ||
436 | + | ||
437 | + firmwareService.deleteFirmwaresByTenantId(tenantId); | ||
438 | + | ||
439 | + pageLink = new PageLink(31); | ||
440 | + pageData = firmwareService.findTenantFirmwaresByTenantId(tenantId, pageLink); | ||
441 | + Assert.assertFalse(pageData.hasNext()); | ||
442 | + Assert.assertTrue(pageData.getData().isEmpty()); | ||
443 | + } | ||
444 | + | ||
397 | } | 445 | } |