Commit 139af45fd38a395d473ccc7532a4d0d3a281f6b6

Authored by YevhenBondarenko
Committed by Andrew Shvayka
1 parent 1f00ae83

Renamed Firmware to OtaPackage

Showing 80 changed files with 1040 additions and 1014 deletions

Too many changes to show.

To preserve performance only 80 of 92 files are displayed.

... ... @@ -59,8 +59,8 @@ CREATE TABLE IF NOT EXISTS resource (
59 59 CONSTRAINT resource_unq_key UNIQUE (tenant_id, resource_type, resource_key)
60 60 );
61 61
62   -CREATE TABLE IF NOT EXISTS firmware (
63   - id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY,
  62 +CREATE TABLE IF NOT EXISTS ota_package (
  63 + id uuid NOT NULL CONSTRAINT ota_package_pkey PRIMARY KEY,
64 64 created_time bigint NOT NULL,
65 65 tenant_id uuid NOT NULL,
66 66 device_profile_id uuid,
... ... @@ -75,7 +75,7 @@ CREATE TABLE IF NOT EXISTS firmware (
75 75 data_size bigint,
76 76 additional_info varchar,
77 77 search_text varchar(255),
78   - CONSTRAINT firmware_tenant_title_version_unq_key UNIQUE (tenant_id, title, version)
  78 + CONSTRAINT ota_package_tenant_title_version_unq_key UNIQUE (tenant_id, title, version)
79 79 );
80 80
81 81 ALTER TABLE dashboard
... ... @@ -101,13 +101,13 @@ DO $$
101 101 IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_firmware_device_profile') THEN
102 102 ALTER TABLE device_profile
103 103 ADD CONSTRAINT fk_firmware_device_profile
104   - FOREIGN KEY (firmware_id) REFERENCES firmware(id);
  104 + FOREIGN KEY (firmware_id) REFERENCES ota_package(id);
105 105 END IF;
106 106
107 107 IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_software_device_profile') THEN
108 108 ALTER TABLE device_profile
109 109 ADD CONSTRAINT fk_software_device_profile
110   - FOREIGN KEY (firmware_id) REFERENCES firmware(id);
  110 + FOREIGN KEY (firmware_id) REFERENCES ota_package(id);
111 111 END IF;
112 112
113 113 IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_default_dashboard_device_profile') THEN
... ... @@ -119,13 +119,13 @@ DO $$
119 119 IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_firmware_device') THEN
120 120 ALTER TABLE device
121 121 ADD CONSTRAINT fk_firmware_device
122   - FOREIGN KEY (firmware_id) REFERENCES firmware(id);
  122 + FOREIGN KEY (firmware_id) REFERENCES ota_package(id);
123 123 END IF;
124 124
125 125 IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_software_device') THEN
126 126 ALTER TABLE device
127 127 ADD CONSTRAINT fk_software_device
128   - FOREIGN KEY (firmware_id) REFERENCES firmware(id);
  128 + FOREIGN KEY (firmware_id) REFERENCES ota_package(id);
129 129 END IF;
130 130 END;
131 131 $$;
... ...
... ... @@ -39,8 +39,8 @@ import org.thingsboard.server.common.data.EdgeUtils;
39 39 import org.thingsboard.server.common.data.EntityType;
40 40 import org.thingsboard.server.common.data.EntityView;
41 41 import org.thingsboard.server.common.data.EntityViewInfo;
42   -import org.thingsboard.server.common.data.Firmware;
43   -import org.thingsboard.server.common.data.FirmwareInfo;
  42 +import org.thingsboard.server.common.data.OtaPackage;
  43 +import org.thingsboard.server.common.data.OtaPackageInfo;
44 44 import org.thingsboard.server.common.data.HasName;
45 45 import org.thingsboard.server.common.data.HasTenantId;
46 46 import org.thingsboard.server.common.data.TbResourceInfo;
... ... @@ -70,7 +70,7 @@ import org.thingsboard.server.common.data.id.EdgeId;
70 70 import org.thingsboard.server.common.data.id.EntityId;
71 71 import org.thingsboard.server.common.data.id.EntityIdFactory;
72 72 import org.thingsboard.server.common.data.id.EntityViewId;
73   -import org.thingsboard.server.common.data.id.FirmwareId;
  73 +import org.thingsboard.server.common.data.id.OtaPackageId;
74 74 import org.thingsboard.server.common.data.id.TbResourceId;
75 75 import org.thingsboard.server.common.data.id.RuleChainId;
76 76 import org.thingsboard.server.common.data.id.RuleNodeId;
... ... @@ -110,7 +110,7 @@ import org.thingsboard.server.dao.edge.EdgeService;
110 110 import org.thingsboard.server.dao.entityview.EntityViewService;
111 111 import org.thingsboard.server.dao.exception.DataValidationException;
112 112 import org.thingsboard.server.dao.exception.IncorrectParameterException;
113   -import org.thingsboard.server.dao.firmware.FirmwareService;
  113 +import org.thingsboard.server.dao.ota.OtaPackageService;
114 114 import org.thingsboard.server.dao.model.ModelConstants;
115 115 import org.thingsboard.server.dao.oauth2.OAuth2ConfigTemplateService;
116 116 import org.thingsboard.server.dao.oauth2.OAuth2Service;
... ... @@ -128,7 +128,7 @@ import org.thingsboard.server.queue.discovery.PartitionService;
128 128 import org.thingsboard.server.queue.provider.TbQueueProducerProvider;
129 129 import org.thingsboard.server.queue.util.TbCoreComponent;
130 130 import org.thingsboard.server.service.component.ComponentDiscoveryService;
131   -import org.thingsboard.server.service.firmware.FirmwareStateService;
  131 +import org.thingsboard.server.service.ota.OtaPackageStateService;
132 132 import org.thingsboard.server.service.edge.EdgeNotificationService;
133 133 import org.thingsboard.server.service.edge.rpc.EdgeGrpcService;
134 134 import org.thingsboard.server.service.edge.rpc.init.SyncEdgeService;
... ... @@ -250,10 +250,10 @@ public abstract class BaseController {
250 250 protected TbResourceService resourceService;
251 251
252 252 @Autowired
253   - protected FirmwareService firmwareService;
  253 + protected OtaPackageService otaPackageService;
254 254
255 255 @Autowired
256   - protected FirmwareStateService firmwareStateService;
  256 + protected OtaPackageStateService otaPackageStateService;
257 257
258 258 @Autowired
259 259 protected TbQueueProducerProvider producerProvider;
... ... @@ -511,8 +511,8 @@ public abstract class BaseController {
511 511 case TB_RESOURCE:
512 512 checkResourceId(new TbResourceId(entityId.getId()), operation);
513 513 return;
514   - case FIRMWARE:
515   - checkFirmwareId(new FirmwareId(entityId.getId()), operation);
  514 + case OTA_PACKAGE:
  515 + checkOtaPackageId(new OtaPackageId(entityId.getId()), operation);
516 516 return;
517 517 default:
518 518 throw new IllegalArgumentException("Unsupported entity type: " + entityId.getEntityType());
... ... @@ -769,25 +769,25 @@ public abstract class BaseController {
769 769 }
770 770 }
771 771
772   - Firmware checkFirmwareId(FirmwareId firmwareId, Operation operation) throws ThingsboardException {
  772 + OtaPackage checkOtaPackageId(OtaPackageId otaPackageId, Operation operation) throws ThingsboardException {
773 773 try {
774   - validateId(firmwareId, "Incorrect firmwareId " + firmwareId);
775   - Firmware firmware = firmwareService.findFirmwareById(getCurrentUser().getTenantId(), firmwareId);
776   - checkNotNull(firmware);
777   - accessControlService.checkPermission(getCurrentUser(), Resource.FIRMWARE, operation, firmwareId, firmware);
778   - return firmware;
  774 + validateId(otaPackageId, "Incorrect otaPackageId " + otaPackageId);
  775 + OtaPackage otaPackage = otaPackageService.findOtaPackageById(getCurrentUser().getTenantId(), otaPackageId);
  776 + checkNotNull(otaPackage);
  777 + accessControlService.checkPermission(getCurrentUser(), Resource.OTA_PACKAGE, operation, otaPackageId, otaPackage);
  778 + return otaPackage;
779 779 } catch (Exception e) {
780 780 throw handleException(e, false);
781 781 }
782 782 }
783 783
784   - FirmwareInfo checkFirmwareInfoId(FirmwareId firmwareId, Operation operation) throws ThingsboardException {
  784 + OtaPackageInfo checkOtaPackageInfoId(OtaPackageId otaPackageId, Operation operation) throws ThingsboardException {
785 785 try {
786   - validateId(firmwareId, "Incorrect firmwareId " + firmwareId);
787   - FirmwareInfo firmwareInfo = firmwareService.findFirmwareInfoById(getCurrentUser().getTenantId(), firmwareId);
788   - checkNotNull(firmwareInfo);
789   - accessControlService.checkPermission(getCurrentUser(), Resource.FIRMWARE, operation, firmwareId, firmwareInfo);
790   - return firmwareInfo;
  786 + validateId(otaPackageId, "Incorrect otaPackageId " + otaPackageId);
  787 + OtaPackageInfo otaPackageIn = otaPackageService.findOtaPackageInfoById(getCurrentUser().getTenantId(), otaPackageId);
  788 + checkNotNull(otaPackageIn);
  789 + accessControlService.checkPermission(getCurrentUser(), Resource.OTA_PACKAGE, operation, otaPackageId, otaPackageIn);
  790 + return otaPackageIn;
791 791 } catch (Exception e) {
792 792 throw handleException(e, false);
793 793 }
... ...
... ... @@ -53,6 +53,7 @@ import org.thingsboard.server.common.data.id.DeviceId;
53 53 import org.thingsboard.server.common.data.id.DeviceProfileId;
54 54 import org.thingsboard.server.common.data.id.EdgeId;
55 55 import org.thingsboard.server.common.data.id.TenantId;
  56 +import org.thingsboard.server.common.data.ota.OtaPackageType;
56 57 import org.thingsboard.server.common.data.page.PageData;
57 58 import org.thingsboard.server.common.data.page.PageLink;
58 59 import org.thingsboard.server.common.data.page.TimePageLink;
... ... @@ -75,6 +76,7 @@ import javax.annotation.Nullable;
75 76 import java.io.IOException;
76 77 import java.util.ArrayList;
77 78 import java.util.List;
  79 +import java.util.UUID;
78 80 import java.util.stream.Collectors;
79 81
80 82 import static org.thingsboard.server.controller.EdgeController.EDGE_ID;
... ... @@ -153,7 +155,7 @@ public class DeviceController extends BaseController {
153 155 deviceStateService.onDeviceUpdated(savedDevice);
154 156 }
155 157
156   - firmwareStateService.update(savedDevice, oldDevice);
  158 + otaPackageStateService.update(savedDevice, oldDevice);
157 159
158 160 return savedDevice;
159 161 } catch (Exception e) {
... ... @@ -778,4 +780,19 @@ public class DeviceController extends BaseController {
778 780 throw handleException(e);
779 781 }
780 782 }
  783 +
  784 + @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
  785 + @RequestMapping(value = "/devices/count", method = RequestMethod.GET)
  786 + @ResponseBody
  787 + public Long countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(@RequestParam(required = false) String otaPackageType,
  788 + @RequestParam(required = false) String deviceProfileId) throws ThingsboardException {
  789 + checkParameter("OtaPackageType", otaPackageType);
  790 + checkParameter("DeviceProfileId", deviceProfileId);
  791 + try {
  792 + return deviceService.countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(
  793 + getCurrentUser().getTenantId(), new DeviceProfileId(UUID.fromString(deviceProfileId)), OtaPackageType.valueOf(deviceProfileId));
  794 + } catch (Exception e) {
  795 + throw handleException(e);
  796 + }
  797 + }
781 798 }
... ...
... ... @@ -168,7 +168,7 @@ public class DeviceProfileController extends BaseController {
168 168 null,
169 169 created ? ActionType.ADDED : ActionType.UPDATED, null);
170 170
171   - firmwareStateService.update(savedDeviceProfile, isFirmwareChanged, isSoftwareChanged);
  171 + otaPackageStateService.update(savedDeviceProfile, isFirmwareChanged, isSoftwareChanged);
172 172
173 173 sendEntityNotificationMsg(getTenantId(), savedDeviceProfile.getId(),
174 174 deviceProfile.getId() == null ? EdgeEventActionType.ADDED : EdgeEventActionType.UPDATED);
... ...
application/src/main/java/org/thingsboard/server/controller/OtaPackageController.java renamed from application/src/main/java/org/thingsboard/server/controller/FirmwareController.java
... ... @@ -30,14 +30,14 @@ import org.springframework.web.bind.annotation.ResponseBody;
30 30 import org.springframework.web.bind.annotation.RestController;
31 31 import org.springframework.web.multipart.MultipartFile;
32 32 import org.thingsboard.server.common.data.EntityType;
33   -import org.thingsboard.server.common.data.Firmware;
34   -import org.thingsboard.server.common.data.FirmwareInfo;
  33 +import org.thingsboard.server.common.data.OtaPackage;
  34 +import org.thingsboard.server.common.data.OtaPackageInfo;
35 35 import org.thingsboard.server.common.data.audit.ActionType;
36 36 import org.thingsboard.server.common.data.exception.ThingsboardException;
37   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
38   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  37 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  38 +import org.thingsboard.server.common.data.ota.OtaPackageType;
39 39 import org.thingsboard.server.common.data.id.DeviceProfileId;
40   -import org.thingsboard.server.common.data.id.FirmwareId;
  40 +import org.thingsboard.server.common.data.id.OtaPackageId;
41 41 import org.thingsboard.server.common.data.page.PageData;
42 42 import org.thingsboard.server.common.data.page.PageLink;
43 43 import org.thingsboard.server.queue.util.TbCoreComponent;
... ... @@ -50,26 +50,26 @@ import java.nio.ByteBuffer;
50 50 @RestController
51 51 @TbCoreComponent
52 52 @RequestMapping("/api")
53   -public class FirmwareController extends BaseController {
  53 +public class OtaPackageController extends BaseController {
54 54
55   - public static final String FIRMWARE_ID = "firmwareId";
  55 + public static final String OTA_PACKAGE_ID = "otaPackageId";
56 56 public static final String CHECKSUM_ALGORITHM = "checksumAlgorithm";
57 57
58 58 @PreAuthorize("hasAnyAuthority( 'TENANT_ADMIN')")
59   - @RequestMapping(value = "/firmware/{firmwareId}/download", method = RequestMethod.GET)
  59 + @RequestMapping(value = "/otaPackage/{otaPackageId}/download", method = RequestMethod.GET)
60 60 @ResponseBody
61   - public ResponseEntity<org.springframework.core.io.Resource> downloadFirmware(@PathVariable(FIRMWARE_ID) String strFirmwareId) throws ThingsboardException {
62   - checkParameter(FIRMWARE_ID, strFirmwareId);
  61 + public ResponseEntity<org.springframework.core.io.Resource> downloadOtaPackage(@PathVariable(OTA_PACKAGE_ID) String strOtaPackageId) throws ThingsboardException {
  62 + checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
63 63 try {
64   - FirmwareId firmwareId = new FirmwareId(toUUID(strFirmwareId));
65   - Firmware firmware = checkFirmwareId(firmwareId, Operation.READ);
  64 + OtaPackageId otaPackageId = new OtaPackageId(toUUID(strOtaPackageId));
  65 + OtaPackage otaPackage = checkOtaPackageId(otaPackageId, Operation.READ);
66 66
67   - ByteArrayResource resource = new ByteArrayResource(firmware.getData().array());
  67 + ByteArrayResource resource = new ByteArrayResource(otaPackage.getData().array());
68 68 return ResponseEntity.ok()
69   - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + firmware.getFileName())
70   - .header("x-filename", firmware.getFileName())
  69 + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + otaPackage.getFileName())
  70 + .header("x-filename", otaPackage.getFileName())
71 71 .contentLength(resource.contentLength())
72   - .contentType(parseMediaType(firmware.getContentType()))
  72 + .contentType(parseMediaType(otaPackage.getContentType()))
73 73 .body(resource);
74 74 } catch (Exception e) {
75 75 throw handleException(e);
... ... @@ -77,144 +77,144 @@ public class FirmwareController extends BaseController {
77 77 }
78 78
79 79 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
80   - @RequestMapping(value = "/firmware/info/{firmwareId}", method = RequestMethod.GET)
  80 + @RequestMapping(value = "/otaPackage/info/{otaPackageId}", method = RequestMethod.GET)
81 81 @ResponseBody
82   - public FirmwareInfo getFirmwareInfoById(@PathVariable(FIRMWARE_ID) String strFirmwareId) throws ThingsboardException {
83   - checkParameter(FIRMWARE_ID, strFirmwareId);
  82 + public OtaPackageInfo getOtaPackageInfoById(@PathVariable(OTA_PACKAGE_ID) String strOtaPackageId) throws ThingsboardException {
  83 + checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
84 84 try {
85   - FirmwareId firmwareId = new FirmwareId(toUUID(strFirmwareId));
86   - return checkNotNull(firmwareService.findFirmwareInfoById(getTenantId(), firmwareId));
  85 + OtaPackageId otaPackageId = new OtaPackageId(toUUID(strOtaPackageId));
  86 + return checkNotNull(otaPackageService.findOtaPackageInfoById(getTenantId(), otaPackageId));
87 87 } catch (Exception e) {
88 88 throw handleException(e);
89 89 }
90 90 }
91 91
92 92 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
93   - @RequestMapping(value = "/firmware/{firmwareId}", method = RequestMethod.GET)
  93 + @RequestMapping(value = "/otaPackage/{otaPackageId}", method = RequestMethod.GET)
94 94 @ResponseBody
95   - public Firmware getFirmwareById(@PathVariable(FIRMWARE_ID) String strFirmwareId) throws ThingsboardException {
96   - checkParameter(FIRMWARE_ID, strFirmwareId);
  95 + public OtaPackage getOtaPackageById(@PathVariable(OTA_PACKAGE_ID) String strOtaPackageId) throws ThingsboardException {
  96 + checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
97 97 try {
98   - FirmwareId firmwareId = new FirmwareId(toUUID(strFirmwareId));
99   - return checkFirmwareId(firmwareId, Operation.READ);
  98 + OtaPackageId otaPackageId = new OtaPackageId(toUUID(strOtaPackageId));
  99 + return checkOtaPackageId(otaPackageId, Operation.READ);
100 100 } catch (Exception e) {
101 101 throw handleException(e);
102 102 }
103 103 }
104 104
105 105 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
106   - @RequestMapping(value = "/firmware", method = RequestMethod.POST)
  106 + @RequestMapping(value = "/otaPackage", method = RequestMethod.POST)
107 107 @ResponseBody
108   - public FirmwareInfo saveFirmwareInfo(@RequestBody FirmwareInfo firmwareInfo) throws ThingsboardException {
109   - boolean created = firmwareInfo.getId() == null;
  108 + public OtaPackageInfo saveOtaPackageInfo(@RequestBody OtaPackageInfo otaPackageInfo) throws ThingsboardException {
  109 + boolean created = otaPackageInfo.getId() == null;
110 110 try {
111   - firmwareInfo.setTenantId(getTenantId());
112   - checkEntity(firmwareInfo.getId(), firmwareInfo, Resource.FIRMWARE);
113   - FirmwareInfo savedFirmwareInfo = firmwareService.saveFirmwareInfo(firmwareInfo);
114   - logEntityAction(savedFirmwareInfo.getId(), savedFirmwareInfo,
  111 + otaPackageInfo.setTenantId(getTenantId());
  112 + checkEntity(otaPackageInfo.getId(), otaPackageInfo, Resource.OTA_PACKAGE);
  113 + OtaPackageInfo savedOtaPackageInfo = otaPackageService.saveOtaPackageInfo(otaPackageInfo);
  114 + logEntityAction(savedOtaPackageInfo.getId(), savedOtaPackageInfo,
115 115 null, created ? ActionType.ADDED : ActionType.UPDATED, null);
116   - return savedFirmwareInfo;
  116 + return savedOtaPackageInfo;
117 117 } catch (Exception e) {
118   - logEntityAction(emptyId(EntityType.FIRMWARE), firmwareInfo,
  118 + logEntityAction(emptyId(EntityType.OTA_PACKAGE), otaPackageInfo,
119 119 null, created ? ActionType.ADDED : ActionType.UPDATED, e);
120 120 throw handleException(e);
121 121 }
122 122 }
123 123
124 124 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
125   - @RequestMapping(value = "/firmware/{firmwareId}", method = RequestMethod.POST)
  125 + @RequestMapping(value = "/otaPackage/{otaPackageId}", method = RequestMethod.POST)
126 126 @ResponseBody
127   - public Firmware saveFirmwareData(@PathVariable(FIRMWARE_ID) String strFirmwareId,
128   - @RequestParam(required = false) String checksum,
129   - @RequestParam(CHECKSUM_ALGORITHM) String checksumAlgorithmStr,
130   - @RequestBody MultipartFile file) throws ThingsboardException {
131   - checkParameter(FIRMWARE_ID, strFirmwareId);
  127 + public OtaPackage saveOtaPackageData(@PathVariable(OTA_PACKAGE_ID) String strOtaPackageId,
  128 + @RequestParam(required = false) String checksum,
  129 + @RequestParam(CHECKSUM_ALGORITHM) String checksumAlgorithmStr,
  130 + @RequestBody MultipartFile file) throws ThingsboardException {
  131 + checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
132 132 checkParameter(CHECKSUM_ALGORITHM, checksumAlgorithmStr);
133 133 try {
134   - FirmwareId firmwareId = new FirmwareId(toUUID(strFirmwareId));
135   - FirmwareInfo info = checkFirmwareInfoId(firmwareId, Operation.READ);
136   -
137   - Firmware firmware = new Firmware(firmwareId);
138   - firmware.setCreatedTime(info.getCreatedTime());
139   - firmware.setTenantId(getTenantId());
140   - firmware.setDeviceProfileId(info.getDeviceProfileId());
141   - firmware.setType(info.getType());
142   - firmware.setTitle(info.getTitle());
143   - firmware.setVersion(info.getVersion());
144   - firmware.setAdditionalInfo(info.getAdditionalInfo());
  134 + OtaPackageId otaPackageId = new OtaPackageId(toUUID(strOtaPackageId));
  135 + OtaPackageInfo info = checkOtaPackageInfoId(otaPackageId, Operation.READ);
  136 +
  137 + OtaPackage otaPackage = new OtaPackage(otaPackageId);
  138 + otaPackage.setCreatedTime(info.getCreatedTime());
  139 + otaPackage.setTenantId(getTenantId());
  140 + otaPackage.setDeviceProfileId(info.getDeviceProfileId());
  141 + otaPackage.setType(info.getType());
  142 + otaPackage.setTitle(info.getTitle());
  143 + otaPackage.setVersion(info.getVersion());
  144 + otaPackage.setAdditionalInfo(info.getAdditionalInfo());
145 145
146 146 ChecksumAlgorithm checksumAlgorithm = ChecksumAlgorithm.valueOf(checksumAlgorithmStr.toUpperCase());
147 147
148 148 byte[] bytes = file.getBytes();
149 149 if (StringUtils.isEmpty(checksum)) {
150   - checksum = firmwareService.generateChecksum(checksumAlgorithm, ByteBuffer.wrap(bytes));
  150 + checksum = otaPackageService.generateChecksum(checksumAlgorithm, ByteBuffer.wrap(bytes));
151 151 }
152 152
153   - firmware.setChecksumAlgorithm(checksumAlgorithm);
154   - firmware.setChecksum(checksum);
155   - firmware.setFileName(file.getOriginalFilename());
156   - firmware.setContentType(file.getContentType());
157   - firmware.setData(ByteBuffer.wrap(bytes));
158   - firmware.setDataSize((long) bytes.length);
159   - Firmware savedFirmware = firmwareService.saveFirmware(firmware);
160   - logEntityAction(savedFirmware.getId(), savedFirmware, null, ActionType.UPDATED, null);
161   - return savedFirmware;
  153 + otaPackage.setChecksumAlgorithm(checksumAlgorithm);
  154 + otaPackage.setChecksum(checksum);
  155 + otaPackage.setFileName(file.getOriginalFilename());
  156 + otaPackage.setContentType(file.getContentType());
  157 + otaPackage.setData(ByteBuffer.wrap(bytes));
  158 + otaPackage.setDataSize((long) bytes.length);
  159 + OtaPackage savedOtaPackage = otaPackageService.saveOtaPackage(otaPackage);
  160 + logEntityAction(savedOtaPackage.getId(), savedOtaPackage, null, ActionType.UPDATED, null);
  161 + return savedOtaPackage;
162 162 } catch (Exception e) {
163   - logEntityAction(emptyId(EntityType.FIRMWARE), null, null, ActionType.UPDATED, e, strFirmwareId);
  163 + logEntityAction(emptyId(EntityType.OTA_PACKAGE), null, null, ActionType.UPDATED, e, strOtaPackageId);
164 164 throw handleException(e);
165 165 }
166 166 }
167 167
168 168 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
169   - @RequestMapping(value = "/firmwares", method = RequestMethod.GET)
  169 + @RequestMapping(value = "/otaPackages", method = RequestMethod.GET)
170 170 @ResponseBody
171   - public PageData<FirmwareInfo> getFirmwares(@RequestParam int pageSize,
172   - @RequestParam int page,
173   - @RequestParam(required = false) String textSearch,
174   - @RequestParam(required = false) String sortProperty,
175   - @RequestParam(required = false) String sortOrder) throws ThingsboardException {
  171 + public PageData<OtaPackageInfo> getOtaPackages(@RequestParam int pageSize,
  172 + @RequestParam int page,
  173 + @RequestParam(required = false) String textSearch,
  174 + @RequestParam(required = false) String sortProperty,
  175 + @RequestParam(required = false) String sortOrder) throws ThingsboardException {
176 176 try {
177 177 PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
178   - return checkNotNull(firmwareService.findTenantFirmwaresByTenantId(getTenantId(), pageLink));
  178 + return checkNotNull(otaPackageService.findTenantOtaPackagesByTenantId(getTenantId(), pageLink));
179 179 } catch (Exception e) {
180 180 throw handleException(e);
181 181 }
182 182 }
183 183
184 184 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
185   - @RequestMapping(value = "/firmwares/{deviceProfileId}/{type}/{hasData}", method = RequestMethod.GET)
  185 + @RequestMapping(value = "/otaPackages/{deviceProfileId}/{type}/{hasData}", method = RequestMethod.GET)
186 186 @ResponseBody
187   - public PageData<FirmwareInfo> getFirmwares(@PathVariable("deviceProfileId") String strDeviceProfileId,
188   - @PathVariable("type") String strType,
189   - @PathVariable("hasData") boolean hasData,
190   - @RequestParam int pageSize,
191   - @RequestParam int page,
192   - @RequestParam(required = false) String textSearch,
193   - @RequestParam(required = false) String sortProperty,
194   - @RequestParam(required = false) String sortOrder) throws ThingsboardException {
  187 + public PageData<OtaPackageInfo> getOtaPackages(@PathVariable("deviceProfileId") String strDeviceProfileId,
  188 + @PathVariable("type") String strType,
  189 + @PathVariable("hasData") boolean hasData,
  190 + @RequestParam int pageSize,
  191 + @RequestParam int page,
  192 + @RequestParam(required = false) String textSearch,
  193 + @RequestParam(required = false) String sortProperty,
  194 + @RequestParam(required = false) String sortOrder) throws ThingsboardException {
195 195 checkParameter("deviceProfileId", strDeviceProfileId);
196 196 checkParameter("type", strType);
197 197 try {
198 198 PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
199   - return checkNotNull(firmwareService.findTenantFirmwaresByTenantIdAndDeviceProfileIdAndTypeAndHasData(getTenantId(),
200   - new DeviceProfileId(toUUID(strDeviceProfileId)), FirmwareType.valueOf(strType), hasData, pageLink));
  199 + return checkNotNull(otaPackageService.findTenantOtaPackagesByTenantIdAndDeviceProfileIdAndTypeAndHasData(getTenantId(),
  200 + new DeviceProfileId(toUUID(strDeviceProfileId)), OtaPackageType.valueOf(strType), hasData, pageLink));
201 201 } catch (Exception e) {
202 202 throw handleException(e);
203 203 }
204 204 }
205 205
206 206 @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
207   - @RequestMapping(value = "/firmware/{firmwareId}", method = RequestMethod.DELETE)
  207 + @RequestMapping(value = "/otaPackage/{otaPackageId}", method = RequestMethod.DELETE)
208 208 @ResponseBody
209   - public void deleteFirmware(@PathVariable("firmwareId") String strFirmwareId) throws ThingsboardException {
210   - checkParameter(FIRMWARE_ID, strFirmwareId);
  209 + public void deleteOtaPackage(@PathVariable("otaPackageId") String strOtaPackageId) throws ThingsboardException {
  210 + checkParameter(OTA_PACKAGE_ID, strOtaPackageId);
211 211 try {
212   - FirmwareId firmwareId = new FirmwareId(toUUID(strFirmwareId));
213   - FirmwareInfo info = checkFirmwareInfoId(firmwareId, Operation.DELETE);
214   - firmwareService.deleteFirmware(getTenantId(), firmwareId);
215   - logEntityAction(firmwareId, info, null, ActionType.DELETED, null, strFirmwareId);
  212 + OtaPackageId otaPackageId = new OtaPackageId(toUUID(strOtaPackageId));
  213 + OtaPackageInfo info = checkOtaPackageInfoId(otaPackageId, Operation.DELETE);
  214 + otaPackageService.deleteOtaPackage(getTenantId(), otaPackageId);
  215 + logEntityAction(otaPackageId, info, null, ActionType.DELETED, null, strOtaPackageId);
216 216 } catch (Exception e) {
217   - logEntityAction(emptyId(EntityType.FIRMWARE), null, null, ActionType.DELETED, e, strFirmwareId);
  217 + logEntityAction(emptyId(EntityType.OTA_PACKAGE), null, null, ActionType.DELETED, e, strOtaPackageId);
218 218 throw handleException(e);
219 219 }
220 220 }
... ...
application/src/main/java/org/thingsboard/server/service/ota/DefaultOtaPackageStateService.java renamed from application/src/main/java/org/thingsboard/server/service/firmware/DefaultFirmwareStateService.java
... ... @@ -13,7 +13,7 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.service.firmware;
  16 +package org.thingsboard.server.service.ota;
17 17
18 18 import com.google.common.util.concurrent.FutureCallback;
19 19 import lombok.extern.slf4j.Slf4j;
... ... @@ -23,12 +23,9 @@ import org.thingsboard.rule.engine.api.msg.DeviceAttributesEventNotificationMsg;
23 23 import org.thingsboard.server.common.data.DataConstants;
24 24 import org.thingsboard.server.common.data.Device;
25 25 import org.thingsboard.server.common.data.DeviceProfile;
26   -import org.thingsboard.server.common.data.FirmwareInfo;
27   -import org.thingsboard.server.common.data.firmware.FirmwareType;
28   -import org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus;
29   -import org.thingsboard.server.common.data.firmware.FirmwareUtil;
  26 +import org.thingsboard.server.common.data.OtaPackageInfo;
30 27 import org.thingsboard.server.common.data.id.DeviceId;
31   -import org.thingsboard.server.common.data.id.FirmwareId;
  28 +import org.thingsboard.server.common.data.id.OtaPackageId;
32 29 import org.thingsboard.server.common.data.id.TenantId;
33 30 import org.thingsboard.server.common.data.kv.AttributeKey;
34 31 import org.thingsboard.server.common.data.kv.AttributeKvEntry;
... ... @@ -37,13 +34,16 @@ import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
37 34 import org.thingsboard.server.common.data.kv.LongDataEntry;
38 35 import org.thingsboard.server.common.data.kv.StringDataEntry;
39 36 import org.thingsboard.server.common.data.kv.TsKvEntry;
  37 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  38 +import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus;
  39 +import org.thingsboard.server.common.data.ota.OtaPackageUtil;
40 40 import org.thingsboard.server.common.data.page.PageData;
41 41 import org.thingsboard.server.common.data.page.PageLink;
42 42 import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
43 43 import org.thingsboard.server.dao.device.DeviceProfileService;
44 44 import org.thingsboard.server.dao.device.DeviceService;
45   -import org.thingsboard.server.dao.firmware.FirmwareService;
46   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  45 +import org.thingsboard.server.dao.ota.OtaPackageService;
  46 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
47 47 import org.thingsboard.server.queue.TbQueueProducer;
48 48 import org.thingsboard.server.queue.common.TbProtoQueueMsg;
49 49 import org.thingsboard.server.queue.provider.TbCoreQueueFactory;
... ... @@ -58,44 +58,43 @@ import java.util.List;
58 58 import java.util.Set;
59 59 import java.util.UUID;
60 60 import java.util.function.Consumer;
61   -import java.util.function.Function;
62   -
63   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.CHECKSUM;
64   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.CHECKSUM_ALGORITHM;
65   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.SIZE;
66   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.STATE;
67   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.TITLE;
68   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.TS;
69   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.VERSION;
70   -import static org.thingsboard.server.common.data.firmware.FirmwareType.FIRMWARE;
71   -import static org.thingsboard.server.common.data.firmware.FirmwareType.SOFTWARE;
72   -import static org.thingsboard.server.common.data.firmware.FirmwareUtil.getAttributeKey;
73   -import static org.thingsboard.server.common.data.firmware.FirmwareUtil.getTargetTelemetryKey;
74   -import static org.thingsboard.server.common.data.firmware.FirmwareUtil.getTelemetryKey;
  61 +
  62 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.CHECKSUM;
  63 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.CHECKSUM_ALGORITHM;
  64 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.SIZE;
  65 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.STATE;
  66 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.TITLE;
  67 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.TS;
  68 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.VERSION;
  69 +import static org.thingsboard.server.common.data.ota.OtaPackageType.FIRMWARE;
  70 +import static org.thingsboard.server.common.data.ota.OtaPackageType.SOFTWARE;
  71 +import static org.thingsboard.server.common.data.ota.OtaPackageUtil.getAttributeKey;
  72 +import static org.thingsboard.server.common.data.ota.OtaPackageUtil.getTargetTelemetryKey;
  73 +import static org.thingsboard.server.common.data.ota.OtaPackageUtil.getTelemetryKey;
75 74
76 75 @Slf4j
77 76 @Service
78 77 @TbCoreComponent
79   -public class DefaultFirmwareStateService implements FirmwareStateService {
  78 +public class DefaultOtaPackageStateService implements OtaPackageStateService {
80 79
81 80 private final TbClusterService tbClusterService;
82   - private final FirmwareService firmwareService;
  81 + private final OtaPackageService otaPackageService;
83 82 private final DeviceService deviceService;
84 83 private final DeviceProfileService deviceProfileService;
85 84 private final RuleEngineTelemetryService telemetryService;
86   - private final TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> fwStateMsgProducer;
  85 + private final TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> otaPackageStateMsgProducer;
87 86
88   - public DefaultFirmwareStateService(TbClusterService tbClusterService, FirmwareService firmwareService,
89   - DeviceService deviceService,
90   - DeviceProfileService deviceProfileService,
91   - RuleEngineTelemetryService telemetryService,
92   - TbCoreQueueFactory coreQueueFactory) {
  87 + public DefaultOtaPackageStateService(TbClusterService tbClusterService, OtaPackageService otaPackageService,
  88 + DeviceService deviceService,
  89 + DeviceProfileService deviceProfileService,
  90 + RuleEngineTelemetryService telemetryService,
  91 + TbCoreQueueFactory coreQueueFactory) {
93 92 this.tbClusterService = tbClusterService;
94   - this.firmwareService = firmwareService;
  93 + this.otaPackageService = otaPackageService;
95 94 this.deviceService = deviceService;
96 95 this.deviceProfileService = deviceProfileService;
97 96 this.telemetryService = telemetryService;
98   - this.fwStateMsgProducer = coreQueueFactory.createToFirmwareStateServiceMsgProducer();
  97 + this.otaPackageStateMsgProducer = coreQueueFactory.createToOtaPackageStateServiceMsgProducer();
99 98 }
100 99
101 100 @Override
... ... @@ -105,14 +104,14 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
105 104 }
106 105
107 106 private void updateFirmware(Device device, Device oldDevice) {
108   - FirmwareId newFirmwareId = device.getFirmwareId();
  107 + OtaPackageId newFirmwareId = device.getFirmwareId();
109 108 if (newFirmwareId == null) {
110 109 DeviceProfile newDeviceProfile = deviceProfileService.findDeviceProfileById(device.getTenantId(), device.getDeviceProfileId());
111 110 newFirmwareId = newDeviceProfile.getFirmwareId();
112 111 }
113 112 if (oldDevice != null) {
114 113 if (newFirmwareId != null) {
115   - FirmwareId oldFirmwareId = oldDevice.getFirmwareId();
  114 + OtaPackageId oldFirmwareId = oldDevice.getFirmwareId();
116 115 if (oldFirmwareId == null) {
117 116 DeviceProfile oldDeviceProfile = deviceProfileService.findDeviceProfileById(oldDevice.getTenantId(), oldDevice.getDeviceProfileId());
118 117 oldFirmwareId = oldDeviceProfile.getFirmwareId();
... ... @@ -132,14 +131,14 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
132 131 }
133 132
134 133 private void updateSoftware(Device device, Device oldDevice) {
135   - FirmwareId newSoftwareId = device.getSoftwareId();
  134 + OtaPackageId newSoftwareId = device.getSoftwareId();
136 135 if (newSoftwareId == null) {
137 136 DeviceProfile newDeviceProfile = deviceProfileService.findDeviceProfileById(device.getTenantId(), device.getDeviceProfileId());
138 137 newSoftwareId = newDeviceProfile.getSoftwareId();
139 138 }
140 139 if (oldDevice != null) {
141 140 if (newSoftwareId != null) {
142   - FirmwareId oldSoftwareId = oldDevice.getSoftwareId();
  141 + OtaPackageId oldSoftwareId = oldDevice.getSoftwareId();
143 142 if (oldSoftwareId == null) {
144 143 DeviceProfile oldDeviceProfile = deviceProfileService.findDeviceProfileById(oldDevice.getTenantId(), oldDevice.getDeviceProfileId());
145 144 oldSoftwareId = oldDeviceProfile.getSoftwareId();
... ... @@ -170,33 +169,20 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
170 169 }
171 170 }
172 171
173   - private void update(TenantId tenantId, DeviceProfile deviceProfile, FirmwareType firmwareType) {
174   - Function<PageLink, PageData<Device>> getDevicesFunction;
  172 + private void update(TenantId tenantId, DeviceProfile deviceProfile, OtaPackageType otaPackageType) {
175 173 Consumer<Device> updateConsumer;
176 174
177   - switch (firmwareType) {
178   - case FIRMWARE:
179   - getDevicesFunction = pl -> deviceService.findDevicesByTenantIdAndTypeAndEmptyFirmware(tenantId, deviceProfile.getName(), pl);
180   - break;
181   - case SOFTWARE:
182   - getDevicesFunction = pl -> deviceService.findDevicesByTenantIdAndTypeAndEmptySoftware(tenantId, deviceProfile.getName(), pl);
183   - break;
184   - default:
185   - log.warn("Unsupported firmware type: [{}]", firmwareType);
186   - return;
187   - }
188   -
189 175 if (deviceProfile.getFirmwareId() != null) {
190 176 long ts = System.currentTimeMillis();
191   - updateConsumer = d -> send(d.getTenantId(), d.getId(), deviceProfile.getFirmwareId(), ts, firmwareType);
  177 + updateConsumer = d -> send(d.getTenantId(), d.getId(), deviceProfile.getFirmwareId(), ts, otaPackageType);
192 178 } else {
193   - updateConsumer = d -> remove(d, firmwareType);
  179 + updateConsumer = d -> remove(d, otaPackageType);
194 180 }
195 181
196 182 PageLink pageLink = new PageLink(100);
197 183 PageData<Device> pageData;
198 184 do {
199   - pageData = getDevicesFunction.apply(pageLink);
  185 + pageData = deviceService.findDevicesByTenantIdAndTypeAndEmptyOtaPackage(tenantId, deviceProfile.getId(), otaPackageType, pageLink);
200 186 pageData.getData().forEach(updateConsumer);
201 187
202 188 if (pageData.hasNext()) {
... ... @@ -206,60 +192,60 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
206 192 }
207 193
208 194 @Override
209   - public boolean process(ToFirmwareStateServiceMsg msg) {
  195 + public boolean process(ToOtaPackageStateServiceMsg msg) {
210 196 boolean isSuccess = false;
211   - FirmwareId targetFirmwareId = new FirmwareId(new UUID(msg.getFirmwareIdMSB(), msg.getFirmwareIdLSB()));
  197 + OtaPackageId targetOtaPackageId = new OtaPackageId(new UUID(msg.getOtaPackageIdMSB(), msg.getOtaPackageIdLSB()));
212 198 DeviceId deviceId = new DeviceId(new UUID(msg.getDeviceIdMSB(), msg.getDeviceIdLSB()));
213 199 TenantId tenantId = new TenantId(new UUID(msg.getTenantIdMSB(), msg.getTenantIdLSB()));
214   - FirmwareType firmwareType = FirmwareType.valueOf(msg.getType());
  200 + OtaPackageType firmwareType = OtaPackageType.valueOf(msg.getType());
215 201 long ts = msg.getTs();
216 202
217 203 Device device = deviceService.findDeviceById(tenantId, deviceId);
218 204 if (device == null) {
219 205 log.warn("[{}] [{}] Device was removed during firmware update msg was queued!", tenantId, deviceId);
220 206 } else {
221   - FirmwareId currentFirmwareId = FirmwareUtil.getFirmwareId(device, firmwareType);
222   - if (currentFirmwareId == null) {
  207 + OtaPackageId currentOtaPackageId = OtaPackageUtil.getOtaPackageId(device, firmwareType);
  208 + if (currentOtaPackageId == null) {
223 209 DeviceProfile deviceProfile = deviceProfileService.findDeviceProfileById(tenantId, device.getDeviceProfileId());
224   - currentFirmwareId = FirmwareUtil.getFirmwareId(deviceProfile, firmwareType);
  210 + currentOtaPackageId = OtaPackageUtil.getOtaPackageId(deviceProfile, firmwareType);
225 211 }
226 212
227   - if (targetFirmwareId.equals(currentFirmwareId)) {
228   - update(device, firmwareService.findFirmwareInfoById(device.getTenantId(), targetFirmwareId), ts);
  213 + if (targetOtaPackageId.equals(currentOtaPackageId)) {
  214 + update(device, otaPackageService.findOtaPackageInfoById(device.getTenantId(), targetOtaPackageId), ts);
229 215 isSuccess = true;
230 216 } else {
231   - log.warn("[{}] [{}] Can`t update firmware for the device, target firmwareId: [{}], current firmwareId: [{}]!", tenantId, deviceId, targetFirmwareId, currentFirmwareId);
  217 + log.warn("[{}] [{}] Can`t update firmware for the device, target firmwareId: [{}], current firmwareId: [{}]!", tenantId, deviceId, targetOtaPackageId, currentOtaPackageId);
232 218 }
233 219 }
234 220 return isSuccess;
235 221 }
236 222
237   - private void send(TenantId tenantId, DeviceId deviceId, FirmwareId firmwareId, long ts, FirmwareType firmwareType) {
238   - ToFirmwareStateServiceMsg msg = ToFirmwareStateServiceMsg.newBuilder()
  223 + private void send(TenantId tenantId, DeviceId deviceId, OtaPackageId firmwareId, long ts, OtaPackageType firmwareType) {
  224 + ToOtaPackageStateServiceMsg msg = ToOtaPackageStateServiceMsg.newBuilder()
239 225 .setTenantIdMSB(tenantId.getId().getMostSignificantBits())
240 226 .setTenantIdLSB(tenantId.getId().getLeastSignificantBits())
241 227 .setDeviceIdMSB(deviceId.getId().getMostSignificantBits())
242 228 .setDeviceIdLSB(deviceId.getId().getLeastSignificantBits())
243   - .setFirmwareIdMSB(firmwareId.getId().getMostSignificantBits())
244   - .setFirmwareIdLSB(firmwareId.getId().getLeastSignificantBits())
  229 + .setOtaPackageIdMSB(firmwareId.getId().getMostSignificantBits())
  230 + .setOtaPackageIdLSB(firmwareId.getId().getLeastSignificantBits())
245 231 .setType(firmwareType.name())
246 232 .setTs(ts)
247 233 .build();
248 234
249   - FirmwareInfo firmware = firmwareService.findFirmwareInfoById(tenantId, firmwareId);
  235 + OtaPackageInfo firmware = otaPackageService.findOtaPackageInfoById(tenantId, firmwareId);
250 236 if (firmware == null) {
251 237 log.warn("[{}] Failed to send firmware update because firmware was already deleted", firmwareId);
252 238 return;
253 239 }
254 240
255   - TopicPartitionInfo tpi = new TopicPartitionInfo(fwStateMsgProducer.getDefaultTopic(), null, null, false);
256   - fwStateMsgProducer.send(tpi, new TbProtoQueueMsg<>(UUID.randomUUID(), msg), null);
  241 + TopicPartitionInfo tpi = new TopicPartitionInfo(otaPackageStateMsgProducer.getDefaultTopic(), null, null, false);
  242 + otaPackageStateMsgProducer.send(tpi, new TbProtoQueueMsg<>(UUID.randomUUID(), msg), null);
257 243
258 244 List<TsKvEntry> telemetry = new ArrayList<>();
259 245 telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(getTargetTelemetryKey(firmware.getType(), TITLE), firmware.getTitle())));
260 246 telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(getTargetTelemetryKey(firmware.getType(), VERSION), firmware.getVersion())));
261 247 telemetry.add(new BasicTsKvEntry(ts, new LongDataEntry(getTargetTelemetryKey(firmware.getType(), TS), ts)));
262   - telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(getTelemetryKey(firmware.getType(), STATE), FirmwareUpdateStatus.QUEUED.name())));
  248 + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(getTelemetryKey(firmware.getType(), STATE), OtaPackageUpdateStatus.QUEUED.name())));
263 249
264 250 telemetryService.saveAndNotify(tenantId, deviceId, telemetry, new FutureCallback<>() {
265 251 @Override
... ... @@ -275,11 +261,11 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
275 261 }
276 262
277 263
278   - private void update(Device device, FirmwareInfo firmware, long ts) {
  264 + private void update(Device device, OtaPackageInfo firmware, long ts) {
279 265 TenantId tenantId = device.getTenantId();
280 266 DeviceId deviceId = device.getId();
281 267
282   - BasicTsKvEntry status = new BasicTsKvEntry(System.currentTimeMillis(), new StringDataEntry(getTelemetryKey(firmware.getType(), STATE), FirmwareUpdateStatus.INITIATED.name()));
  268 + BasicTsKvEntry status = new BasicTsKvEntry(System.currentTimeMillis(), new StringDataEntry(getTelemetryKey(firmware.getType(), STATE), OtaPackageUpdateStatus.INITIATED.name()));
283 269
284 270 telemetryService.saveAndNotify(tenantId, deviceId, Collections.singletonList(status), new FutureCallback<>() {
285 271 @Override
... ... @@ -313,14 +299,14 @@ public class DefaultFirmwareStateService implements FirmwareStateService {
313 299 });
314 300 }
315 301
316   - private void remove(Device device, FirmwareType firmwareType) {
317   - telemetryService.deleteAndNotify(device.getTenantId(), device.getId(), DataConstants.SHARED_SCOPE, FirmwareUtil.getAttributeKeys(firmwareType),
  302 + private void remove(Device device, OtaPackageType firmwareType) {
  303 + telemetryService.deleteAndNotify(device.getTenantId(), device.getId(), DataConstants.SHARED_SCOPE, OtaPackageUtil.getAttributeKeys(firmwareType),
318 304 new FutureCallback<>() {
319 305 @Override
320 306 public void onSuccess(@Nullable Void tmp) {
321 307 log.trace("[{}] Success remove target firmware attributes!", device.getId());
322 308 Set<AttributeKey> keysToNotify = new HashSet<>();
323   - FirmwareUtil.ALL_FW_ATTRIBUTE_KEYS.forEach(key -> keysToNotify.add(new AttributeKey(DataConstants.SHARED_SCOPE, key)));
  309 + OtaPackageUtil.ALL_FW_ATTRIBUTE_KEYS.forEach(key -> keysToNotify.add(new AttributeKey(DataConstants.SHARED_SCOPE, key)));
324 310 tbClusterService.pushMsgToCore(DeviceAttributesEventNotificationMsg.onDelete(device.getTenantId(), device.getId(), keysToNotify), null);
325 311 }
326 312
... ...
application/src/main/java/org/thingsboard/server/service/ota/OtaPackageStateService.java renamed from application/src/main/java/org/thingsboard/server/service/firmware/FirmwareStateService.java
... ... @@ -13,18 +13,18 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.service.firmware;
  16 +package org.thingsboard.server.service.ota;
17 17
18 18 import org.thingsboard.server.common.data.Device;
19 19 import org.thingsboard.server.common.data.DeviceProfile;
20   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  20 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
21 21
22   -public interface FirmwareStateService {
  22 +public interface OtaPackageStateService {
23 23
24 24 void update(Device device, Device oldDevice);
25 25
26 26 void update(DeviceProfile deviceProfile, boolean isFirmwareChanged, boolean isSoftwareChanged);
27 27
28   - boolean process(ToFirmwareStateServiceMsg msg);
  28 + boolean process(ToOtaPackageStateServiceMsg msg);
29 29
30 30 }
... ...
... ... @@ -50,7 +50,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionCloseP
50 50 import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesUpdateProto;
51 51 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
52 52 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
53   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  53 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
54 54 import org.thingsboard.server.gen.transport.TransportProtos.ToUsageStatsServiceMsg;
55 55 import org.thingsboard.server.gen.transport.TransportProtos.TransportToDeviceActorMsg;
56 56 import org.thingsboard.server.queue.TbQueueConsumer;
... ... @@ -60,7 +60,7 @@ import org.thingsboard.server.queue.provider.TbCoreQueueFactory;
60 60 import org.thingsboard.server.queue.util.TbCoreComponent;
61 61 import org.thingsboard.server.service.apiusage.TbApiUsageStateService;
62 62 import org.thingsboard.server.service.edge.EdgeNotificationService;
63   -import org.thingsboard.server.service.firmware.FirmwareStateService;
  63 +import org.thingsboard.server.service.ota.OtaPackageStateService;
64 64 import org.thingsboard.server.service.profile.TbDeviceProfileCache;
65 65 import org.thingsboard.server.service.queue.processing.AbstractConsumerService;
66 66 import org.thingsboard.server.service.queue.processing.IdMsgPair;
... ... @@ -75,7 +75,6 @@ import org.thingsboard.server.service.transport.msg.TransportToDeviceActorMsgWra
75 75
76 76 import javax.annotation.PostConstruct;
77 77 import javax.annotation.PreDestroy;
78   -import java.util.ArrayList;
79 78 import java.util.List;
80 79 import java.util.Optional;
81 80 import java.util.UUID;
... ... @@ -101,9 +100,9 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
101 100 @Value("${queue.core.stats.enabled:false}")
102 101 private boolean statsEnabled;
103 102
104   - @Value("${queue.core.firmware.pack-interval-ms:60000}")
  103 + @Value("${queue.core.ota.pack-interval-ms:60000}")
105 104 private long firmwarePackInterval;
106   - @Value("${queue.core.firmware.pack-size:100}")
  105 + @Value("${queue.core.ota.pack-size:100}")
107 106 private int firmwarePackSize;
108 107
109 108 private final TbQueueConsumer<TbProtoQueueMsg<ToCoreMsg>> mainConsumer;
... ... @@ -113,10 +112,10 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
113 112 private final SubscriptionManagerService subscriptionManagerService;
114 113 private final TbCoreDeviceRpcService tbCoreDeviceRpcService;
115 114 private final EdgeNotificationService edgeNotificationService;
116   - private final FirmwareStateService firmwareStateService;
  115 + private final OtaPackageStateService firmwareStateService;
117 116 private final TbCoreConsumerStats stats;
118 117 protected final TbQueueConsumer<TbProtoQueueMsg<ToUsageStatsServiceMsg>> usageStatsConsumer;
119   - private final TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> firmwareStatesConsumer;
  118 + private final TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> firmwareStatesConsumer;
120 119
121 120 protected volatile ExecutorService usageStatsExecutor;
122 121
... ... @@ -135,11 +134,11 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
135 134 TbTenantProfileCache tenantProfileCache,
136 135 TbApiUsageStateService apiUsageStateService,
137 136 EdgeNotificationService edgeNotificationService,
138   - FirmwareStateService firmwareStateService) {
  137 + OtaPackageStateService firmwareStateService) {
139 138 super(actorContext, encodingService, tenantProfileCache, deviceProfileCache, apiUsageStateService, tbCoreQueueFactory.createToCoreNotificationsMsgConsumer());
140 139 this.mainConsumer = tbCoreQueueFactory.createToCoreMsgConsumer();
141 140 this.usageStatsConsumer = tbCoreQueueFactory.createToUsageStatsServiceMsgConsumer();
142   - this.firmwareStatesConsumer = tbCoreQueueFactory.createToFirmwareStateServiceMsgConsumer();
  141 + this.firmwareStatesConsumer = tbCoreQueueFactory.createToOtaPackageStateServiceMsgConsumer();
143 142 this.stateService = stateService;
144 143 this.localSubscriptionService = localSubscriptionService;
145 144 this.subscriptionManagerService = subscriptionManagerService;
... ... @@ -173,7 +172,7 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
173 172 public void onApplicationEvent(ApplicationReadyEvent event) {
174 173 super.onApplicationEvent(event);
175 174 launchUsageStatsConsumer();
176   - launchFirmwareUpdateNotificationConsumer();
  175 + launchOtaPackageUpdateNotificationConsumer();
177 176 }
178 177
179 178 @Override
... ... @@ -361,20 +360,20 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
361 360 });
362 361 }
363 362
364   - private void launchFirmwareUpdateNotificationConsumer() {
  363 + private void launchOtaPackageUpdateNotificationConsumer() {
365 364 long maxProcessingTimeoutPerRecord = firmwarePackInterval / firmwarePackSize;
366 365 firmwareStatesExecutor.submit(() -> {
367 366 while (!stopped) {
368 367 try {
369   - List<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> msgs = firmwareStatesConsumer.poll(getNotificationPollDuration());
  368 + List<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> msgs = firmwareStatesConsumer.poll(getNotificationPollDuration());
370 369 if (msgs.isEmpty()) {
371 370 continue;
372 371 }
373 372 long timeToSleep = maxProcessingTimeoutPerRecord;
374   - for (TbProtoQueueMsg<ToFirmwareStateServiceMsg> msg : msgs) {
  373 + for (TbProtoQueueMsg<ToOtaPackageStateServiceMsg> msg : msgs) {
375 374 try {
376 375 long startTime = System.currentTimeMillis();
377   - boolean isSuccessUpdate = handleFirmwareUpdates(msg);
  376 + boolean isSuccessUpdate = handleOtaPackageUpdates(msg);
378 377 long endTime = System.currentTimeMillis();
379 378 long spentTime = endTime - startTime;
380 379 timeToSleep = timeToSleep - spentTime;
... ... @@ -402,7 +401,7 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
402 401 }
403 402 }
404 403 }
405   - log.info("TB Firmware States Consumer stopped.");
  404 + log.info("TB Ota Package States Consumer stopped.");
406 405 });
407 406 }
408 407
... ... @@ -410,7 +409,7 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
410 409 statsService.process(msg, callback);
411 410 }
412 411
413   - private boolean handleFirmwareUpdates(TbProtoQueueMsg<ToFirmwareStateServiceMsg> msg) {
  412 + private boolean handleOtaPackageUpdates(TbProtoQueueMsg<ToOtaPackageStateServiceMsg> msg) {
414 413 return firmwareStateService.process(msg.getValue());
415 414 }
416 415
... ...
... ... @@ -30,7 +30,7 @@ import org.thingsboard.server.common.data.Customer;
30 30 import org.thingsboard.server.common.data.Device;
31 31 import org.thingsboard.server.common.data.DeviceProfile;
32 32 import org.thingsboard.server.common.data.EntityView;
33   -import org.thingsboard.server.common.data.FirmwareInfo;
  33 +import org.thingsboard.server.common.data.OtaPackageInfo;
34 34 import org.thingsboard.server.common.data.TbResourceInfo;
35 35 import org.thingsboard.server.common.data.Tenant;
36 36 import org.thingsboard.server.common.data.User;
... ... @@ -46,7 +46,7 @@ import org.thingsboard.server.common.data.id.EdgeId;
46 46 import org.thingsboard.server.common.data.id.EntityId;
47 47 import org.thingsboard.server.common.data.id.EntityIdFactory;
48 48 import org.thingsboard.server.common.data.id.EntityViewId;
49   -import org.thingsboard.server.common.data.id.FirmwareId;
  49 +import org.thingsboard.server.common.data.id.OtaPackageId;
50 50 import org.thingsboard.server.common.data.id.RuleChainId;
51 51 import org.thingsboard.server.common.data.id.RuleNodeId;
52 52 import org.thingsboard.server.common.data.id.TbResourceId;
... ... @@ -63,7 +63,7 @@ import org.thingsboard.server.dao.device.DeviceService;
63 63 import org.thingsboard.server.dao.edge.EdgeService;
64 64 import org.thingsboard.server.dao.entityview.EntityViewService;
65 65 import org.thingsboard.server.dao.exception.IncorrectParameterException;
66   -import org.thingsboard.server.dao.firmware.FirmwareService;
  66 +import org.thingsboard.server.dao.ota.OtaPackageService;
67 67 import org.thingsboard.server.dao.resource.ResourceService;
68 68 import org.thingsboard.server.dao.rule.RuleChainService;
69 69 import org.thingsboard.server.dao.tenant.TenantService;
... ... @@ -135,7 +135,7 @@ public class AccessValidator {
135 135 protected ResourceService resourceService;
136 136
137 137 @Autowired
138   - protected FirmwareService firmwareService;
  138 + protected OtaPackageService otaPackageService;
139 139
140 140 private ExecutorService executor;
141 141
... ... @@ -232,8 +232,8 @@ public class AccessValidator {
232 232 case TB_RESOURCE:
233 233 validateResource(currentUser, operation, entityId, callback);
234 234 return;
235   - case FIRMWARE:
236   - validateFirmware(currentUser, operation, entityId, callback);
  235 + case OTA_PACKAGE:
  236 + validateOtaPackage(currentUser, operation, entityId, callback);
237 237 return;
238 238 default:
239 239 //TODO: add support of other entities
... ... @@ -300,20 +300,20 @@ public class AccessValidator {
300 300 }
301 301 }
302 302
303   - private void validateFirmware(final SecurityUser currentUser, Operation operation, EntityId entityId, FutureCallback<ValidationResult> callback) {
  303 + private void validateOtaPackage(final SecurityUser currentUser, Operation operation, EntityId entityId, FutureCallback<ValidationResult> callback) {
304 304 if (currentUser.isSystemAdmin()) {
305 305 callback.onSuccess(ValidationResult.accessDenied(SYSTEM_ADMINISTRATOR_IS_NOT_ALLOWED_TO_PERFORM_THIS_OPERATION));
306 306 } else {
307   - FirmwareInfo firmware = firmwareService.findFirmwareInfoById(currentUser.getTenantId(), new FirmwareId(entityId.getId()));
308   - if (firmware == null) {
309   - callback.onSuccess(ValidationResult.entityNotFound("Firmware with requested id wasn't found!"));
  307 + OtaPackageInfo otaPackage = otaPackageService.findOtaPackageInfoById(currentUser.getTenantId(), new OtaPackageId(entityId.getId()));
  308 + if (otaPackage == null) {
  309 + callback.onSuccess(ValidationResult.entityNotFound("OtaPackage with requested id wasn't found!"));
310 310 } else {
311 311 try {
312   - accessControlService.checkPermission(currentUser, Resource.FIRMWARE, operation, entityId, firmware);
  312 + accessControlService.checkPermission(currentUser, Resource.OTA_PACKAGE, operation, entityId, otaPackage);
313 313 } catch (ThingsboardException e) {
314 314 callback.onSuccess(ValidationResult.accessDenied(e.getMessage()));
315 315 }
316   - callback.onSuccess(ValidationResult.ok(firmware));
  316 + callback.onSuccess(ValidationResult.ok(otaPackage));
317 317 }
318 318 }
319 319 }
... ...
... ... @@ -38,7 +38,7 @@ public enum Resource {
38 38 DEVICE_PROFILE(EntityType.DEVICE_PROFILE),
39 39 API_USAGE_STATE(EntityType.API_USAGE_STATE),
40 40 TB_RESOURCE(EntityType.TB_RESOURCE),
41   - FIRMWARE(EntityType.FIRMWARE),
  41 + OTA_PACKAGE(EntityType.OTA_PACKAGE),
42 42 EDGE(EntityType.EDGE);
43 43
44 44 private final EntityType entityType;
... ...
... ... @@ -42,7 +42,7 @@ public class TenantAdminPermissions extends AbstractPermissions {
42 42 put(Resource.DEVICE_PROFILE, tenantEntityPermissionChecker);
43 43 put(Resource.API_USAGE_STATE, tenantEntityPermissionChecker);
44 44 put(Resource.TB_RESOURCE, tbResourcePermissionChecker);
45   - put(Resource.FIRMWARE, tenantEntityPermissionChecker);
  45 + put(Resource.OTA_PACKAGE, tenantEntityPermissionChecker);
46 46 put(Resource.EDGE, tenantEntityPermissionChecker);
47 47 }
48 48
... ...
... ... @@ -26,27 +26,27 @@ import lombok.extern.slf4j.Slf4j;
26 26 import org.springframework.stereotype.Service;
27 27 import org.springframework.util.StringUtils;
28 28 import org.thingsboard.common.util.JacksonUtil;
29   -import org.thingsboard.server.cache.firmware.FirmwareDataCache;
  29 +import org.thingsboard.server.cache.ota.OtaPackageDataCache;
30 30 import org.thingsboard.server.common.data.ApiUsageState;
31 31 import org.thingsboard.server.common.data.DataConstants;
32 32 import org.thingsboard.server.common.data.Device;
33 33 import org.thingsboard.server.common.data.DeviceProfile;
34 34 import org.thingsboard.server.common.data.DeviceTransportType;
35 35 import org.thingsboard.server.common.data.EntityType;
36   -import org.thingsboard.server.common.data.Firmware;
37   -import org.thingsboard.server.common.data.FirmwareInfo;
  36 +import org.thingsboard.server.common.data.OtaPackage;
  37 +import org.thingsboard.server.common.data.OtaPackageInfo;
38 38 import org.thingsboard.server.common.data.ResourceType;
39 39 import org.thingsboard.server.common.data.TbResource;
40 40 import org.thingsboard.server.common.data.TenantProfile;
41 41 import org.thingsboard.server.common.data.device.credentials.BasicMqttCredentials;
42 42 import org.thingsboard.server.common.data.device.credentials.ProvisionDeviceCredentialsData;
43 43 import org.thingsboard.server.common.data.device.profile.ProvisionDeviceProfileCredentials;
44   -import org.thingsboard.server.common.data.firmware.FirmwareType;
45   -import org.thingsboard.server.common.data.firmware.FirmwareUtil;
  44 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  45 +import org.thingsboard.server.common.data.ota.OtaPackageUtil;
46 46 import org.thingsboard.server.common.data.id.CustomerId;
47 47 import org.thingsboard.server.common.data.id.DeviceId;
48 48 import org.thingsboard.server.common.data.id.DeviceProfileId;
49   -import org.thingsboard.server.common.data.id.FirmwareId;
  49 +import org.thingsboard.server.common.data.id.OtaPackageId;
50 50 import org.thingsboard.server.common.data.id.TenantId;
51 51 import org.thingsboard.server.common.data.page.PageData;
52 52 import org.thingsboard.server.common.data.page.PageLink;
... ... @@ -64,7 +64,7 @@ import org.thingsboard.server.dao.device.DeviceService;
64 64 import org.thingsboard.server.dao.device.provision.ProvisionFailedException;
65 65 import org.thingsboard.server.dao.device.provision.ProvisionRequest;
66 66 import org.thingsboard.server.dao.device.provision.ProvisionResponse;
67   -import org.thingsboard.server.dao.firmware.FirmwareService;
  67 +import org.thingsboard.server.dao.ota.OtaPackageService;
68 68 import org.thingsboard.server.dao.relation.RelationService;
69 69 import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
70 70 import org.thingsboard.server.gen.transport.TransportProtos;
... ... @@ -124,8 +124,8 @@ public class DefaultTransportApiService implements TransportApiService {
124 124 private final DataDecodingEncodingService dataDecodingEncodingService;
125 125 private final DeviceProvisionService deviceProvisionService;
126 126 private final TbResourceService resourceService;
127   - private final FirmwareService firmwareService;
128   - private final FirmwareDataCache firmwareDataCache;
  127 + private final OtaPackageService otaPackageService;
  128 + private final OtaPackageDataCache otaPackageDataCache;
129 129
130 130 private final ConcurrentMap<String, ReentrantLock> deviceCreationLocks = new ConcurrentHashMap<>();
131 131
... ... @@ -134,7 +134,7 @@ public class DefaultTransportApiService implements TransportApiService {
134 134 RelationService relationService, DeviceCredentialsService deviceCredentialsService,
135 135 DeviceStateService deviceStateService, DbCallbackExecutorService dbCallbackExecutorService,
136 136 TbClusterService tbClusterService, DataDecodingEncodingService dataDecodingEncodingService,
137   - DeviceProvisionService deviceProvisionService, TbResourceService resourceService, FirmwareService firmwareService, FirmwareDataCache firmwareDataCache) {
  137 + DeviceProvisionService deviceProvisionService, TbResourceService resourceService, OtaPackageService otaPackageService, OtaPackageDataCache otaPackageDataCache) {
138 138 this.deviceProfileCache = deviceProfileCache;
139 139 this.tenantProfileCache = tenantProfileCache;
140 140 this.apiUsageStateService = apiUsageStateService;
... ... @@ -147,8 +147,8 @@ public class DefaultTransportApiService implements TransportApiService {
147 147 this.dataDecodingEncodingService = dataDecodingEncodingService;
148 148 this.deviceProvisionService = deviceProvisionService;
149 149 this.resourceService = resourceService;
150   - this.firmwareService = firmwareService;
151   - this.firmwareDataCache = firmwareDataCache;
  150 + this.otaPackageService = otaPackageService;
  151 + this.otaPackageDataCache = otaPackageDataCache;
152 152 }
153 153
154 154 @Override
... ... @@ -184,8 +184,8 @@ public class DefaultTransportApiService implements TransportApiService {
184 184 result = handle(transportApiRequestMsg.getDeviceRequestMsg());
185 185 } else if (transportApiRequestMsg.hasDeviceCredentialsRequestMsg()) {
186 186 result = handle(transportApiRequestMsg.getDeviceCredentialsRequestMsg());
187   - } else if (transportApiRequestMsg.hasFirmwareRequestMsg()) {
188   - result = handle(transportApiRequestMsg.getFirmwareRequestMsg());
  187 + } else if (transportApiRequestMsg.hasOtaPackageRequestMsg()) {
  188 + result = handle(transportApiRequestMsg.getOtaPackageRequestMsg());
189 189 }
190 190
191 191 return Futures.transform(Optional.ofNullable(result).orElseGet(this::getEmptyTransportApiResponseFuture),
... ... @@ -511,50 +511,50 @@ public class DefaultTransportApiService implements TransportApiService {
511 511 }
512 512 }
513 513
514   - private ListenableFuture<TransportApiResponseMsg> handle(TransportProtos.GetFirmwareRequestMsg requestMsg) {
  514 + private ListenableFuture<TransportApiResponseMsg> handle(TransportProtos.GetOtaPackageRequestMsg requestMsg) {
515 515 TenantId tenantId = new TenantId(new UUID(requestMsg.getTenantIdMSB(), requestMsg.getTenantIdLSB()));
516 516 DeviceId deviceId = new DeviceId(new UUID(requestMsg.getDeviceIdMSB(), requestMsg.getDeviceIdLSB()));
517   - FirmwareType firmwareType = FirmwareType.valueOf(requestMsg.getType());
  517 + OtaPackageType otaPackageType = OtaPackageType.valueOf(requestMsg.getType());
518 518 Device device = deviceService.findDeviceById(tenantId, deviceId);
519 519
520 520 if (device == null) {
521 521 return getEmptyTransportApiResponseFuture();
522 522 }
523 523
524   - FirmwareId firmwareId = FirmwareUtil.getFirmwareId(device, firmwareType);
525   - if (firmwareId == null) {
  524 + OtaPackageId otaPackageId = OtaPackageUtil.getOtaPackageId(device, otaPackageType);
  525 + if (otaPackageId == null) {
526 526 DeviceProfile deviceProfile = deviceProfileCache.find(device.getDeviceProfileId());
527   - firmwareId = FirmwareUtil.getFirmwareId(deviceProfile, firmwareType);
  527 + otaPackageId = OtaPackageUtil.getOtaPackageId(deviceProfile, otaPackageType);
528 528 }
529 529
530   - TransportProtos.GetFirmwareResponseMsg.Builder builder = TransportProtos.GetFirmwareResponseMsg.newBuilder();
  530 + TransportProtos.GetOtaPackageResponseMsg.Builder builder = TransportProtos.GetOtaPackageResponseMsg.newBuilder();
531 531
532   - if (firmwareId == null) {
  532 + if (otaPackageId == null) {
533 533 builder.setResponseStatus(TransportProtos.ResponseStatus.NOT_FOUND);
534 534 } else {
535   - FirmwareInfo firmwareInfo = firmwareService.findFirmwareInfoById(tenantId, firmwareId);
  535 + OtaPackageInfo otaPackageInfo = otaPackageService.findOtaPackageInfoById(tenantId, otaPackageId);
536 536
537   - if (firmwareInfo == null) {
  537 + if (otaPackageInfo == null) {
538 538 builder.setResponseStatus(TransportProtos.ResponseStatus.NOT_FOUND);
539 539 } else {
540 540 builder.setResponseStatus(TransportProtos.ResponseStatus.SUCCESS);
541   - builder.setFirmwareIdMSB(firmwareId.getId().getMostSignificantBits());
542   - builder.setFirmwareIdLSB(firmwareId.getId().getLeastSignificantBits());
543   - builder.setType(firmwareInfo.getType().name());
544   - builder.setTitle(firmwareInfo.getTitle());
545   - builder.setVersion(firmwareInfo.getVersion());
546   - builder.setFileName(firmwareInfo.getFileName());
547   - builder.setContentType(firmwareInfo.getContentType());
548   - if (!firmwareDataCache.has(firmwareId.toString())) {
549   - Firmware firmware = firmwareService.findFirmwareById(tenantId, firmwareId);
550   - firmwareDataCache.put(firmwareId.toString(), firmware.getData().array());
  541 + builder.setOtaPackageIdMSB(otaPackageId.getId().getMostSignificantBits());
  542 + builder.setOtaPackageIdLSB(otaPackageId.getId().getLeastSignificantBits());
  543 + builder.setType(otaPackageInfo.getType().name());
  544 + builder.setTitle(otaPackageInfo.getTitle());
  545 + builder.setVersion(otaPackageInfo.getVersion());
  546 + builder.setFileName(otaPackageInfo.getFileName());
  547 + builder.setContentType(otaPackageInfo.getContentType());
  548 + if (!otaPackageDataCache.has(otaPackageId.toString())) {
  549 + OtaPackage otaPackage = otaPackageService.findOtaPackageById(tenantId, otaPackageId);
  550 + otaPackageDataCache.put(otaPackageId.toString(), otaPackage.getData().array());
551 551 }
552 552 }
553 553 }
554 554
555 555 return Futures.immediateFuture(
556 556 TransportApiResponseMsg.newBuilder()
557   - .setFirmwareResponseMsg(builder.build())
  557 + .setOtaPackageResponseMsg(builder.build())
558 558 .build());
559 559 }
560 560
... ...
... ... @@ -371,7 +371,7 @@ caffeine:
371 371 tokensOutdatageTime:
372 372 timeToLiveInMinutes: 20000
373 373 maxSize: 10000
374   - firmwares:
  374 + otaPackages:
375 375 timeToLiveInMinutes: 60
376 376 maxSize: 10
377 377 edges:
... ... @@ -497,7 +497,7 @@ audit-log:
497 497 "device_profile": "${AUDIT_LOG_MASK_DEVICE_PROFILE:W}"
498 498 "edge": "${AUDIT_LOG_MASK_EDGE:W}"
499 499 "tb_resource": "${AUDIT_LOG_MASK_RESOURCE:W}"
500   - "firmware": "${AUDIT_LOG_MASK_FIRMWARE:W}"
  500 + "ota_package": "${AUDIT_LOG_MASK_OTA_PACKAGE:W}"
501 501 sink:
502 502 # Type of external sink. possible options: none, elasticsearch
503 503 type: "${AUDIT_LOG_SINK_TYPE:none}"
... ... @@ -749,7 +749,7 @@ queue:
749 749 sasl.config: "${TB_QUEUE_KAFKA_CONFLUENT_SASL_JAAS_CONFIG:org.apache.kafka.common.security.plain.PlainLoginModule required username=\"CLUSTER_API_KEY\" password=\"CLUSTER_API_SECRET\";}"
750 750 security.protocol: "${TB_QUEUE_KAFKA_CONFLUENT_SECURITY_PROTOCOL:SASL_SSL}"
751 751 consumer-properties-per-topic:
752   - tb_firmware:
  752 + tb_ota_package:
753 753 - key: max.poll.records
754 754 value: 10
755 755 other:
... ... @@ -759,7 +759,7 @@ queue:
759 759 transport-api: "${TB_QUEUE_KAFKA_TA_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;min.insync.replicas:1}"
760 760 notifications: "${TB_QUEUE_KAFKA_NOTIFICATIONS_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:1;min.insync.replicas:1}"
761 761 js-executor: "${TB_QUEUE_KAFKA_JE_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:104857600;partitions:100;min.insync.replicas:1}"
762   - fw-updates: "${TB_QUEUE_KAFKA_FW_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:10;min.insync.replicas:1}"
  762 + ota-updates: "${TB_QUEUE_KAFKA_OTA_TOPIC_PROPERTIES:retention.ms:604800000;segment.bytes:26214400;retention.bytes:1048576000;partitions:10;min.insync.replicas:1}"
763 763 consumer-stats:
764 764 enabled: "${TB_QUEUE_KAFKA_CONSUMER_STATS_ENABLED:true}"
765 765 print-interval-ms: "${TB_QUEUE_KAFKA_CONSUMER_STATS_MIN_PRINT_INTERVAL_MS:60000}"
... ... @@ -830,10 +830,10 @@ queue:
830 830 poll-interval: "${TB_QUEUE_CORE_POLL_INTERVAL_MS:25}"
831 831 partitions: "${TB_QUEUE_CORE_PARTITIONS:10}"
832 832 pack-processing-timeout: "${TB_QUEUE_CORE_PACK_PROCESSING_TIMEOUT_MS:2000}"
833   - firmware:
834   - topic: "${TB_QUEUE_CORE_FW_TOPIC:tb_firmware}"
835   - pack-interval-ms: "${TB_QUEUE_CORE_FW_PACK_INTERVAL_MS:60000}"
836   - pack-size: "${TB_QUEUE_CORE_FW_PACK_SIZE:100}"
  833 + ota:
  834 + topic: "${TB_QUEUE_CORE_OTA_TOPIC:tb_ota_package}"
  835 + pack-interval-ms: "${TB_QUEUE_CORE_OTA_PACK_INTERVAL_MS:60000}"
  836 + pack-size: "${TB_QUEUE_CORE_OTA_PACK_SIZE:100}"
837 837 usage-stats-topic: "${TB_QUEUE_US_TOPIC:tb_usage_stats}"
838 838 stats:
839 839 enabled: "${TB_QUEUE_CORE_STATS_ENABLED:true}"
... ...
application/src/test/java/org/thingsboard/server/controller/BaseOtaPackageControllerTest.java renamed from application/src/test/java/org/thingsboard/server/controller/BaseFirmwareControllerTest.java
... ... @@ -25,11 +25,10 @@ import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequ
25 25 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
26 26 import org.thingsboard.common.util.JacksonUtil;
27 27 import org.thingsboard.server.common.data.DeviceProfile;
28   -import org.thingsboard.server.common.data.Firmware;
29   -import org.thingsboard.server.common.data.FirmwareInfo;
  28 +import org.thingsboard.server.common.data.OtaPackage;
  29 +import org.thingsboard.server.common.data.OtaPackageInfo;
30 30 import org.thingsboard.server.common.data.Tenant;
31 31 import org.thingsboard.server.common.data.User;
32   -import org.thingsboard.server.common.data.firmware.FirmwareType;
33 32 import org.thingsboard.server.common.data.id.DeviceProfileId;
34 33 import org.thingsboard.server.common.data.page.PageData;
35 34 import org.thingsboard.server.common.data.page.PageLink;
... ... @@ -41,11 +40,11 @@ import java.util.Collections;
41 40 import java.util.List;
42 41
43 42 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
44   -import static org.thingsboard.server.common.data.firmware.FirmwareType.FIRMWARE;
  43 +import static org.thingsboard.server.common.data.ota.OtaPackageType.FIRMWARE;
45 44
46   -public abstract class BaseFirmwareControllerTest extends AbstractControllerTest {
  45 +public abstract class BaseOtaPackageControllerTest extends AbstractControllerTest {
47 46
48   - private IdComparator<FirmwareInfo> idComparator = new IdComparator<>();
  47 + private IdComparator<OtaPackageInfo> idComparator = new IdComparator<>();
49 48
50 49 public static final String TITLE = "My firmware";
51 50 private static final String FILE_NAME = "filename.txt";
... ... @@ -93,13 +92,13 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
93 92
94 93 @Test
95 94 public void testSaveFirmware() throws Exception {
96   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  95 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
97 96 firmwareInfo.setDeviceProfileId(deviceProfileId);
98 97 firmwareInfo.setType(FIRMWARE);
99 98 firmwareInfo.setTitle(TITLE);
100 99 firmwareInfo.setVersion(VERSION);
101 100
102   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  101 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
103 102
104 103 Assert.assertNotNull(savedFirmwareInfo);
105 104 Assert.assertNotNull(savedFirmwareInfo.getId());
... ... @@ -112,19 +111,19 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
112 111
113 112 save(savedFirmwareInfo);
114 113
115   - FirmwareInfo foundFirmwareInfo = doGet("/api/firmware/info/" + savedFirmwareInfo.getId().getId().toString(), FirmwareInfo.class);
  114 + OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class);
116 115 Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle());
117 116 }
118 117
119 118 @Test
120 119 public void testSaveFirmwareData() throws Exception {
121   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  120 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
122 121 firmwareInfo.setDeviceProfileId(deviceProfileId);
123 122 firmwareInfo.setType(FIRMWARE);
124 123 firmwareInfo.setTitle(TITLE);
125 124 firmwareInfo.setVersion(VERSION);
126 125
127   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  126 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
128 127
129 128 Assert.assertNotNull(savedFirmwareInfo);
130 129 Assert.assertNotNull(savedFirmwareInfo.getId());
... ... @@ -137,12 +136,12 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
137 136
138 137 save(savedFirmwareInfo);
139 138
140   - FirmwareInfo foundFirmwareInfo = doGet("/api/firmware/info/" + savedFirmwareInfo.getId().getId().toString(), FirmwareInfo.class);
  139 + OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class);
141 140 Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle());
142 141
143 142 MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array());
144 143
145   - Firmware savedFirmware = savaData("/api/firmware/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
  144 + OtaPackage savedFirmware = savaData("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
146 145
147 146 Assert.assertEquals(FILE_NAME, savedFirmware.getFileName());
148 147 Assert.assertEquals(CONTENT_TYPE, savedFirmware.getContentType());
... ... @@ -150,97 +149,97 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
150 149
151 150 @Test
152 151 public void testUpdateFirmwareFromDifferentTenant() throws Exception {
153   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  152 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
154 153 firmwareInfo.setDeviceProfileId(deviceProfileId);
155 154 firmwareInfo.setType(FIRMWARE);
156 155 firmwareInfo.setTitle(TITLE);
157 156 firmwareInfo.setVersion(VERSION);
158 157
159   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  158 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
160 159
161 160 loginDifferentTenant();
162   - doPost("/api/firmware", savedFirmwareInfo, FirmwareInfo.class, status().isForbidden());
  161 + doPost("/api/otaPackage", savedFirmwareInfo, OtaPackageInfo.class, status().isForbidden());
163 162 deleteDifferentTenant();
164 163 }
165 164
166 165 @Test
167 166 public void testFindFirmwareInfoById() throws Exception {
168   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  167 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
169 168 firmwareInfo.setDeviceProfileId(deviceProfileId);
170 169 firmwareInfo.setType(FIRMWARE);
171 170 firmwareInfo.setTitle(TITLE);
172 171 firmwareInfo.setVersion(VERSION);
173 172
174   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  173 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
175 174
176   - FirmwareInfo foundFirmware = doGet("/api/firmware/info/" + savedFirmwareInfo.getId().getId().toString(), FirmwareInfo.class);
  175 + OtaPackageInfo foundFirmware = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class);
177 176 Assert.assertNotNull(foundFirmware);
178 177 Assert.assertEquals(savedFirmwareInfo, foundFirmware);
179 178 }
180 179
181 180 @Test
182 181 public void testFindFirmwareById() throws Exception {
183   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  182 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
184 183 firmwareInfo.setDeviceProfileId(deviceProfileId);
185 184 firmwareInfo.setType(FIRMWARE);
186 185 firmwareInfo.setTitle(TITLE);
187 186 firmwareInfo.setVersion(VERSION);
188 187
189   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  188 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
190 189
191 190 MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array());
192 191
193   - Firmware savedFirmware = savaData("/api/firmware/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
  192 + OtaPackage savedFirmware = savaData("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
194 193
195   - Firmware foundFirmware = doGet("/api/firmware/" + savedFirmwareInfo.getId().getId().toString(), Firmware.class);
  194 + OtaPackage foundFirmware = doGet("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString(), OtaPackage.class);
196 195 Assert.assertNotNull(foundFirmware);
197 196 Assert.assertEquals(savedFirmware, foundFirmware);
198 197 }
199 198
200 199 @Test
201 200 public void testDeleteFirmware() throws Exception {
202   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  201 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
203 202 firmwareInfo.setDeviceProfileId(deviceProfileId);
204 203 firmwareInfo.setType(FIRMWARE);
205 204 firmwareInfo.setTitle(TITLE);
206 205 firmwareInfo.setVersion(VERSION);
207 206
208   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  207 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
209 208
210   - doDelete("/api/firmware/" + savedFirmwareInfo.getId().getId().toString())
  209 + doDelete("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString())
211 210 .andExpect(status().isOk());
212 211
213   - doGet("/api/firmware/info/" + savedFirmwareInfo.getId().getId().toString())
  212 + doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString())
214 213 .andExpect(status().isNotFound());
215 214 }
216 215
217 216 @Test
218 217 public void testFindTenantFirmwares() throws Exception {
219   - List<FirmwareInfo> firmwares = new ArrayList<>();
  218 + List<OtaPackageInfo> otaPackages = new ArrayList<>();
220 219 for (int i = 0; i < 165; i++) {
221   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  220 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
222 221 firmwareInfo.setDeviceProfileId(deviceProfileId);
223 222 firmwareInfo.setType(FIRMWARE);
224 223 firmwareInfo.setTitle(TITLE);
225 224 firmwareInfo.setVersion(VERSION + i);
226 225
227   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  226 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
228 227
229 228 if (i > 100) {
230 229 MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array());
231 230
232   - Firmware savedFirmware = savaData("/api/firmware/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
233   - firmwares.add(new FirmwareInfo(savedFirmware));
  231 + OtaPackage savedFirmware = savaData("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
  232 + otaPackages.add(new OtaPackageInfo(savedFirmware));
234 233 } else {
235   - firmwares.add(savedFirmwareInfo);
  234 + otaPackages.add(savedFirmwareInfo);
236 235 }
237 236 }
238 237
239   - List<FirmwareInfo> loadedFirmwares = new ArrayList<>();
  238 + List<OtaPackageInfo> loadedFirmwares = new ArrayList<>();
240 239 PageLink pageLink = new PageLink(24);
241   - PageData<FirmwareInfo> pageData;
  240 + PageData<OtaPackageInfo> pageData;
242 241 do {
243   - pageData = doGetTypedWithPageLink("/api/firmwares?",
  242 + pageData = doGetTypedWithPageLink("/api/otaPackages?",
244 243 new TypeReference<>() {
245 244 }, pageLink);
246 245 loadedFirmwares.addAll(pageData.getData());
... ... @@ -249,41 +248,41 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
249 248 }
250 249 } while (pageData.hasNext());
251 250
252   - Collections.sort(firmwares, idComparator);
  251 + Collections.sort(otaPackages, idComparator);
253 252 Collections.sort(loadedFirmwares, idComparator);
254 253
255   - Assert.assertEquals(firmwares, loadedFirmwares);
  254 + Assert.assertEquals(otaPackages, loadedFirmwares);
256 255 }
257 256
258 257 @Test
259 258 public void testFindTenantFirmwaresByHasData() throws Exception {
260   - List<FirmwareInfo> firmwaresWithData = new ArrayList<>();
261   - List<FirmwareInfo> firmwaresWithoutData = new ArrayList<>();
  259 + List<OtaPackageInfo> otaPackagesWithData = new ArrayList<>();
  260 + List<OtaPackageInfo> otaPackagesWithoutData = new ArrayList<>();
262 261
263 262 for (int i = 0; i < 165; i++) {
264   - FirmwareInfo firmwareInfo = new FirmwareInfo();
  263 + OtaPackageInfo firmwareInfo = new OtaPackageInfo();
265 264 firmwareInfo.setDeviceProfileId(deviceProfileId);
266 265 firmwareInfo.setType(FIRMWARE);
267 266 firmwareInfo.setTitle(TITLE);
268 267 firmwareInfo.setVersion(VERSION + i);
269 268
270   - FirmwareInfo savedFirmwareInfo = save(firmwareInfo);
  269 + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo);
271 270
272 271 if (i > 100) {
273 272 MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array());
274 273
275   - Firmware savedFirmware = savaData("/api/firmware/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
276   - firmwaresWithData.add(new FirmwareInfo(savedFirmware));
  274 + OtaPackage savedFirmware = savaData("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString() + "?checksum={checksum}&checksumAlgorithm={checksumAlgorithm}", testData, CHECKSUM, CHECKSUM_ALGORITHM);
  275 + otaPackagesWithData.add(new OtaPackageInfo(savedFirmware));
277 276 } else {
278   - firmwaresWithoutData.add(savedFirmwareInfo);
  277 + otaPackagesWithoutData.add(savedFirmwareInfo);
279 278 }
280 279 }
281 280
282   - List<FirmwareInfo> loadedFirmwaresWithData = new ArrayList<>();
  281 + List<OtaPackageInfo> loadedFirmwaresWithData = new ArrayList<>();
283 282 PageLink pageLink = new PageLink(24);
284   - PageData<FirmwareInfo> pageData;
  283 + PageData<OtaPackageInfo> pageData;
285 284 do {
286   - pageData = doGetTypedWithPageLink("/api/firmwares/" + deviceProfileId.toString() + "/FIRMWARE/true?",
  285 + pageData = doGetTypedWithPageLink("/api/otaPackages/" + deviceProfileId.toString() + "/FIRMWARE/true?",
287 286 new TypeReference<>() {
288 287 }, pageLink);
289 288 loadedFirmwaresWithData.addAll(pageData.getData());
... ... @@ -292,10 +291,10 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
292 291 }
293 292 } while (pageData.hasNext());
294 293
295   - List<FirmwareInfo> loadedFirmwaresWithoutData = new ArrayList<>();
  294 + List<OtaPackageInfo> loadedFirmwaresWithoutData = new ArrayList<>();
296 295 pageLink = new PageLink(24);
297 296 do {
298   - pageData = doGetTypedWithPageLink("/api/firmwares/" + deviceProfileId.toString() + "/FIRMWARE/false?",
  297 + pageData = doGetTypedWithPageLink("/api/otaPackages/" + deviceProfileId.toString() + "/FIRMWARE/false?",
299 298 new TypeReference<>() {
300 299 }, pageLink);
301 300 loadedFirmwaresWithoutData.addAll(pageData.getData());
... ... @@ -304,25 +303,25 @@ public abstract class BaseFirmwareControllerTest extends AbstractControllerTest
304 303 }
305 304 } while (pageData.hasNext());
306 305
307   - Collections.sort(firmwaresWithData, idComparator);
308   - Collections.sort(firmwaresWithoutData, idComparator);
  306 + Collections.sort(otaPackagesWithData, idComparator);
  307 + Collections.sort(otaPackagesWithoutData, idComparator);
309 308 Collections.sort(loadedFirmwaresWithData, idComparator);
310 309 Collections.sort(loadedFirmwaresWithoutData, idComparator);
311 310
312   - Assert.assertEquals(firmwaresWithData, loadedFirmwaresWithData);
313   - Assert.assertEquals(firmwaresWithoutData, loadedFirmwaresWithoutData);
  311 + Assert.assertEquals(otaPackagesWithData, loadedFirmwaresWithData);
  312 + Assert.assertEquals(otaPackagesWithoutData, loadedFirmwaresWithoutData);
314 313 }
315 314
316 315
317   - private FirmwareInfo save(FirmwareInfo firmwareInfo) throws Exception {
318   - return doPost("/api/firmware", firmwareInfo, FirmwareInfo.class);
  316 + private OtaPackageInfo save(OtaPackageInfo firmwareInfo) throws Exception {
  317 + return doPost("/api/otaPackage", firmwareInfo, OtaPackageInfo.class);
319 318 }
320 319
321   - protected Firmware savaData(String urlTemplate, MockMultipartFile content, String... params) throws Exception {
  320 + protected OtaPackage savaData(String urlTemplate, MockMultipartFile content, String... params) throws Exception {
322 321 MockMultipartHttpServletRequestBuilder postRequest = MockMvcRequestBuilders.multipart(urlTemplate, params);
323 322 postRequest.file(content);
324 323 setJwtToken(postRequest);
325   - return readResponse(mockMvc.perform(postRequest).andExpect(status().isOk()), Firmware.class);
  324 + return readResponse(mockMvc.perform(postRequest).andExpect(status().isOk()), OtaPackage.class);
326 325 }
327 326
328 327 }
... ...
application/src/test/java/org/thingsboard/server/controller/sql/OtaPackageControllerSqlTest.java renamed from application/src/test/java/org/thingsboard/server/controller/sql/FirmwareControllerSqlTest.java
... ... @@ -15,9 +15,9 @@
15 15 */
16 16 package org.thingsboard.server.controller.sql;
17 17
18   -import org.thingsboard.server.controller.BaseFirmwareControllerTest;
  18 +import org.thingsboard.server.controller.BaseOtaPackageControllerTest;
19 19 import org.thingsboard.server.dao.service.DaoSqlTest;
20 20
21 21 @DaoSqlTest
22   -public class FirmwareControllerSqlTest extends BaseFirmwareControllerTest {
  22 +public class OtaPackageControllerSqlTest extends BaseOtaPackageControllerTest {
23 23 }
... ...
common/cache/src/main/java/org/thingsboard/server/cache/ota/CaffeineOtaPackageCache.java renamed from common/cache/src/main/java/org/thingsboard/server/cache/firmware/CaffeineFirmwareCache.java
... ... @@ -13,19 +13,19 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.cache.firmware;
  16 +package org.thingsboard.server.cache.ota;
17 17
18 18 import lombok.RequiredArgsConstructor;
19 19 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
20 20 import org.springframework.cache.CacheManager;
21 21 import org.springframework.stereotype.Service;
22 22
23   -import static org.thingsboard.server.common.data.CacheConstants.FIRMWARE_CACHE;
  23 +import static org.thingsboard.server.common.data.CacheConstants.OTA_PACKAGE_CACHE;
24 24
25 25 @Service
26 26 @ConditionalOnProperty(prefix = "cache", value = "type", havingValue = "caffeine", matchIfMissing = true)
27 27 @RequiredArgsConstructor
28   -public class CaffeineFirmwareCache implements FirmwareDataCache {
  28 +public class CaffeineOtaPackageCache implements OtaPackageDataCache {
29 29
30 30 private final CacheManager cacheManager;
31 31
... ... @@ -36,7 +36,7 @@ public class CaffeineFirmwareCache implements FirmwareDataCache {
36 36
37 37 @Override
38 38 public byte[] get(String key, int chunkSize, int chunk) {
39   - byte[] data = cacheManager.getCache(FIRMWARE_CACHE).get(key, byte[].class);
  39 + byte[] data = cacheManager.getCache(OTA_PACKAGE_CACHE).get(key, byte[].class);
40 40
41 41 if (chunkSize < 1) {
42 42 return data;
... ... @@ -58,11 +58,11 @@ public class CaffeineFirmwareCache implements FirmwareDataCache {
58 58
59 59 @Override
60 60 public void put(String key, byte[] value) {
61   - cacheManager.getCache(FIRMWARE_CACHE).putIfAbsent(key, value);
  61 + cacheManager.getCache(OTA_PACKAGE_CACHE).putIfAbsent(key, value);
62 62 }
63 63
64 64 @Override
65 65 public void evict(String key) {
66   - cacheManager.getCache(FIRMWARE_CACHE).evict(key);
  66 + cacheManager.getCache(OTA_PACKAGE_CACHE).evict(key);
67 67 }
68 68 }
... ...
common/cache/src/main/java/org/thingsboard/server/cache/ota/OtaPackageDataCache.java renamed from common/cache/src/main/java/org/thingsboard/server/cache/firmware/FirmwareDataCache.java
... ... @@ -13,9 +13,9 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.cache.firmware;
  16 +package org.thingsboard.server.cache.ota;
17 17
18   -public interface FirmwareDataCache {
  18 +public interface OtaPackageDataCache {
19 19
20 20 byte[] get(String key);
21 21
... ... @@ -25,8 +25,8 @@ public interface FirmwareDataCache {
25 25
26 26 void evict(String key);
27 27
28   - default boolean has(String firmwareId) {
29   - byte[] data = get(firmwareId, 1, 0);
  28 + default boolean has(String otaPackageId) {
  29 + byte[] data = get(otaPackageId, 1, 0);
30 30 return data != null && data.length > 0;
31 31 }
32 32 }
... ...
common/cache/src/main/java/org/thingsboard/server/cache/ota/RedisOtaPackageDataCache.java renamed from common/cache/src/main/java/org/thingsboard/server/cache/firmware/RedisFirmwareDataCache.java
... ... @@ -13,7 +13,7 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.cache.firmware;
  16 +package org.thingsboard.server.cache.ota;
17 17
18 18 import lombok.RequiredArgsConstructor;
19 19 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
... ... @@ -21,12 +21,12 @@ import org.springframework.data.redis.connection.RedisConnection;
21 21 import org.springframework.data.redis.connection.RedisConnectionFactory;
22 22 import org.springframework.stereotype.Service;
23 23
24   -import static org.thingsboard.server.common.data.CacheConstants.FIRMWARE_CACHE;
  24 +import static org.thingsboard.server.common.data.CacheConstants.OTA_PACKAGE_CACHE;
25 25
26 26 @Service
27 27 @ConditionalOnProperty(prefix = "cache", value = "type", havingValue = "redis")
28 28 @RequiredArgsConstructor
29   -public class RedisFirmwareDataCache implements FirmwareDataCache {
  29 +public class RedisOtaPackageDataCache implements OtaPackageDataCache {
30 30
31 31 private final RedisConnectionFactory redisConnectionFactory;
32 32
... ... @@ -39,30 +39,30 @@ public class RedisFirmwareDataCache implements FirmwareDataCache {
39 39 public byte[] get(String key, int chunkSize, int chunk) {
40 40 try (RedisConnection connection = redisConnectionFactory.getConnection()) {
41 41 if (chunkSize == 0) {
42   - return connection.get(toFirmwareCacheKey(key));
  42 + return connection.get(toOtaPackageCacheKey(key));
43 43 }
44 44
45 45 int startIndex = chunkSize * chunk;
46 46 int endIndex = startIndex + chunkSize - 1;
47   - return connection.getRange(toFirmwareCacheKey(key), startIndex, endIndex);
  47 + return connection.getRange(toOtaPackageCacheKey(key), startIndex, endIndex);
48 48 }
49 49 }
50 50
51 51 @Override
52 52 public void put(String key, byte[] value) {
53 53 try (RedisConnection connection = redisConnectionFactory.getConnection()) {
54   - connection.set(toFirmwareCacheKey(key), value);
  54 + connection.set(toOtaPackageCacheKey(key), value);
55 55 }
56 56 }
57 57
58 58 @Override
59 59 public void evict(String key) {
60 60 try (RedisConnection connection = redisConnectionFactory.getConnection()) {
61   - connection.del(toFirmwareCacheKey(key));
  61 + connection.del(toOtaPackageCacheKey(key));
62 62 }
63 63 }
64 64
65   - private byte[] toFirmwareCacheKey(String key) {
66   - return String.format("%s::%s", FIRMWARE_CACHE, key).getBytes();
  65 + private byte[] toOtaPackageCacheKey(String key) {
  66 + return String.format("%s::%s", OTA_PACKAGE_CACHE, key).getBytes();
67 67 }
68 68 }
... ...
... ... @@ -27,6 +27,7 @@ import org.thingsboard.server.common.data.id.DeviceId;
27 27 import org.thingsboard.server.common.data.id.DeviceProfileId;
28 28 import org.thingsboard.server.common.data.id.EdgeId;
29 29 import org.thingsboard.server.common.data.id.TenantId;
  30 +import org.thingsboard.server.common.data.ota.OtaPackageType;
30 31 import org.thingsboard.server.common.data.page.PageData;
31 32 import org.thingsboard.server.common.data.page.PageLink;
32 33 import org.thingsboard.server.common.data.security.DeviceCredentials;
... ... @@ -63,9 +64,9 @@ public interface DeviceService {
63 64
64 65 PageData<Device> findDevicesByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink);
65 66
66   - PageData<Device> findDevicesByTenantIdAndTypeAndEmptyFirmware(TenantId tenantId, String type, PageLink pageLink);
  67 + PageData<Device> findDevicesByTenantIdAndTypeAndEmptyOtaPackage(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType type, PageLink pageLink);
67 68
68   - PageData<Device> findDevicesByTenantIdAndTypeAndEmptySoftware(TenantId tenantId, String type, PageLink pageLink);
  69 + Long countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType otaPackageType);
69 70
70 71 PageData<DeviceInfo> findDeviceInfosByTenantIdAndType(TenantId tenantId, String type, PageLink pageLink);
71 72
... ...
common/dao-api/src/main/java/org/thingsboard/server/dao/ota/OtaPackageService.java renamed from common/dao-api/src/main/java/org/thingsboard/server/dao/firmware/FirmwareService.java
... ... @@ -13,40 +13,40 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.firmware;
  16 +package org.thingsboard.server.dao.ota;
17 17
18 18 import com.google.common.util.concurrent.ListenableFuture;
19   -import org.thingsboard.server.common.data.Firmware;
20   -import org.thingsboard.server.common.data.FirmwareInfo;
21   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
22   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  19 +import org.thingsboard.server.common.data.OtaPackage;
  20 +import org.thingsboard.server.common.data.OtaPackageInfo;
  21 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  22 +import org.thingsboard.server.common.data.ota.OtaPackageType;
23 23 import org.thingsboard.server.common.data.id.DeviceProfileId;
24   -import org.thingsboard.server.common.data.id.FirmwareId;
  24 +import org.thingsboard.server.common.data.id.OtaPackageId;
25 25 import org.thingsboard.server.common.data.id.TenantId;
26 26 import org.thingsboard.server.common.data.page.PageData;
27 27 import org.thingsboard.server.common.data.page.PageLink;
28 28
29 29 import java.nio.ByteBuffer;
30 30
31   -public interface FirmwareService {
  31 +public interface OtaPackageService {
32 32
33   - FirmwareInfo saveFirmwareInfo(FirmwareInfo firmwareInfo);
  33 + OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo);
34 34
35   - Firmware saveFirmware(Firmware firmware);
  35 + OtaPackage saveOtaPackage(OtaPackage otaPackage);
36 36
37 37 String generateChecksum(ChecksumAlgorithm checksumAlgorithm, ByteBuffer data);
38 38
39   - Firmware findFirmwareById(TenantId tenantId, FirmwareId firmwareId);
  39 + OtaPackage findOtaPackageById(TenantId tenantId, OtaPackageId otaPackageId);
40 40
41   - FirmwareInfo findFirmwareInfoById(TenantId tenantId, FirmwareId firmwareId);
  41 + OtaPackageInfo findOtaPackageInfoById(TenantId tenantId, OtaPackageId otaPackageId);
42 42
43   - ListenableFuture<FirmwareInfo> findFirmwareInfoByIdAsync(TenantId tenantId, FirmwareId firmwareId);
  43 + ListenableFuture<OtaPackageInfo> findOtaPackageInfoByIdAsync(TenantId tenantId, OtaPackageId otaPackageId);
44 44
45   - PageData<FirmwareInfo> findTenantFirmwaresByTenantId(TenantId tenantId, PageLink pageLink);
  45 + PageData<OtaPackageInfo> findTenantOtaPackagesByTenantId(TenantId tenantId, PageLink pageLink);
46 46
47   - PageData<FirmwareInfo> findTenantFirmwaresByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, FirmwareType firmwareType, boolean hasData, PageLink pageLink);
  47 + PageData<OtaPackageInfo> findTenantOtaPackagesByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType otaPackageType, boolean hasData, PageLink pageLink);
48 48
49   - void deleteFirmware(TenantId tenantId, FirmwareId firmwareId);
  49 + void deleteOtaPackage(TenantId tenantId, OtaPackageId otaPackageId);
50 50
51   - void deleteFirmwaresByTenantId(TenantId tenantId);
  51 + void deleteOtaPackagesByTenantId(TenantId tenantId);
52 52 }
... ...
... ... @@ -29,5 +29,5 @@ public class CacheConstants {
29 29 public static final String DEVICE_PROFILE_CACHE = "deviceProfiles";
30 30 public static final String ATTRIBUTES_CACHE = "attributes";
31 31 public static final String TOKEN_OUTDATAGE_TIME_CACHE = "tokensOutdatageTime";
32   - public static final String FIRMWARE_CACHE = "firmwares";
  32 + public static final String OTA_PACKAGE_CACHE = "otaPackages";
33 33 }
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.data.device.data.DeviceData;
23 23 import org.thingsboard.server.common.data.id.CustomerId;
24 24 import org.thingsboard.server.common.data.id.DeviceId;
25 25 import org.thingsboard.server.common.data.id.DeviceProfileId;
26   -import org.thingsboard.server.common.data.id.FirmwareId;
  26 +import org.thingsboard.server.common.data.id.OtaPackageId;
27 27 import org.thingsboard.server.common.data.id.TenantId;
28 28 import org.thingsboard.server.common.data.validation.NoXss;
29 29
... ... @@ -32,7 +32,7 @@ import java.io.IOException;
32 32
33 33 @EqualsAndHashCode(callSuper = true)
34 34 @Slf4j
35   -public class Device extends SearchTextBasedWithAdditionalInfo<DeviceId> implements HasName, HasTenantId, HasCustomerId, HasFirmware {
  35 +public class Device extends SearchTextBasedWithAdditionalInfo<DeviceId> implements HasName, HasTenantId, HasCustomerId, HasOtaPackage {
36 36
37 37 private static final long serialVersionUID = 2807343040519543363L;
38 38
... ... @@ -49,8 +49,8 @@ public class Device extends SearchTextBasedWithAdditionalInfo<DeviceId> implemen
49 49 @JsonIgnore
50 50 private byte[] deviceDataBytes;
51 51
52   - private FirmwareId firmwareId;
53   - private FirmwareId softwareId;
  52 + private OtaPackageId firmwareId;
  53 + private OtaPackageId softwareId;
54 54
55 55 public Device() {
56 56 super();
... ... @@ -167,19 +167,19 @@ public class Device extends SearchTextBasedWithAdditionalInfo<DeviceId> implemen
167 167 return getName();
168 168 }
169 169
170   - public FirmwareId getFirmwareId() {
  170 + public OtaPackageId getFirmwareId() {
171 171 return firmwareId;
172 172 }
173 173
174   - public void setFirmwareId(FirmwareId firmwareId) {
  174 + public void setFirmwareId(OtaPackageId firmwareId) {
175 175 this.firmwareId = firmwareId;
176 176 }
177 177
178   - public FirmwareId getSoftwareId() {
  178 + public OtaPackageId getSoftwareId() {
179 179 return softwareId;
180 180 }
181 181
182   - public void setSoftwareId(FirmwareId softwareId) {
  182 + public void setSoftwareId(OtaPackageId softwareId) {
183 183 this.softwareId = softwareId;
184 184 }
185 185
... ...
... ... @@ -23,7 +23,7 @@ import lombok.extern.slf4j.Slf4j;
23 23 import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
24 24 import org.thingsboard.server.common.data.id.DashboardId;
25 25 import org.thingsboard.server.common.data.id.DeviceProfileId;
26   -import org.thingsboard.server.common.data.id.FirmwareId;
  26 +import org.thingsboard.server.common.data.id.OtaPackageId;
27 27 import org.thingsboard.server.common.data.id.RuleChainId;
28 28 import org.thingsboard.server.common.data.id.TenantId;
29 29 import org.thingsboard.server.common.data.validation.NoXss;
... ... @@ -37,7 +37,7 @@ import static org.thingsboard.server.common.data.SearchTextBasedWithAdditionalIn
37 37 @Data
38 38 @EqualsAndHashCode(callSuper = true)
39 39 @Slf4j
40   -public class DeviceProfile extends SearchTextBased<DeviceProfileId> implements HasName, HasTenantId, HasFirmware {
  40 +public class DeviceProfile extends SearchTextBased<DeviceProfileId> implements HasName, HasTenantId, HasOtaPackage {
41 41
42 42 private TenantId tenantId;
43 43 @NoXss
... ... @@ -60,9 +60,9 @@ public class DeviceProfile extends SearchTextBased<DeviceProfileId> implements H
60 60 @NoXss
61 61 private String provisionDeviceKey;
62 62
63   - private FirmwareId firmwareId;
  63 + private OtaPackageId firmwareId;
64 64
65   - private FirmwareId softwareId;
  65 + private OtaPackageId softwareId;
66 66
67 67 public DeviceProfile() {
68 68 super();
... ...
... ... @@ -19,5 +19,5 @@ package org.thingsboard.server.common.data;
19 19 * @author Andrew Shvayka
20 20 */
21 21 public enum EntityType {
22   - TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, RULE_CHAIN, RULE_NODE, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, TENANT_PROFILE, DEVICE_PROFILE, API_USAGE_STATE, TB_RESOURCE, FIRMWARE, EDGE;
  22 + TENANT, CUSTOMER, USER, DASHBOARD, ASSET, DEVICE, ALARM, RULE_CHAIN, RULE_NODE, ENTITY_VIEW, WIDGETS_BUNDLE, WIDGET_TYPE, TENANT_PROFILE, DEVICE_PROFILE, API_USAGE_STATE, TB_RESOURCE, OTA_PACKAGE, EDGE;
23 23 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/HasOtaPackage.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/HasFirmware.java
... ... @@ -15,11 +15,11 @@
15 15 */
16 16 package org.thingsboard.server.common.data;
17 17
18   -import org.thingsboard.server.common.data.id.FirmwareId;
  18 +import org.thingsboard.server.common.data.id.OtaPackageId;
19 19
20   -public interface HasFirmware {
  20 +public interface HasOtaPackage {
21 21
22   - FirmwareId getFirmwareId();
  22 + OtaPackageId getFirmwareId();
23 23
24   - FirmwareId getSoftwareId();
  24 + OtaPackageId getSoftwareId();
25 25 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/OtaPackage.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/Firmware.java
... ... @@ -17,27 +17,27 @@ package org.thingsboard.server.common.data;
17 17
18 18 import lombok.Data;
19 19 import lombok.EqualsAndHashCode;
20   -import org.thingsboard.server.common.data.id.FirmwareId;
  20 +import org.thingsboard.server.common.data.id.OtaPackageId;
21 21
22 22 import java.nio.ByteBuffer;
23 23
24 24 @Data
25 25 @EqualsAndHashCode(callSuper = true)
26   -public class Firmware extends FirmwareInfo {
  26 +public class OtaPackage extends OtaPackageInfo {
27 27
28 28 private static final long serialVersionUID = 3091601761339422546L;
29 29
30 30 private transient ByteBuffer data;
31 31
32   - public Firmware() {
  32 + public OtaPackage() {
33 33 super();
34 34 }
35 35
36   - public Firmware(FirmwareId id) {
  36 + public OtaPackage(OtaPackageId id) {
37 37 super(id);
38 38 }
39 39
40   - public Firmware(Firmware firmware) {
  40 + public OtaPackage(OtaPackage firmware) {
41 41 super(firmware);
42 42 this.data = firmware.getData();
43 43 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/OtaPackageInfo.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/FirmwareInfo.java
... ... @@ -19,22 +19,22 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
19 19 import lombok.Data;
20 20 import lombok.EqualsAndHashCode;
21 21 import lombok.extern.slf4j.Slf4j;
22   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
23   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  22 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  23 +import org.thingsboard.server.common.data.ota.OtaPackageType;
24 24 import org.thingsboard.server.common.data.id.DeviceProfileId;
25   -import org.thingsboard.server.common.data.id.FirmwareId;
  25 +import org.thingsboard.server.common.data.id.OtaPackageId;
26 26 import org.thingsboard.server.common.data.id.TenantId;
27 27
28 28 @Slf4j
29 29 @Data
30 30 @EqualsAndHashCode(callSuper = true)
31   -public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> implements HasName, HasTenantId {
  31 +public class OtaPackageInfo extends SearchTextBasedWithAdditionalInfo<OtaPackageId> implements HasName, HasTenantId {
32 32
33 33 private static final long serialVersionUID = 3168391583570815419L;
34 34
35 35 private TenantId tenantId;
36 36 private DeviceProfileId deviceProfileId;
37   - private FirmwareType type;
  37 + private OtaPackageType type;
38 38 private String title;
39 39 private String version;
40 40 private boolean hasData;
... ... @@ -45,27 +45,27 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId>
45 45 private Long dataSize;
46 46
47 47
48   - public FirmwareInfo() {
  48 + public OtaPackageInfo() {
49 49 super();
50 50 }
51 51
52   - public FirmwareInfo(FirmwareId id) {
  52 + public OtaPackageInfo(OtaPackageId id) {
53 53 super(id);
54 54 }
55 55
56   - public FirmwareInfo(FirmwareInfo firmwareInfo) {
57   - super(firmwareInfo);
58   - this.tenantId = firmwareInfo.getTenantId();
59   - this.deviceProfileId = firmwareInfo.getDeviceProfileId();
60   - this.type = firmwareInfo.getType();
61   - this.title = firmwareInfo.getTitle();
62   - this.version = firmwareInfo.getVersion();
63   - this.hasData = firmwareInfo.isHasData();
64   - this.fileName = firmwareInfo.getFileName();
65   - this.contentType = firmwareInfo.getContentType();
66   - this.checksumAlgorithm = firmwareInfo.getChecksumAlgorithm();
67   - this.checksum = firmwareInfo.getChecksum();
68   - this.dataSize = firmwareInfo.getDataSize();
  56 + public OtaPackageInfo(OtaPackageInfo otaPackageInfo) {
  57 + super(otaPackageInfo);
  58 + this.tenantId = otaPackageInfo.getTenantId();
  59 + this.deviceProfileId = otaPackageInfo.getDeviceProfileId();
  60 + this.type = otaPackageInfo.getType();
  61 + this.title = otaPackageInfo.getTitle();
  62 + this.version = otaPackageInfo.getVersion();
  63 + this.hasData = otaPackageInfo.isHasData();
  64 + this.fileName = otaPackageInfo.getFileName();
  65 + this.contentType = otaPackageInfo.getContentType();
  66 + this.checksumAlgorithm = otaPackageInfo.getChecksumAlgorithm();
  67 + this.checksum = otaPackageInfo.getChecksum();
  68 + this.dataSize = otaPackageInfo.getDataSize();
69 69 }
70 70
71 71 @Override
... ...
... ... @@ -71,8 +71,8 @@ public class EntityIdFactory {
71 71 return new ApiUsageStateId(uuid);
72 72 case TB_RESOURCE:
73 73 return new TbResourceId(uuid);
74   - case FIRMWARE:
75   - return new FirmwareId(uuid);
  74 + case OTA_PACKAGE:
  75 + return new OtaPackageId(uuid);
76 76 case EDGE:
77 77 return new EdgeId(uuid);
78 78 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/id/OtaPackageId.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/id/FirmwareId.java
... ... @@ -22,23 +22,23 @@ import org.thingsboard.server.common.data.EntityType;
22 22
23 23 import java.util.UUID;
24 24
25   -public class FirmwareId extends UUIDBased implements EntityId {
  25 +public class OtaPackageId extends UUIDBased implements EntityId {
26 26
27 27 private static final long serialVersionUID = 1L;
28 28
29 29 @JsonCreator
30   - public FirmwareId(@JsonProperty("id") UUID id) {
  30 + public OtaPackageId(@JsonProperty("id") UUID id) {
31 31 super(id);
32 32 }
33 33
34   - public static FirmwareId fromString(String firmwareId) {
35   - return new FirmwareId(UUID.fromString(firmwareId));
  34 + public static OtaPackageId fromString(String firmwareId) {
  35 + return new OtaPackageId(UUID.fromString(firmwareId));
36 36 }
37 37
38 38 @JsonIgnore
39 39 @Override
40 40 public EntityType getEntityType() {
41   - return EntityType.FIRMWARE;
  41 + return EntityType.OTA_PACKAGE;
42 42 }
43 43
44 44 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/ota/ChecksumAlgorithm.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/firmware/ChecksumAlgorithm.java
... ... @@ -13,7 +13,7 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.common.data.firmware;
  16 +package org.thingsboard.server.common.data.ota;
17 17
18 18 public enum ChecksumAlgorithm {
19 19 MD5,
... ...
common/data/src/main/java/org/thingsboard/server/common/data/ota/OtaPackageKey.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/firmware/FirmwareKey.java
... ... @@ -13,18 +13,18 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.common.data.firmware;
  16 +package org.thingsboard.server.common.data.ota;
17 17
18 18 import lombok.Getter;
19 19
20   -public enum FirmwareKey {
  20 +public enum OtaPackageKey {
21 21
22 22 TITLE("title"), VERSION("version"), TS("ts"), STATE("state"), SIZE("size"), CHECKSUM("checksum"), CHECKSUM_ALGORITHM("checksum_algorithm");
23 23
24 24 @Getter
25 25 private final String value;
26 26
27   - FirmwareKey(String value) {
  27 + OtaPackageKey(String value) {
28 28 this.value = value;
29 29 }
30 30 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/ota/OtaPackageType.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/firmware/FirmwareType.java
... ... @@ -13,18 +13,18 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.common.data.firmware;
  16 +package org.thingsboard.server.common.data.ota;
17 17
18 18 import lombok.Getter;
19 19
20   -public enum FirmwareType {
  20 +public enum OtaPackageType {
21 21
22 22 FIRMWARE("fw"), SOFTWARE("sw");
23 23
24 24 @Getter
25 25 private final String keyPrefix;
26 26
27   - FirmwareType(String keyPrefix) {
  27 + OtaPackageType(String keyPrefix) {
28 28 this.keyPrefix = keyPrefix;
29 29 }
30 30 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/ota/OtaPackageUpdateStatus.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/firmware/FirmwareUpdateStatus.java
... ... @@ -13,8 +13,8 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.common.data.firmware;
  16 +package org.thingsboard.server.common.data.ota;
17 17
18   -public enum FirmwareUpdateStatus {
  18 +public enum OtaPackageUpdateStatus {
19 19 QUEUED, INITIATED, DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED, FAILED
20 20 }
... ...
common/data/src/main/java/org/thingsboard/server/common/data/ota/OtaPackageUtil.java renamed from common/data/src/main/java/org/thingsboard/server/common/data/firmware/FirmwareUtil.java
... ... @@ -13,21 +13,19 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.common.data.firmware;
  16 +package org.thingsboard.server.common.data.ota;
17 17
18 18 import lombok.extern.slf4j.Slf4j;
19   -import org.thingsboard.server.common.data.HasFirmware;
20   -import org.thingsboard.server.common.data.id.FirmwareId;
  19 +import org.thingsboard.server.common.data.HasOtaPackage;
  20 +import org.thingsboard.server.common.data.id.OtaPackageId;
21 21
22 22 import java.util.ArrayList;
23 23 import java.util.Collections;
24 24 import java.util.List;
25   -
26   -import static org.thingsboard.server.common.data.firmware.FirmwareType.FIRMWARE;
27   -import static org.thingsboard.server.common.data.firmware.FirmwareType.SOFTWARE;
  25 +import java.util.function.Supplier;
28 26
29 27 @Slf4j
30   -public class FirmwareUtil {
  28 +public class OtaPackageUtil {
31 29
32 30 public static final List<String> ALL_FW_ATTRIBUTE_KEYS;
33 31
... ... @@ -35,19 +33,19 @@ public class FirmwareUtil {
35 33
36 34 static {
37 35 ALL_FW_ATTRIBUTE_KEYS = new ArrayList<>();
38   - for (FirmwareKey key : FirmwareKey.values()) {
39   - ALL_FW_ATTRIBUTE_KEYS.add(getAttributeKey(FIRMWARE, key));
  36 + for (OtaPackageKey key : OtaPackageKey.values()) {
  37 + ALL_FW_ATTRIBUTE_KEYS.add(getAttributeKey(OtaPackageType.FIRMWARE, key));
40 38
41 39 }
42 40
43 41 ALL_SW_ATTRIBUTE_KEYS = new ArrayList<>();
44   - for (FirmwareKey key : FirmwareKey.values()) {
45   - ALL_SW_ATTRIBUTE_KEYS.add(getAttributeKey(SOFTWARE, key));
  42 + for (OtaPackageKey key : OtaPackageKey.values()) {
  43 + ALL_SW_ATTRIBUTE_KEYS.add(getAttributeKey(OtaPackageType.SOFTWARE, key));
46 44
47 45 }
48 46 }
49 47
50   - public static List<String> getAttributeKeys(FirmwareType firmwareType) {
  48 + public static List<String> getAttributeKeys(OtaPackageType firmwareType) {
51 49 switch (firmwareType) {
52 50 case FIRMWARE:
53 51 return ALL_FW_ATTRIBUTE_KEYS;
... ... @@ -57,35 +55,46 @@ public class FirmwareUtil {
57 55 return Collections.emptyList();
58 56 }
59 57
60   - public static String getAttributeKey(FirmwareType type, FirmwareKey key) {
  58 + public static String getAttributeKey(OtaPackageType type, OtaPackageKey key) {
61 59 return type.getKeyPrefix() + "_" + key.getValue();
62 60 }
63 61
64   - public static String getTargetTelemetryKey(FirmwareType type, FirmwareKey key) {
  62 + public static String getTargetTelemetryKey(OtaPackageType type, OtaPackageKey key) {
65 63 return getTelemetryKey("target_", type, key);
66 64 }
67 65
68   - public static String getCurrentTelemetryKey(FirmwareType type, FirmwareKey key) {
  66 + public static String getCurrentTelemetryKey(OtaPackageType type, OtaPackageKey key) {
69 67 return getTelemetryKey("current_", type, key);
70 68 }
71 69
72   - private static String getTelemetryKey(String prefix, FirmwareType type, FirmwareKey key) {
  70 + private static String getTelemetryKey(String prefix, OtaPackageType type, OtaPackageKey key) {
73 71 return prefix + type.getKeyPrefix() + "_" + key.getValue();
74 72 }
75 73
76   - public static String getTelemetryKey(FirmwareType type, FirmwareKey key) {
  74 + public static String getTelemetryKey(OtaPackageType type, OtaPackageKey key) {
77 75 return type.getKeyPrefix() + "_" + key.getValue();
78 76 }
79 77
80   - public static FirmwareId getFirmwareId(HasFirmware entity, FirmwareType firmwareType) {
81   - switch (firmwareType) {
  78 + public static OtaPackageId getOtaPackageId(HasOtaPackage entity, OtaPackageType type) {
  79 + switch (type) {
82 80 case FIRMWARE:
83 81 return entity.getFirmwareId();
84 82 case SOFTWARE:
85 83 return entity.getSoftwareId();
86 84 default:
87   - log.warn("Unsupported firmware type: [{}]", firmwareType);
  85 + log.warn("Unsupported ota package type: [{}]", type);
88 86 return null;
89 87 }
90 88 }
  89 +
  90 + public static <T> T getByOtaPackageType(Supplier<T> firmwareSupplier, Supplier<T> softwareSupplier, OtaPackageType type) {
  91 + switch (type) {
  92 + case FIRMWARE:
  93 + return firmwareSupplier.get();
  94 + case SOFTWARE:
  95 + return softwareSupplier.get();
  96 + default:
  97 + throw new RuntimeException("Unsupported OtaPackage type: " + type);
  98 + }
  99 + }
91 100 }
... ...
... ... @@ -38,7 +38,7 @@ public class TbKafkaTopicConfigs {
38 38 private String notificationsProperties;
39 39 @Value("${queue.kafka.topic-properties.js-executor}")
40 40 private String jsExecutorProperties;
41   - @Value("${queue.kafka.topic-properties.fw-updates:}")
  41 + @Value("${queue.kafka.topic-properties.ota-updates:}")
42 42 private String fwUpdatesProperties;
43 43
44 44 @Getter
... ...
... ... @@ -187,14 +187,14 @@ public class AwsSqsMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng
187 187 }
188 188
189 189 @Override
190   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
191   - return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, coreSettings.getFirmwareTopic(),
192   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  190 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  191 + return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, coreSettings.getOtaPackageTopic(),
  192 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
193 193 }
194 194
195 195 @Override
196   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
197   - return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getFirmwareTopic());
  196 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  197 + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getOtaPackageTopic());
198 198 }
199 199
200 200 @PreDestroy
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -177,14 +177,14 @@ public class AwsSqsTbCoreQueueFactory implements TbCoreQueueFactory {
177 177 }
178 178
179 179 @Override
180   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
181   - return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, coreSettings.getFirmwareTopic(),
182   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  180 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  181 + return new TbAwsSqsConsumerTemplate<>(transportApiAdmin, sqsSettings, coreSettings.getOtaPackageTopic(),
  182 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
183 183 }
184 184
185 185 @Override
186   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
187   - return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getFirmwareTopic());
  186 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  187 + return new TbAwsSqsProducerTemplate<>(coreAdmin, sqsSettings, coreSettings.getOtaPackageTopic());
188 188 }
189 189
190 190 @PreDestroy
... ...
... ... @@ -131,13 +131,13 @@ public class InMemoryMonolithQueueFactory implements TbCoreQueueFactory, TbRuleE
131 131 }
132 132
133 133 @Override
134   - public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
135   - return new InMemoryTbQueueConsumer<>(coreSettings.getFirmwareTopic());
  134 + public TbQueueConsumer<TbProtoQueueMsg<TransportProtos.ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  135 + return new InMemoryTbQueueConsumer<>(coreSettings.getOtaPackageTopic());
136 136 }
137 137
138 138 @Override
139   - public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
140   - return new InMemoryTbQueueProducer<>(coreSettings.getFirmwareTopic());
  139 + public TbQueueProducer<TbProtoQueueMsg<TransportProtos.ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  140 + return new InMemoryTbQueueProducer<>(coreSettings.getOtaPackageTopic());
141 141 }
142 142
143 143 @Override
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -277,24 +277,24 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi
277 277 }
278 278
279 279 @Override
280   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
281   - TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder();
  280 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  281 + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder();
282 282 consumerBuilder.settings(kafkaSettings);
283   - consumerBuilder.topic(coreSettings.getFirmwareTopic());
284   - consumerBuilder.clientId("monolith-fw-consumer-" + serviceInfoProvider.getServiceId());
285   - consumerBuilder.groupId("monolith-fw-consumer");
286   - consumerBuilder.decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  283 + consumerBuilder.topic(coreSettings.getOtaPackageTopic());
  284 + consumerBuilder.clientId("monolith-ota-consumer-" + serviceInfoProvider.getServiceId());
  285 + consumerBuilder.groupId("monolith-ota-consumer");
  286 + consumerBuilder.decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
287 287 consumerBuilder.admin(fwUpdatesAdmin);
288 288 consumerBuilder.statsService(consumerStatsService);
289 289 return consumerBuilder.build();
290 290 }
291 291
292 292 @Override
293   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
294   - TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> requestBuilder = TbKafkaProducerTemplate.builder();
  293 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  294 + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> requestBuilder = TbKafkaProducerTemplate.builder();
295 295 requestBuilder.settings(kafkaSettings);
296   - requestBuilder.clientId("monolith-fw-producer-" + serviceInfoProvider.getServiceId());
297   - requestBuilder.defaultTopic(coreSettings.getFirmwareTopic());
  296 + requestBuilder.clientId("monolith-ota-producer-" + serviceInfoProvider.getServiceId());
  297 + requestBuilder.defaultTopic(coreSettings.getOtaPackageTopic());
298 298 requestBuilder.admin(fwUpdatesAdmin);
299 299 return requestBuilder.build();
300 300 }
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -245,24 +245,24 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory {
245 245 }
246 246
247 247 @Override
248   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
249   - TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder();
  248 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  249 + TbKafkaConsumerTemplate.TbKafkaConsumerTemplateBuilder<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> consumerBuilder = TbKafkaConsumerTemplate.builder();
250 250 consumerBuilder.settings(kafkaSettings);
251   - consumerBuilder.topic(coreSettings.getFirmwareTopic());
252   - consumerBuilder.clientId("tb-core-fw-consumer-" + serviceInfoProvider.getServiceId());
253   - consumerBuilder.groupId("tb-core-fw-consumer");
254   - consumerBuilder.decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  251 + consumerBuilder.topic(coreSettings.getOtaPackageTopic());
  252 + consumerBuilder.clientId("tb-core-ota-consumer-" + serviceInfoProvider.getServiceId());
  253 + consumerBuilder.groupId("tb-core-ota-consumer");
  254 + consumerBuilder.decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
255 255 consumerBuilder.admin(fwUpdatesAdmin);
256 256 consumerBuilder.statsService(consumerStatsService);
257 257 return consumerBuilder.build();
258 258 }
259 259
260 260 @Override
261   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
262   - TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> requestBuilder = TbKafkaProducerTemplate.builder();
  261 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  262 + TbKafkaProducerTemplate.TbKafkaProducerTemplateBuilder<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> requestBuilder = TbKafkaProducerTemplate.builder();
263 263 requestBuilder.settings(kafkaSettings);
264   - requestBuilder.clientId("tb-core-fw-producer-" + serviceInfoProvider.getServiceId());
265   - requestBuilder.defaultTopic(coreSettings.getFirmwareTopic());
  264 + requestBuilder.clientId("tb-core-ota-producer-" + serviceInfoProvider.getServiceId());
  265 + requestBuilder.defaultTopic(coreSettings.getOtaPackageTopic());
266 266 requestBuilder.admin(fwUpdatesAdmin);
267 267 return requestBuilder.build();
268 268 }
... ...
... ... @@ -22,9 +22,9 @@ import org.springframework.stereotype.Component;
22 22 import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos.RemoteJsRequest;
24 24 import org.thingsboard.server.gen.js.JsInvokeProtos.RemoteJsResponse;
25   -import org.thingsboard.server.gen.transport.TransportProtos.*;
26 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
27 26 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
  27 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
30 30 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -192,14 +192,14 @@ public class PubSubMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEng
192 192 }
193 193
194 194 @Override
195   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
196   - return new TbPubSubConsumerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getFirmwareTopic(),
197   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  195 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  196 + return new TbPubSubConsumerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getOtaPackageTopic(),
  197 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
198 198 }
199 199
200 200 @Override
201   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
202   - return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getFirmwareTopic());
  201 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  202 + return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getOtaPackageTopic());
203 203 }
204 204
205 205 @Override
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -166,14 +166,14 @@ public class PubSubTbCoreQueueFactory implements TbCoreQueueFactory {
166 166 }
167 167
168 168 @Override
169   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
170   - return new TbPubSubConsumerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getFirmwareTopic(),
171   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  169 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  170 + return new TbPubSubConsumerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getOtaPackageTopic(),
  171 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
172 172 }
173 173
174 174 @Override
175   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
176   - return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getFirmwareTopic());
  175 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  176 + return new TbPubSubProducerTemplate<>(coreAdmin, pubSubSettings, coreSettings.getOtaPackageTopic());
177 177 }
178 178
179 179 @Override
... ...
... ... @@ -24,7 +24,7 @@ import org.thingsboard.server.gen.js.JsInvokeProtos.RemoteJsRequest;
24 24 import org.thingsboard.server.gen.js.JsInvokeProtos.RemoteJsResponse;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
26 26 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
27   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  27 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
30 30 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -190,14 +190,14 @@ public class RabbitMqMonolithQueueFactory implements TbCoreQueueFactory, TbRuleE
190 190 }
191 191
192 192 @Override
193   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
194   - return new TbRabbitMqConsumerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getFirmwareTopic(),
195   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  193 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  194 + return new TbRabbitMqConsumerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getOtaPackageTopic(),
  195 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
196 196 }
197 197
198 198 @Override
199   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
200   - return new TbRabbitMqProducerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getFirmwareTopic());
  199 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  200 + return new TbRabbitMqProducerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getOtaPackageTopic());
201 201 }
202 202
203 203 @Override
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -172,14 +172,14 @@ public class RabbitMqTbCoreQueueFactory implements TbCoreQueueFactory {
172 172 }
173 173
174 174 @Override
175   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
176   - return new TbRabbitMqConsumerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getFirmwareTopic(),
177   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  175 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  176 + return new TbRabbitMqConsumerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getOtaPackageTopic(),
  177 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
178 178 }
179 179
180 180 @Override
181   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
182   - return new TbRabbitMqProducerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getFirmwareTopic());
  181 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  182 + return new TbRabbitMqProducerTemplate<>(coreAdmin, rabbitMqSettings, coreSettings.getOtaPackageTopic());
183 183 }
184 184
185 185 @Override
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -189,14 +189,14 @@ public class ServiceBusMonolithQueueFactory implements TbCoreQueueFactory, TbRul
189 189 }
190 190
191 191 @Override
192   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
193   - return new TbServiceBusConsumerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getFirmwareTopic(),
194   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  192 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  193 + return new TbServiceBusConsumerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getOtaPackageTopic(),
  194 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
195 195 }
196 196
197 197 @Override
198   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
199   - return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getFirmwareTopic());
  198 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  199 + return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getOtaPackageTopic());
200 200 }
201 201
202 202 @Override
... ...
... ... @@ -23,7 +23,7 @@ import org.thingsboard.server.common.msg.queue.ServiceType;
23 23 import org.thingsboard.server.gen.js.JsInvokeProtos;
24 24 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
25 25 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
26   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  26 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
27 27 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
... ... @@ -172,14 +172,14 @@ public class ServiceBusTbCoreQueueFactory implements TbCoreQueueFactory {
172 172 }
173 173
174 174 @Override
175   - public TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer() {
176   - return new TbServiceBusConsumerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getFirmwareTopic(),
177   - msg -> new TbProtoQueueMsg<>(msg.getKey(), ToFirmwareStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
  175 + public TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer() {
  176 + return new TbServiceBusConsumerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getOtaPackageTopic(),
  177 + msg -> new TbProtoQueueMsg<>(msg.getKey(), ToOtaPackageStateServiceMsg.parseFrom(msg.getData()), msg.getHeaders()));
178 178 }
179 179
180 180 @Override
181   - public TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer() {
182   - return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getFirmwareTopic());
  181 + public TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer() {
  182 + return new TbServiceBusProducerTemplate<>(coreAdmin, serviceBusSettings, coreSettings.getOtaPackageTopic());
183 183 }
184 184
185 185 @Override
... ...
... ... @@ -16,7 +16,7 @@
16 16 package org.thingsboard.server.queue.provider;
17 17
18 18 import org.thingsboard.server.gen.js.JsInvokeProtos;
19   -import org.thingsboard.server.gen.transport.TransportProtos.ToFirmwareStateServiceMsg;
  19 +import org.thingsboard.server.gen.transport.TransportProtos.ToOtaPackageStateServiceMsg;
20 20 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
21 21 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
22 22 import org.thingsboard.server.gen.transport.TransportProtos.ToRuleEngineMsg;
... ... @@ -91,14 +91,14 @@ public interface TbCoreQueueFactory extends TbUsageStatsClientQueueFactory {
91 91 *
92 92 * @return
93 93 */
94   - TbQueueConsumer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgConsumer();
  94 + TbQueueConsumer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgConsumer();
95 95
96 96 /**
97 97 * Used to consume messages about firmware update notifications by TB Core Service
98 98 *
99 99 * @return
100 100 */
101   - TbQueueProducer<TbProtoQueueMsg<ToFirmwareStateServiceMsg>> createToFirmwareStateServiceMsgProducer();
  101 + TbQueueProducer<TbProtoQueueMsg<ToOtaPackageStateServiceMsg>> createToOtaPackageStateServiceMsgProducer();
102 102
103 103 /**
104 104 * Used to consume high priority messages by TB Core Service
... ...
... ... @@ -15,7 +15,6 @@
15 15 */
16 16 package org.thingsboard.server.queue.provider;
17 17
18   -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
19 18 import org.springframework.stereotype.Service;
20 19 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
21 20 import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
... ... @@ -25,11 +24,12 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToTransportMsg;
25 24 import org.thingsboard.server.gen.transport.TransportProtos.ToUsageStatsServiceMsg;
26 25 import org.thingsboard.server.queue.TbQueueProducer;
27 26 import org.thingsboard.server.queue.common.TbProtoQueueMsg;
  27 +import org.thingsboard.server.queue.util.TbCoreComponent;
28 28
29 29 import javax.annotation.PostConstruct;
30 30
31 31 @Service
32   -@ConditionalOnExpression("'${service.type:null}'=='monolith' || '${service.type:null}'=='tb-core'")
  32 +@TbCoreComponent
33 33 public class TbCoreQueueProducerProvider implements TbQueueProducerProvider {
34 34
35 35 private final TbCoreQueueFactory tbQueueProvider;
... ...
... ... @@ -26,8 +26,8 @@ public class TbQueueCoreSettings {
26 26 @Value("${queue.core.topic}")
27 27 private String topic;
28 28
29   - @Value("${queue.core.firmware.topic:tb_firmware}")
30   - private String firmwareTopic;
  29 + @Value("${queue.core.ota.topic:tb_ota_package}")
  30 + private String otaPackageTopic;
31 31
32 32 @Value("${queue.core.usage-stats-topic:tb_usage_stats}")
33 33 private String usageStatsTopic;
... ...
... ... @@ -388,7 +388,7 @@ enum ResponseStatus {
388 388 FAILURE = 3;
389 389 }
390 390
391   -message GetFirmwareRequestMsg {
  391 +message GetOtaPackageRequestMsg {
392 392 int64 deviceIdMSB = 1;
393 393 int64 deviceIdLSB = 2;
394 394 int64 tenantIdMSB = 3;
... ... @@ -396,10 +396,10 @@ message GetFirmwareRequestMsg {
396 396 string type = 5;
397 397 }
398 398
399   -message GetFirmwareResponseMsg {
  399 +message GetOtaPackageResponseMsg {
400 400 ResponseStatus responseStatus = 1;
401   - int64 firmwareIdMSB = 2;
402   - int64 firmwareIdLSB = 3;
  401 + int64 otaPackageIdMSB = 2;
  402 + int64 otaPackageIdLSB = 3;
403 403 string type = 4;
404 404 string title = 5;
405 405 string version = 6;
... ... @@ -627,7 +627,7 @@ message TransportApiRequestMsg {
627 627 ProvisionDeviceRequestMsg provisionDeviceRequestMsg = 7;
628 628 ValidateDeviceLwM2MCredentialsRequestMsg validateDeviceLwM2MCredentialsRequestMsg = 8;
629 629 GetResourceRequestMsg resourceRequestMsg = 9;
630   - GetFirmwareRequestMsg firmwareRequestMsg = 10;
  630 + GetOtaPackageRequestMsg otaPackageRequestMsg = 10;
631 631 GetSnmpDevicesRequestMsg snmpDevicesRequestMsg = 11;
632 632 GetDeviceRequestMsg deviceRequestMsg = 12;
633 633 GetDeviceCredentialsRequestMsg deviceCredentialsRequestMsg = 13;
... ... @@ -642,7 +642,7 @@ message TransportApiResponseMsg {
642 642 GetSnmpDevicesResponseMsg snmpDevicesResponseMsg = 5;
643 643 LwM2MResponseMsg lwM2MResponseMsg = 6;
644 644 GetResourceResponseMsg resourceResponseMsg = 7;
645   - GetFirmwareResponseMsg firmwareResponseMsg = 8;
  645 + GetOtaPackageResponseMsg otaPackageResponseMsg = 8;
646 646 GetDeviceResponseMsg deviceResponseMsg = 9;
647 647 GetDeviceCredentialsResponseMsg deviceCredentialsResponseMsg = 10;
648 648 }
... ... @@ -710,13 +710,13 @@ message ToUsageStatsServiceMsg {
710 710 int64 customerIdLSB = 7;
711 711 }
712 712
713   -message ToFirmwareStateServiceMsg {
  713 +message ToOtaPackageStateServiceMsg {
714 714 int64 ts = 1;
715 715 int64 tenantIdMSB = 2;
716 716 int64 tenantIdLSB = 3;
717 717 int64 deviceIdMSB = 4;
718 718 int64 deviceIdLSB = 5;
719   - int64 firmwareIdMSB = 6;
720   - int64 firmwareIdLSB = 7;
  719 + int64 otaPackageIdMSB = 6;
  720 + int64 otaPackageIdLSB = 7;
721 721 string type = 8;
722 722 }
... ...
... ... @@ -44,7 +44,7 @@ import org.thingsboard.server.common.data.device.profile.DeviceProfileTransportC
44 44 import org.thingsboard.server.common.data.device.profile.JsonTransportPayloadConfiguration;
45 45 import org.thingsboard.server.common.data.device.profile.ProtoTransportPayloadConfiguration;
46 46 import org.thingsboard.server.common.data.device.profile.TransportPayloadTypeConfiguration;
47   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  47 +import org.thingsboard.server.common.data.ota.OtaPackageType;
48 48 import org.thingsboard.server.common.data.security.DeviceTokenCredentials;
49 49 import org.thingsboard.server.common.msg.session.FeatureType;
50 50 import org.thingsboard.server.common.msg.session.SessionMsgType;
... ... @@ -350,10 +350,10 @@ public class CoapTransportResource extends AbstractCoapTransportResource {
350 350 new CoapNoOpCallback(exchange));
351 351 break;
352 352 case GET_FIRMWARE_REQUEST:
353   - getFirmwareCallback(sessionInfo, exchange, FirmwareType.FIRMWARE);
  353 + getOtaPackageCallback(sessionInfo, exchange, OtaPackageType.FIRMWARE);
354 354 break;
355 355 case GET_SOFTWARE_REQUEST:
356   - getFirmwareCallback(sessionInfo, exchange, FirmwareType.SOFTWARE);
  356 + getOtaPackageCallback(sessionInfo, exchange, OtaPackageType.SOFTWARE);
357 357 break;
358 358 }
359 359 } catch (AdaptorException e) {
... ... @@ -366,14 +366,14 @@ public class CoapTransportResource extends AbstractCoapTransportResource {
366 366 return new UUID(sessionInfoProto.getSessionIdMSB(), sessionInfoProto.getSessionIdLSB());
367 367 }
368 368
369   - private void getFirmwareCallback(TransportProtos.SessionInfoProto sessionInfo, CoapExchange exchange, FirmwareType firmwareType) {
370   - TransportProtos.GetFirmwareRequestMsg requestMsg = TransportProtos.GetFirmwareRequestMsg.newBuilder()
  369 + private void getOtaPackageCallback(TransportProtos.SessionInfoProto sessionInfo, CoapExchange exchange, OtaPackageType firmwareType) {
  370 + TransportProtos.GetOtaPackageRequestMsg requestMsg = TransportProtos.GetOtaPackageRequestMsg.newBuilder()
371 371 .setTenantIdMSB(sessionInfo.getTenantIdMSB())
372 372 .setTenantIdLSB(sessionInfo.getTenantIdLSB())
373 373 .setDeviceIdMSB(sessionInfo.getDeviceIdMSB())
374 374 .setDeviceIdLSB(sessionInfo.getDeviceIdLSB())
375 375 .setType(firmwareType.name()).build();
376   - transportContext.getTransportService().process(sessionInfo, requestMsg, new FirmwareCallback(exchange));
  376 + transportContext.getTransportService().process(sessionInfo, requestMsg, new OtaPackageCallback(exchange));
377 377 }
378 378
379 379 private TransportProtos.SessionInfoProto lookupAsyncSessionInfo(String token) {
... ... @@ -470,25 +470,25 @@ public class CoapTransportResource extends AbstractCoapTransportResource {
470 470 }
471 471 }
472 472
473   - private class FirmwareCallback implements TransportServiceCallback<TransportProtos.GetFirmwareResponseMsg> {
  473 + private class OtaPackageCallback implements TransportServiceCallback<TransportProtos.GetOtaPackageResponseMsg> {
474 474 private final CoapExchange exchange;
475 475
476   - FirmwareCallback(CoapExchange exchange) {
  476 + OtaPackageCallback(CoapExchange exchange) {
477 477 this.exchange = exchange;
478 478 }
479 479
480 480 @Override
481   - public void onSuccess(TransportProtos.GetFirmwareResponseMsg msg) {
  481 + public void onSuccess(TransportProtos.GetOtaPackageResponseMsg msg) {
482 482 String title = exchange.getQueryParameter("title");
483 483 String version = exchange.getQueryParameter("version");
484 484 if (msg.getResponseStatus().equals(TransportProtos.ResponseStatus.SUCCESS)) {
485 485 if (msg.getTitle().equals(title) && msg.getVersion().equals(version)) {
486   - String firmwareId = new UUID(msg.getFirmwareIdMSB(), msg.getFirmwareIdLSB()).toString();
  486 + String firmwareId = new UUID(msg.getOtaPackageIdMSB(), msg.getOtaPackageIdLSB()).toString();
487 487 String strChunkSize = exchange.getQueryParameter("size");
488 488 String strChunk = exchange.getQueryParameter("chunk");
489 489 int chunkSize = StringUtils.isEmpty(strChunkSize) ? 0 : Integer.parseInt(strChunkSize);
490 490 int chunk = StringUtils.isEmpty(strChunk) ? 0 : Integer.parseInt(strChunk);
491   - exchange.respond(CoAP.ResponseCode.CONTENT, transportContext.getFirmwareDataCache().get(firmwareId, chunkSize, chunk));
  491 + exchange.respond(CoAP.ResponseCode.CONTENT, transportContext.getOtaPackageDataCache().get(firmwareId, chunkSize, chunk));
492 492 } else {
493 493 exchange.respond(CoAP.ResponseCode.BAD_REQUEST);
494 494 }
... ...
... ... @@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.RequestParam;
34 34 import org.springframework.web.bind.annotation.RestController;
35 35 import org.springframework.web.context.request.async.DeferredResult;
36 36 import org.thingsboard.server.common.data.DeviceTransportType;
37   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  37 +import org.thingsboard.server.common.data.ota.OtaPackageType;
38 38 import org.thingsboard.server.common.data.TbTransportService;
39 39 import org.thingsboard.server.common.data.id.DeviceId;
40 40 import org.thingsboard.server.common.transport.SessionMsgListener;
... ... @@ -213,7 +213,7 @@ public class DeviceApiController implements TbTransportService {
213 213 @RequestParam(value = "version") String version,
214 214 @RequestParam(value = "size", required = false, defaultValue = "0") int size,
215 215 @RequestParam(value = "chunk", required = false, defaultValue = "0") int chunk) {
216   - return getFirmwareCallback(deviceToken, title, version, size, chunk, FirmwareType.FIRMWARE);
  216 + return getOtaPackageCallback(deviceToken, title, version, size, chunk, OtaPackageType.FIRMWARE);
217 217 }
218 218
219 219 @RequestMapping(value = "/{deviceToken}/software", method = RequestMethod.GET)
... ... @@ -222,7 +222,7 @@ public class DeviceApiController implements TbTransportService {
222 222 @RequestParam(value = "version") String version,
223 223 @RequestParam(value = "size", required = false, defaultValue = "0") int size,
224 224 @RequestParam(value = "chunk", required = false, defaultValue = "0") int chunk) {
225   - return getFirmwareCallback(deviceToken, title, version, size, chunk, FirmwareType.SOFTWARE);
  225 + return getOtaPackageCallback(deviceToken, title, version, size, chunk, OtaPackageType.SOFTWARE);
226 226 }
227 227
228 228 @RequestMapping(value = "/provision", method = RequestMethod.POST)
... ... @@ -233,17 +233,17 @@ public class DeviceApiController implements TbTransportService {
233 233 return responseWriter;
234 234 }
235 235
236   - private DeferredResult<ResponseEntity> getFirmwareCallback(String deviceToken, String title, String version, int size, int chunk, FirmwareType firmwareType) {
  236 + private DeferredResult<ResponseEntity> getOtaPackageCallback(String deviceToken, String title, String version, int size, int chunk, OtaPackageType firmwareType) {
237 237 DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>();
238 238 transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
239 239 new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
240   - TransportProtos.GetFirmwareRequestMsg requestMsg = TransportProtos.GetFirmwareRequestMsg.newBuilder()
  240 + TransportProtos.GetOtaPackageRequestMsg requestMsg = TransportProtos.GetOtaPackageRequestMsg.newBuilder()
241 241 .setTenantIdMSB(sessionInfo.getTenantIdMSB())
242 242 .setTenantIdLSB(sessionInfo.getTenantIdLSB())
243 243 .setDeviceIdMSB(sessionInfo.getDeviceIdMSB())
244 244 .setDeviceIdLSB(sessionInfo.getDeviceIdLSB())
245 245 .setType(firmwareType.name()).build();
246   - transportContext.getTransportService().process(sessionInfo, requestMsg, new GetFirmwareCallback(responseWriter, title, version, size, chunk));
  246 + transportContext.getTransportService().process(sessionInfo, requestMsg, new GetOtaPackageCallback(responseWriter, title, version, size, chunk));
247 247 }));
248 248 return responseWriter;
249 249 }
... ... @@ -294,14 +294,14 @@ public class DeviceApiController implements TbTransportService {
294 294 }
295 295 }
296 296
297   - private class GetFirmwareCallback implements TransportServiceCallback<TransportProtos.GetFirmwareResponseMsg> {
  297 + private class GetOtaPackageCallback implements TransportServiceCallback<TransportProtos.GetOtaPackageResponseMsg> {
298 298 private final DeferredResult<ResponseEntity> responseWriter;
299 299 private final String title;
300 300 private final String version;
301 301 private final int chuckSize;
302 302 private final int chuck;
303 303
304   - GetFirmwareCallback(DeferredResult<ResponseEntity> responseWriter, String title, String version, int chuckSize, int chuck) {
  304 + GetOtaPackageCallback(DeferredResult<ResponseEntity> responseWriter, String title, String version, int chuckSize, int chuck) {
305 305 this.responseWriter = responseWriter;
306 306 this.title = title;
307 307 this.version = version;
... ... @@ -310,17 +310,17 @@ public class DeviceApiController implements TbTransportService {
310 310 }
311 311
312 312 @Override
313   - public void onSuccess(TransportProtos.GetFirmwareResponseMsg firmwareResponseMsg) {
314   - if (!TransportProtos.ResponseStatus.SUCCESS.equals(firmwareResponseMsg.getResponseStatus())) {
  313 + public void onSuccess(TransportProtos.GetOtaPackageResponseMsg otaPackageResponseMsg) {
  314 + if (!TransportProtos.ResponseStatus.SUCCESS.equals(otaPackageResponseMsg.getResponseStatus())) {
315 315 responseWriter.setResult(new ResponseEntity<>(HttpStatus.NOT_FOUND));
316   - } else if (title.equals(firmwareResponseMsg.getTitle()) && version.equals(firmwareResponseMsg.getVersion())) {
317   - String firmwareId = new UUID(firmwareResponseMsg.getFirmwareIdMSB(), firmwareResponseMsg.getFirmwareIdLSB()).toString();
318   - ByteArrayResource resource = new ByteArrayResource(transportContext.getFirmwareDataCache().get(firmwareId, chuckSize, chuck));
  316 + } else if (title.equals(otaPackageResponseMsg.getTitle()) && version.equals(otaPackageResponseMsg.getVersion())) {
  317 + String otaPackageId = new UUID(otaPackageResponseMsg.getOtaPackageIdMSB(), otaPackageResponseMsg.getOtaPackageIdLSB()).toString();
  318 + ByteArrayResource resource = new ByteArrayResource(transportContext.getOtaPackageDataCache().get(otaPackageId, chuckSize, chuck));
319 319 ResponseEntity<ByteArrayResource> response = ResponseEntity.ok()
320   - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + firmwareResponseMsg.getFileName())
321   - .header("x-filename", firmwareResponseMsg.getFileName())
  320 + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + otaPackageResponseMsg.getFileName())
  321 + .header("x-filename", otaPackageResponseMsg.getFileName())
322 322 .contentLength(resource.contentLength())
323   - .contentType(parseMediaType(firmwareResponseMsg.getContentType()))
  323 + .contentType(parseMediaType(otaPackageResponseMsg.getContentType()))
324 324 .body(resource);
325 325 responseWriter.setResult(response);
326 326 } else {
... ...
... ... @@ -39,13 +39,13 @@ import org.springframework.context.annotation.Lazy;
39 39 import org.springframework.stereotype.Service;
40 40 import org.thingsboard.common.util.JacksonUtil;
41 41 import org.thingsboard.common.util.ThingsBoardExecutors;
42   -import org.thingsboard.server.cache.firmware.FirmwareDataCache;
  42 +import org.thingsboard.server.cache.ota.OtaPackageDataCache;
43 43 import org.thingsboard.server.common.data.Device;
44 44 import org.thingsboard.server.common.data.DeviceProfile;
45   -import org.thingsboard.server.common.data.firmware.FirmwareKey;
46   -import org.thingsboard.server.common.data.firmware.FirmwareType;
47   -import org.thingsboard.server.common.data.firmware.FirmwareUtil;
48   -import org.thingsboard.server.common.data.id.FirmwareId;
  45 +import org.thingsboard.server.common.data.ota.OtaPackageKey;
  46 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  47 +import org.thingsboard.server.common.data.ota.OtaPackageUtil;
  48 +import org.thingsboard.server.common.data.id.OtaPackageId;
49 49 import org.thingsboard.server.common.transport.TransportService;
50 50 import org.thingsboard.server.common.transport.TransportServiceCallback;
51 51 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
... ... @@ -87,8 +87,8 @@ import java.util.stream.Collectors;
87 87
88 88 import static org.eclipse.californium.core.coap.CoAP.ResponseCode.BAD_REQUEST;
89 89 import static org.eclipse.leshan.core.attributes.Attribute.OBJECT_VERSION;
90   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.DOWNLOADED;
91   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.UPDATING;
  90 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.DOWNLOADED;
  91 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.UPDATING;
92 92 import static org.thingsboard.server.common.data.lwm2m.LwM2mConstants.LWM2M_SEPARATOR_PATH;
93 93 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportServerHelper.getValueFromKvProto;
94 94 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.CLIENT_NOT_AUTHORIZED;
... ... @@ -132,7 +132,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
132 132 private final TransportService transportService;
133 133 private final LwM2mTransportContext context;
134 134 public final LwM2MTransportServerConfig config;
135   - public final FirmwareDataCache firmwareDataCache;
  135 + public final OtaPackageDataCache otaPackageDataCache;
136 136 public final LwM2mTransportServerHelper helper;
137 137 private final LwM2MJsonAdaptor adaptor;
138 138 private final TbLwM2MDtlsSessionStore sessionStore;
... ... @@ -143,14 +143,14 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
143 143 public DefaultLwM2MTransportMsgHandler(TransportService transportService, LwM2MTransportServerConfig config, LwM2mTransportServerHelper helper,
144 144 LwM2mClientContext clientContext,
145 145 @Lazy LwM2mTransportRequest lwM2mTransportRequest,
146   - FirmwareDataCache firmwareDataCache,
  146 + OtaPackageDataCache otaPackageDataCache,
147 147 LwM2mTransportContext context, LwM2MJsonAdaptor adaptor, TbLwM2MDtlsSessionStore sessionStore) {
148 148 this.transportService = transportService;
149 149 this.config = config;
150 150 this.helper = helper;
151 151 this.clientContext = clientContext;
152 152 this.lwM2mTransportRequest = lwM2mTransportRequest;
153   - this.firmwareDataCache = firmwareDataCache;
  153 + this.otaPackageDataCache = otaPackageDataCache;
154 154 this.context = context;
155 155 this.adaptor = adaptor;
156 156 this.rpcSubscriptions = new ConcurrentHashMap<>();
... ... @@ -357,14 +357,14 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
357 357 String pathName = tsKvProto.getKv().getKey();
358 358 String pathIdVer = this.getPresentPathIntoProfile(sessionInfo, pathName);
359 359 Object valueNew = getValueFromKvProto(tsKvProto.getKv());
360   - if ((FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.VERSION).equals(pathName)
  360 + if ((OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.VERSION).equals(pathName)
361 361 && (!valueNew.equals(lwM2MClient.getFwUpdate().getCurrentVersion())))
362   - || (FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.TITLE).equals(pathName)
  362 + || (OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.TITLE).equals(pathName)
363 363 && (!valueNew.equals(lwM2MClient.getFwUpdate().getCurrentTitle())))) {
364 364 this.getInfoFirmwareUpdate(lwM2MClient);
365   - } else if ((FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.VERSION).equals(pathName)
  365 + } else if ((OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.VERSION).equals(pathName)
366 366 && (!valueNew.equals(lwM2MClient.getSwUpdate().getCurrentVersion())))
367   - || (FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.TITLE).equals(pathName)
  367 + || (OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.TITLE).equals(pathName)
368 368 && (!valueNew.equals(lwM2MClient.getSwUpdate().getCurrentTitle())))) {
369 369 this.getInfoSoftwareUpdate(lwM2MClient);
370 370 }
... ... @@ -391,7 +391,7 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
391 391 msg.getSharedUpdatedList().forEach(tsKvProto -> {
392 392 String pathName = tsKvProto.getKv().getKey();
393 393 Object valueNew = getValueFromKvProto(tsKvProto.getKv());
394   - if (FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.VERSION).equals(pathName) && !valueNew.equals(lwM2MClient.getFwUpdate().getCurrentVersion())) {
  394 + if (OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.VERSION).equals(pathName) && !valueNew.equals(lwM2MClient.getFwUpdate().getCurrentVersion())) {
395 395 lwM2MClient.getFwUpdate().setCurrentVersion((String) valueNew);
396 396 }
397 397 });
... ... @@ -1344,18 +1344,18 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
1344 1344 if (lwM2MClient.getRegistration().getSupportedVersion(FW_ID) != null) {
1345 1345 SessionInfoProto sessionInfo = this.getSessionInfoOrCloseSession(lwM2MClient);
1346 1346 if (sessionInfo != null) {
1347   - transportService.process(sessionInfo, createFirmwareRequestMsg(sessionInfo, FirmwareType.FIRMWARE.name()),
  1347 + transportService.process(sessionInfo, createOtaPackageRequestMsg(sessionInfo, OtaPackageType.FIRMWARE.name()),
1348 1348 new TransportServiceCallback<>() {
1349 1349 @Override
1350   - public void onSuccess(TransportProtos.GetFirmwareResponseMsg response) {
  1350 + public void onSuccess(TransportProtos.GetOtaPackageResponseMsg response) {
1351 1351 if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())
1352   - && response.getType().equals(FirmwareType.FIRMWARE.name())) {
  1352 + && response.getType().equals(OtaPackageType.FIRMWARE.name())) {
1353 1353 lwM2MClient.getFwUpdate().setCurrentVersion(response.getVersion());
1354 1354 lwM2MClient.getFwUpdate().setCurrentTitle(response.getTitle());
1355   - lwM2MClient.getFwUpdate().setCurrentId(new FirmwareId(new UUID(response.getFirmwareIdMSB(), response.getFirmwareIdLSB())).getId());
  1355 + lwM2MClient.getFwUpdate().setCurrentId(new OtaPackageId(new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB())).getId());
1356 1356 lwM2MClient.getFwUpdate().sendReadObserveInfo(lwM2mTransportRequest);
1357 1357 } else {
1358   - log.trace("Firmware [{}] [{}]", lwM2MClient.getDeviceName(), response.getResponseStatus().toString());
  1358 + log.trace("OtaPackage [{}] [{}]", lwM2MClient.getDeviceName(), response.getResponseStatus().toString());
1359 1359 }
1360 1360 }
1361 1361
... ... @@ -1373,15 +1373,15 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
1373 1373 SessionInfoProto sessionInfo = this.getSessionInfoOrCloseSession(lwM2MClient);
1374 1374 if (sessionInfo != null) {
1375 1375 DefaultLwM2MTransportMsgHandler serviceImpl = this;
1376   - transportService.process(sessionInfo, createFirmwareRequestMsg(sessionInfo, FirmwareType.SOFTWARE.name()),
  1376 + transportService.process(sessionInfo, createOtaPackageRequestMsg(sessionInfo, OtaPackageType.SOFTWARE.name()),
1377 1377 new TransportServiceCallback<>() {
1378 1378 @Override
1379   - public void onSuccess(TransportProtos.GetFirmwareResponseMsg response) {
  1379 + public void onSuccess(TransportProtos.GetOtaPackageResponseMsg response) {
1380 1380 if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())
1381   - && response.getType().equals(FirmwareType.SOFTWARE.name())) {
  1381 + && response.getType().equals(OtaPackageType.SOFTWARE.name())) {
1382 1382 lwM2MClient.getSwUpdate().setCurrentVersion(response.getVersion());
1383 1383 lwM2MClient.getSwUpdate().setCurrentTitle(response.getTitle());
1384   - lwM2MClient.getSwUpdate().setCurrentId(new FirmwareId(new UUID(response.getFirmwareIdMSB(), response.getFirmwareIdLSB())).getId());
  1384 + lwM2MClient.getSwUpdate().setCurrentId(new OtaPackageId(new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB())).getId());
1385 1385 lwM2MClient.getSwUpdate().sendReadObserveInfo(lwM2mTransportRequest);
1386 1386 } else {
1387 1387 log.trace("Software [{}] [{}]", lwM2MClient.getDeviceName(), response.getResponseStatus().toString());
... ... @@ -1397,8 +1397,8 @@ public class DefaultLwM2MTransportMsgHandler implements LwM2mTransportMsgHandler
1397 1397 }
1398 1398 }
1399 1399
1400   - private TransportProtos.GetFirmwareRequestMsg createFirmwareRequestMsg(SessionInfoProto sessionInfo, String nameFwSW) {
1401   - return TransportProtos.GetFirmwareRequestMsg.newBuilder()
  1400 + private TransportProtos.GetOtaPackageRequestMsg createOtaPackageRequestMsg(SessionInfoProto sessionInfo, String nameFwSW) {
  1401 + return TransportProtos.GetOtaPackageRequestMsg.newBuilder()
1402 1402 .setDeviceIdMSB(sessionInfo.getDeviceIdMSB())
1403 1403 .setDeviceIdLSB(sessionInfo.getDeviceIdLSB())
1404 1404 .setTenantIdMSB(sessionInfo.getTenantIdMSB())
... ...
... ... @@ -71,8 +71,8 @@ import java.util.stream.Collectors;
71 71 import static org.eclipse.californium.core.coap.CoAP.ResponseCode.CONTENT;
72 72 import static org.eclipse.leshan.core.ResponseCode.BAD_REQUEST;
73 73 import static org.eclipse.leshan.core.ResponseCode.NOT_FOUND;
74   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.DOWNLOADED;
75   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.FAILED;
  74 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.DOWNLOADED;
  75 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.FAILED;
76 76 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportServerHelper.getContentFormatByResourceModelType;
77 77 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.DEFAULT_TIMEOUT;
78 78 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.FW_PACKAGE_ID;
... ...
... ... @@ -43,10 +43,10 @@ import org.eclipse.leshan.server.registration.Registration;
43 43 import org.nustaq.serialization.FSTConfiguration;
44 44 import org.thingsboard.server.common.data.DeviceProfile;
45 45 import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
46   -import org.thingsboard.server.common.data.firmware.FirmwareKey;
47   -import org.thingsboard.server.common.data.firmware.FirmwareType;
48   -import org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus;
49   -import org.thingsboard.server.common.data.firmware.FirmwareUtil;
  46 +import org.thingsboard.server.common.data.ota.OtaPackageKey;
  47 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  48 +import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus;
  49 +import org.thingsboard.server.common.data.ota.OtaPackageUtil;
50 50 import org.thingsboard.server.common.data.id.TenantId;
51 51 import org.thingsboard.server.common.transport.TransportServiceCallback;
52 52 import org.thingsboard.server.transport.lwm2m.server.client.LwM2mClient;
... ... @@ -77,12 +77,12 @@ import static org.eclipse.leshan.core.model.ResourceModel.Type.OBJLNK;
77 77 import static org.eclipse.leshan.core.model.ResourceModel.Type.OPAQUE;
78 78 import static org.eclipse.leshan.core.model.ResourceModel.Type.STRING;
79 79 import static org.eclipse.leshan.core.model.ResourceModel.Type.TIME;
80   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.DOWNLOADED;
81   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.DOWNLOADING;
82   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.FAILED;
83   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.UPDATED;
84   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.UPDATING;
85   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.VERIFIED;
  80 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.DOWNLOADED;
  81 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.DOWNLOADING;
  82 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.FAILED;
  83 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.UPDATED;
  84 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.UPDATING;
  85 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.VERIFIED;
86 86 import static org.thingsboard.server.common.data.lwm2m.LwM2mConstants.LWM2M_SEPARATOR_KEY;
87 87 import static org.thingsboard.server.common.data.lwm2m.LwM2mConstants.LWM2M_SEPARATOR_PATH;
88 88
... ... @@ -139,7 +139,7 @@ public class LwM2mTransportUtil {
139 139 public static final String ERROR_KEY = "error";
140 140 public static final String METHOD_KEY = "methodName";
141 141
142   - // FirmWare
  142 + // Firmware
143 143 public static final String FW_UPDATE = "Firmware update";
144 144 public static final Integer FW_ID = 5;
145 145 // Package W
... ... @@ -155,7 +155,7 @@ public class LwM2mTransportUtil {
155 155 // Update E
156 156 public static final String FW_UPDATE_ID = "/5/0/2";
157 157
158   - // SoftWare
  158 + // Software
159 159 public static final String SW_UPDATE = "Software update";
160 160 public static final Integer SW_ID = 9;
161 161 // Package W
... ... @@ -354,7 +354,7 @@ public class LwM2mTransportUtil {
354 354 * FirmwareUpdateStatus {
355 355 * DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED, FAILED
356 356 */
357   - public static FirmwareUpdateStatus EqualsFwSateToFirmwareUpdateStatus(StateFw stateFw, UpdateResultFw updateResultFw) {
  357 + public static OtaPackageUpdateStatus EqualsFwSateToFirmwareUpdateStatus(StateFw stateFw, UpdateResultFw updateResultFw) {
358 358 switch (updateResultFw) {
359 359 case INITIAL:
360 360 switch (stateFw) {
... ... @@ -500,7 +500,7 @@ public class LwM2mTransportUtil {
500 500 * FirmwareUpdateStatus {
501 501 * DOWNLOADING, DOWNLOADED, VERIFIED, UPDATING, UPDATED, FAILED
502 502 */
503   - public static FirmwareUpdateStatus EqualsSwSateToFirmwareUpdateStatus(UpdateStateSw updateStateSw, UpdateResultSw updateResultSw) {
  503 + public static OtaPackageUpdateStatus EqualsSwSateToFirmwareUpdateStatus(UpdateStateSw updateStateSw, UpdateResultSw updateResultSw) {
504 504 switch (updateResultSw) {
505 505 case INITIAL:
506 506 switch (updateStateSw) {
... ... @@ -932,15 +932,15 @@ public class LwM2mTransportUtil {
932 932 }
933 933
934 934 public static boolean isFwSwWords (String pathName) {
935   - return FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.VERSION).equals(pathName)
936   - || FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.TITLE).equals(pathName)
937   - || FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.CHECKSUM).equals(pathName)
938   - || FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.CHECKSUM_ALGORITHM).equals(pathName)
939   - || FirmwareUtil.getAttributeKey(FirmwareType.FIRMWARE, FirmwareKey.SIZE).equals(pathName)
940   - || FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.VERSION).equals(pathName)
941   - || FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.TITLE).equals(pathName)
942   - || FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.CHECKSUM).equals(pathName)
943   - || FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.CHECKSUM_ALGORITHM).equals(pathName)
944   - || FirmwareUtil.getAttributeKey(FirmwareType.SOFTWARE, FirmwareKey.SIZE).equals(pathName);
  935 + return OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.VERSION).equals(pathName)
  936 + || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.TITLE).equals(pathName)
  937 + || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.CHECKSUM).equals(pathName)
  938 + || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.CHECKSUM_ALGORITHM).equals(pathName)
  939 + || OtaPackageUtil.getAttributeKey(OtaPackageType.FIRMWARE, OtaPackageKey.SIZE).equals(pathName)
  940 + || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.VERSION).equals(pathName)
  941 + || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.TITLE).equals(pathName)
  942 + || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.CHECKSUM).equals(pathName)
  943 + || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.CHECKSUM_ALGORITHM).equals(pathName)
  944 + || OtaPackageUtil.getAttributeKey(OtaPackageType.SOFTWARE, OtaPackageKey.SIZE).equals(pathName);
945 945 }
946 946 }
... ...
... ... @@ -31,7 +31,7 @@ import org.eclipse.leshan.server.registration.Registration;
31 31 import org.eclipse.leshan.server.security.SecurityInfo;
32 32 import org.thingsboard.server.common.data.Device;
33 33 import org.thingsboard.server.common.data.DeviceProfile;
34   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  34 +import org.thingsboard.server.common.data.ota.OtaPackageType;
35 35 import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse;
36 36 import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto;
37 37 import org.thingsboard.server.gen.transport.TransportProtos.TsKvProto;
... ... @@ -120,8 +120,8 @@ public class LwM2mClient implements Cloneable {
120 120 this.init = false;
121 121 this.queuedRequests = new ConcurrentLinkedQueue<>();
122 122
123   - this.fwUpdate = new LwM2mFwSwUpdate(this, FirmwareType.FIRMWARE);
124   - this.swUpdate = new LwM2mFwSwUpdate(this, FirmwareType.SOFTWARE);
  123 + this.fwUpdate = new LwM2mFwSwUpdate(this, OtaPackageType.FIRMWARE);
  124 + this.swUpdate = new LwM2mFwSwUpdate(this, OtaPackageType.SOFTWARE);
125 125 if (this.credentials != null && this.credentials.hasDeviceInfo()) {
126 126 this.session = createSession(nodeId, sessionId, credentials);
127 127 this.deviceId = new UUID(session.getDeviceIdMSB(), session.getDeviceIdLSB());
... ...
... ... @@ -20,8 +20,8 @@ import lombok.Setter;
20 20 import lombok.extern.slf4j.Slf4j;
21 21 import org.apache.commons.lang3.StringUtils;
22 22 import org.eclipse.leshan.core.request.ContentFormat;
23   -import org.thingsboard.server.common.data.firmware.FirmwareType;
24   -import org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus;
  23 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  24 +import org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus;
25 25 import org.thingsboard.server.gen.transport.TransportProtos;
26 26 import org.thingsboard.server.transport.lwm2m.server.DefaultLwM2MTransportMsgHandler;
27 27 import org.thingsboard.server.transport.lwm2m.server.LwM2mTransportRequest;
... ... @@ -32,11 +32,11 @@ import java.util.List;
32 32 import java.util.UUID;
33 33 import java.util.concurrent.CopyOnWriteArrayList;
34 34
35   -import static org.thingsboard.server.common.data.firmware.FirmwareKey.STATE;
36   -import static org.thingsboard.server.common.data.firmware.FirmwareType.FIRMWARE;
37   -import static org.thingsboard.server.common.data.firmware.FirmwareType.SOFTWARE;
38   -import static org.thingsboard.server.common.data.firmware.FirmwareUpdateStatus.UPDATING;
39   -import static org.thingsboard.server.common.data.firmware.FirmwareUtil.getAttributeKey;
  35 +import static org.thingsboard.server.common.data.ota.OtaPackageKey.STATE;
  36 +import static org.thingsboard.server.common.data.ota.OtaPackageType.FIRMWARE;
  37 +import static org.thingsboard.server.common.data.ota.OtaPackageType.SOFTWARE;
  38 +import static org.thingsboard.server.common.data.ota.OtaPackageUpdateStatus.UPDATING;
  39 +import static org.thingsboard.server.common.data.ota.OtaPackageUtil.getAttributeKey;
40 40 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.FW_NAME_ID;
41 41 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.FW_PACKAGE_ID;
42 42 import static org.thingsboard.server.transport.lwm2m.server.LwM2mTransportUtil.FW_RESULT_ID;
... ... @@ -97,14 +97,14 @@ public class LwM2mFwSwUpdate {
97 97 @Getter
98 98 @Setter
99 99 private volatile boolean infoFwSwUpdate = false;
100   - private final FirmwareType type;
  100 + private final OtaPackageType type;
101 101 @Getter
102 102 LwM2mClient lwM2MClient;
103 103 @Getter
104 104 @Setter
105 105 private final List<String> pendingInfoRequestsStart;
106 106
107   - public LwM2mFwSwUpdate(LwM2mClient lwM2MClient, FirmwareType type) {
  107 + public LwM2mFwSwUpdate(LwM2mClient lwM2MClient, OtaPackageType type) {
108 108 this.lwM2MClient = lwM2MClient;
109 109 this.pendingInfoRequestsStart = new CopyOnWriteArrayList<>();
110 110 this.type = type;
... ... @@ -139,7 +139,7 @@ public class LwM2mFwSwUpdate {
139 139 }
140 140 if (this.pendingInfoRequestsStart.size() == 0) {
141 141 this.infoFwSwUpdate = false;
142   - if (!FirmwareUpdateStatus.DOWNLOADING.name().equals(this.stateUpdate)) {
  142 + if (!OtaPackageUpdateStatus.DOWNLOADING.name().equals(this.stateUpdate)) {
143 143 boolean conditionalStart = this.type.equals(FIRMWARE) ? this.conditionalFwUpdateStart() :
144 144 this.conditionalSwUpdateStart();
145 145 if (conditionalStart) {
... ... @@ -154,12 +154,12 @@ public class LwM2mFwSwUpdate {
154 154 * before operation Write: fw_state = DOWNLOADING
155 155 */
156 156 private void writeFwSwWare(DefaultLwM2MTransportMsgHandler handler, LwM2mTransportRequest request) {
157   - this.stateUpdate = FirmwareUpdateStatus.DOWNLOADING.name();
  157 + this.stateUpdate = OtaPackageUpdateStatus.DOWNLOADING.name();
158 158 // this.observeStateUpdate();
159 159 this.sendLogs(handler, WRITE_REPLACE.name(), LOG_LW2M_INFO, null);
160 160 int chunkSize = 0;
161 161 int chunk = 0;
162   - byte[] firmwareChunk = handler.firmwareDataCache.get(this.currentId.toString(), chunkSize, chunk);
  162 + byte[] firmwareChunk = handler.otaPackageDataCache.get(this.currentId.toString(), chunkSize, chunk);
163 163 String targetIdVer = convertPathFromObjectIdToIdVer(this.pathPackageId, this.lwM2MClient.getRegistration());
164 164 request.sendAllRequest(lwM2MClient.getRegistration(), targetIdVer, WRITE_REPLACE, ContentFormat.OPAQUE.getName(),
165 165 firmwareChunk, handler.config.getTimeout(), null);
... ... @@ -287,10 +287,10 @@ public class LwM2mFwSwUpdate {
287 287 LwM2mTransportUtil.UpdateResultSw.fromUpdateResultSwByCode(updateResult.intValue()).type;
288 288 String key = splitCamelCaseString((String) this.lwM2MClient.getResourceNameByRezId(null, this.pathResultId));
289 289 if (success) {
290   - this.stateUpdate = FirmwareUpdateStatus.UPDATED.name();
  290 + this.stateUpdate = OtaPackageUpdateStatus.UPDATED.name();
291 291 this.sendLogs(handler, EXECUTE.name(), LOG_LW2M_INFO, null);
292 292 } else {
293   - this.stateUpdate = FirmwareUpdateStatus.FAILED.name();
  293 + this.stateUpdate = OtaPackageUpdateStatus.FAILED.name();
294 294 this.sendLogs(handler, EXECUTE.name(), LOG_LW2M_ERROR, value);
295 295 }
296 296 handler.helper.sendParametersOnThingsboardTelemetry(
... ...
... ... @@ -47,8 +47,8 @@ import org.thingsboard.server.common.data.DeviceProfile;
47 47 import org.thingsboard.server.common.data.DeviceTransportType;
48 48 import org.thingsboard.server.common.data.TransportPayloadType;
49 49 import org.thingsboard.server.common.data.device.profile.MqttTopics;
50   -import org.thingsboard.server.common.data.firmware.FirmwareType;
51   -import org.thingsboard.server.common.data.id.FirmwareId;
  50 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  51 +import org.thingsboard.server.common.data.id.OtaPackageId;
52 52 import org.thingsboard.server.common.msg.EncryptionUtil;
53 53 import org.thingsboard.server.common.msg.tools.TbRateLimitsException;
54 54 import org.thingsboard.server.common.transport.SessionMsgListener;
... ... @@ -126,8 +126,8 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
126 126 private volatile InetSocketAddress address;
127 127 private volatile GatewaySessionHandler gatewaySessionHandler;
128 128
129   - private final ConcurrentHashMap<String, String> fwSessions;
130   - private final ConcurrentHashMap<String, Integer> fwChunkSizes;
  129 + private final ConcurrentHashMap<String, String> otaPackSessions;
  130 + private final ConcurrentHashMap<String, Integer> chunkSizes;
131 131
132 132 MqttTransportHandler(MqttTransportContext context, SslHandler sslHandler) {
133 133 this.sessionId = UUID.randomUUID();
... ... @@ -137,8 +137,8 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
137 137 this.sslHandler = sslHandler;
138 138 this.mqttQoSMap = new ConcurrentHashMap<>();
139 139 this.deviceSessionCtx = new DeviceSessionCtx(sessionId, mqttQoSMap, context);
140   - this.fwSessions = new ConcurrentHashMap<>();
141   - this.fwChunkSizes = new ConcurrentHashMap<>();
  140 + this.otaPackSessions = new ConcurrentHashMap<>();
  141 + this.chunkSizes = new ConcurrentHashMap<>();
142 142 }
143 143
144 144 @Override
... ... @@ -320,9 +320,9 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
320 320 TransportProtos.ClaimDeviceMsg claimDeviceMsg = payloadAdaptor.convertToClaimDevice(deviceSessionCtx, mqttMsg);
321 321 transportService.process(deviceSessionCtx.getSessionInfo(), claimDeviceMsg, getPubAckCallback(ctx, msgId, claimDeviceMsg));
322 322 } else if ((fwMatcher = FW_REQUEST_PATTERN.matcher(topicName)).find()) {
323   - getFirmwareCallback(ctx, mqttMsg, msgId, fwMatcher, FirmwareType.FIRMWARE);
  323 + getOtaPackageCallback(ctx, mqttMsg, msgId, fwMatcher, OtaPackageType.FIRMWARE);
324 324 } else if ((fwMatcher = SW_REQUEST_PATTERN.matcher(topicName)).find()) {
325   - getFirmwareCallback(ctx, mqttMsg, msgId, fwMatcher, FirmwareType.SOFTWARE);
  325 + getOtaPackageCallback(ctx, mqttMsg, msgId, fwMatcher, OtaPackageType.SOFTWARE);
326 326 } else {
327 327 transportService.reportActivity(deviceSessionCtx.getSessionInfo());
328 328 ack(ctx, msgId);
... ... @@ -334,38 +334,38 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
334 334 }
335 335 }
336 336
337   - private void getFirmwareCallback(ChannelHandlerContext ctx, MqttPublishMessage mqttMsg, int msgId, Matcher fwMatcher, FirmwareType type) {
  337 + private void getOtaPackageCallback(ChannelHandlerContext ctx, MqttPublishMessage mqttMsg, int msgId, Matcher fwMatcher, OtaPackageType type) {
338 338 String payload = mqttMsg.content().toString(UTF8);
339 339 int chunkSize = StringUtils.isNotEmpty(payload) ? Integer.parseInt(payload) : 0;
340 340 String requestId = fwMatcher.group("requestId");
341 341 int chunk = Integer.parseInt(fwMatcher.group("chunk"));
342 342
343 343 if (chunkSize > 0) {
344   - this.fwChunkSizes.put(requestId, chunkSize);
  344 + this.chunkSizes.put(requestId, chunkSize);
345 345 } else {
346   - chunkSize = fwChunkSizes.getOrDefault(requestId, 0);
  346 + chunkSize = chunkSizes.getOrDefault(requestId, 0);
347 347 }
348 348
349 349 if (chunkSize > context.getMaxPayloadSize()) {
350   - sendFirmwareError(ctx, PAYLOAD_TOO_LARGE);
  350 + sendOtaPackageError(ctx, PAYLOAD_TOO_LARGE);
351 351 return;
352 352 }
353 353
354   - String firmwareId = fwSessions.get(requestId);
  354 + String otaPackageId = otaPackSessions.get(requestId);
355 355
356   - if (firmwareId != null) {
357   - sendFirmware(ctx, mqttMsg.variableHeader().packetId(), firmwareId, requestId, chunkSize, chunk, type);
  356 + if (otaPackageId != null) {
  357 + sendOtaPackage(ctx, mqttMsg.variableHeader().packetId(), otaPackageId, requestId, chunkSize, chunk, type);
358 358 } else {
359 359 TransportProtos.SessionInfoProto sessionInfo = deviceSessionCtx.getSessionInfo();
360   - TransportProtos.GetFirmwareRequestMsg getFirmwareRequestMsg = TransportProtos.GetFirmwareRequestMsg.newBuilder()
  360 + TransportProtos.GetOtaPackageRequestMsg getOtaPackageRequestMsg = TransportProtos.GetOtaPackageRequestMsg.newBuilder()
361 361 .setDeviceIdMSB(sessionInfo.getDeviceIdMSB())
362 362 .setDeviceIdLSB(sessionInfo.getDeviceIdLSB())
363 363 .setTenantIdMSB(sessionInfo.getTenantIdMSB())
364 364 .setTenantIdLSB(sessionInfo.getTenantIdLSB())
365 365 .setType(type.name())
366 366 .build();
367   - transportService.process(deviceSessionCtx.getSessionInfo(), getFirmwareRequestMsg,
368   - new FirmwareCallback(ctx, msgId, getFirmwareRequestMsg, requestId, chunkSize, chunk));
  367 + transportService.process(deviceSessionCtx.getSessionInfo(), getOtaPackageRequestMsg,
  368 + new OtaPackageCallback(ctx, msgId, getOtaPackageRequestMsg, requestId, chunkSize, chunk));
369 369 }
370 370 }
371 371
... ... @@ -425,15 +425,15 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
425 425 }
426 426 }
427 427
428   - private class FirmwareCallback implements TransportServiceCallback<TransportProtos.GetFirmwareResponseMsg> {
  428 + private class OtaPackageCallback implements TransportServiceCallback<TransportProtos.GetOtaPackageResponseMsg> {
429 429 private final ChannelHandlerContext ctx;
430 430 private final int msgId;
431   - private final TransportProtos.GetFirmwareRequestMsg msg;
  431 + private final TransportProtos.GetOtaPackageRequestMsg msg;
432 432 private final String requestId;
433 433 private final int chunkSize;
434 434 private final int chunk;
435 435
436   - FirmwareCallback(ChannelHandlerContext ctx, int msgId, TransportProtos.GetFirmwareRequestMsg msg, String requestId, int chunkSize, int chunk) {
  436 + OtaPackageCallback(ChannelHandlerContext ctx, int msgId, TransportProtos.GetOtaPackageRequestMsg msg, String requestId, int chunkSize, int chunk) {
437 437 this.ctx = ctx;
438 438 this.msgId = msgId;
439 439 this.msg = msg;
... ... @@ -443,13 +443,13 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
443 443 }
444 444
445 445 @Override
446   - public void onSuccess(TransportProtos.GetFirmwareResponseMsg response) {
  446 + public void onSuccess(TransportProtos.GetOtaPackageResponseMsg response) {
447 447 if (TransportProtos.ResponseStatus.SUCCESS.equals(response.getResponseStatus())) {
448   - FirmwareId firmwareId = new FirmwareId(new UUID(response.getFirmwareIdMSB(), response.getFirmwareIdLSB()));
449   - fwSessions.put(requestId, firmwareId.toString());
450   - sendFirmware(ctx, msgId, firmwareId.toString(), requestId, chunkSize, chunk, FirmwareType.valueOf(response.getType()));
  448 + OtaPackageId firmwareId = new OtaPackageId(new UUID(response.getOtaPackageIdMSB(), response.getOtaPackageIdLSB()));
  449 + otaPackSessions.put(requestId, firmwareId.toString());
  450 + sendOtaPackage(ctx, msgId, firmwareId.toString(), requestId, chunkSize, chunk, OtaPackageType.valueOf(response.getType()));
451 451 } else {
452   - sendFirmwareError(ctx, response.getResponseStatus().toString());
  452 + sendOtaPackageError(ctx, response.getResponseStatus().toString());
453 453 }
454 454 }
455 455
... ... @@ -460,11 +460,11 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
460 460 }
461 461 }
462 462
463   - private void sendFirmware(ChannelHandlerContext ctx, int msgId, String firmwareId, String requestId, int chunkSize, int chunk, FirmwareType type) {
  463 + private void sendOtaPackage(ChannelHandlerContext ctx, int msgId, String firmwareId, String requestId, int chunkSize, int chunk, OtaPackageType type) {
464 464 log.trace("[{}] Send firmware [{}] to device!", sessionId, firmwareId);
465 465 ack(ctx, msgId);
466 466 try {
467   - byte[] firmwareChunk = context.getFirmwareDataCache().get(firmwareId, chunkSize, chunk);
  467 + byte[] firmwareChunk = context.getOtaPackageDataCache().get(firmwareId, chunkSize, chunk);
468 468 deviceSessionCtx.getPayloadAdaptor()
469 469 .convertToPublish(deviceSessionCtx, firmwareChunk, requestId, chunk, type)
470 470 .ifPresent(deviceSessionCtx.getChannel()::writeAndFlush);
... ... @@ -473,7 +473,7 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
473 473 }
474 474 }
475 475
476   - private void sendFirmwareError(ChannelHandlerContext ctx, String error) {
  476 + private void sendOtaPackageError(ChannelHandlerContext ctx, String error) {
477 477 log.warn("[{}] {}", sessionId, error);
478 478 deviceSessionCtx.getChannel().writeAndFlush(deviceSessionCtx
479 479 .getPayloadAdaptor()
... ...
... ... @@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j;
30 30 import org.springframework.stereotype.Component;
31 31 import org.springframework.util.StringUtils;
32 32 import org.thingsboard.server.common.data.device.profile.MqttTopics;
33   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  33 +import org.thingsboard.server.common.data.ota.OtaPackageType;
34 34 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
35 35 import org.thingsboard.server.common.transport.adaptor.JsonConverter;
36 36 import org.thingsboard.server.gen.transport.TransportProtos;
... ... @@ -155,7 +155,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
155 155 }
156 156
157 157 @Override
158   - public Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, FirmwareType firmwareType) {
  158 + public Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, OtaPackageType firmwareType) {
159 159 return Optional.of(createMqttPublishMsg(ctx, String.format(DEVICE_SOFTWARE_FIRMWARE_RESPONSES_TOPIC_FORMAT, firmwareType.getKeyPrefix(), requestId, chunk), firmwareChunk));
160 160 }
161 161
... ...
... ... @@ -23,7 +23,7 @@ import io.netty.handler.codec.mqtt.MqttMessage;
23 23 import io.netty.handler.codec.mqtt.MqttMessageType;
24 24 import io.netty.handler.codec.mqtt.MqttPublishMessage;
25 25 import io.netty.handler.codec.mqtt.MqttPublishVariableHeader;
26   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  26 +import org.thingsboard.server.common.data.ota.OtaPackageType;
27 27 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
28 28 import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.ClaimDeviceMsg;
... ... @@ -78,7 +78,7 @@ public interface MqttTransportAdaptor {
78 78
79 79 Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, ProvisionDeviceResponseMsg provisionResponse) throws AdaptorException;
80 80
81   - Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, FirmwareType firmwareType) throws AdaptorException;
  81 + Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, OtaPackageType firmwareType) throws AdaptorException;
82 82
83 83 default MqttPublishMessage createMqttPublishMsg(MqttDeviceAwareSessionContext ctx, String topic, byte[] payloadInBytes) {
84 84 MqttFixedHeader mqttFixedHeader =
... ...
... ... @@ -28,7 +28,7 @@ import lombok.extern.slf4j.Slf4j;
28 28 import org.springframework.stereotype.Component;
29 29 import org.springframework.util.StringUtils;
30 30 import org.thingsboard.server.common.data.device.profile.MqttTopics;
31   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  31 +import org.thingsboard.server.common.data.ota.OtaPackageType;
32 32 import org.thingsboard.server.common.transport.adaptor.AdaptorException;
33 33 import org.thingsboard.server.common.transport.adaptor.JsonConverter;
34 34 import org.thingsboard.server.common.transport.adaptor.ProtoConverter;
... ... @@ -168,7 +168,7 @@ public class ProtoMqttAdaptor implements MqttTransportAdaptor {
168 168 }
169 169
170 170 @Override
171   - public Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, FirmwareType firmwareType) throws AdaptorException {
  171 + public Optional<MqttMessage> convertToPublish(MqttDeviceAwareSessionContext ctx, byte[] firmwareChunk, String requestId, int chunk, OtaPackageType firmwareType) throws AdaptorException {
172 172 return Optional.of(createMqttPublishMsg(ctx, String.format(DEVICE_SOFTWARE_FIRMWARE_RESPONSES_TOPIC_FORMAT, firmwareType.getKeyPrefix(), requestId, chunk), firmwareChunk));
173 173 }
174 174
... ...
... ... @@ -21,14 +21,13 @@ import lombok.Getter;
21 21 import lombok.extern.slf4j.Slf4j;
22 22 import org.springframework.beans.factory.annotation.Autowired;
23 23 import org.thingsboard.common.util.ThingsBoardExecutors;
24   -import org.thingsboard.server.cache.firmware.FirmwareDataCache;
  24 +import org.thingsboard.server.cache.ota.OtaPackageDataCache;
25 25 import org.thingsboard.server.queue.discovery.TbServiceInfoProvider;
26 26 import org.thingsboard.server.queue.scheduler.SchedulerComponent;
27 27
28 28 import javax.annotation.PostConstruct;
29 29 import javax.annotation.PreDestroy;
30 30 import java.util.concurrent.ExecutorService;
31   -import java.util.concurrent.Executors;
32 31
33 32 /**
34 33 * Created by ashvayka on 15.10.18.
... ... @@ -53,7 +52,7 @@ public abstract class TransportContext {
53 52
54 53 @Getter
55 54 @Autowired
56   - private FirmwareDataCache firmwareDataCache;
  55 + private OtaPackageDataCache otaPackageDataCache;
57 56
58 57 @Autowired
59 58 private TransportResourceCache transportResourceCache;
... ...
... ... @@ -29,8 +29,8 @@ import org.thingsboard.server.gen.transport.TransportProtos.GetDeviceRequestMsg;
29 29 import org.thingsboard.server.gen.transport.TransportProtos.GetDeviceResponseMsg;
30 30 import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileRequestMsg;
31 31 import org.thingsboard.server.gen.transport.TransportProtos.GetEntityProfileResponseMsg;
32   -import org.thingsboard.server.gen.transport.TransportProtos.GetFirmwareRequestMsg;
33   -import org.thingsboard.server.gen.transport.TransportProtos.GetFirmwareResponseMsg;
  32 +import org.thingsboard.server.gen.transport.TransportProtos.GetOtaPackageRequestMsg;
  33 +import org.thingsboard.server.gen.transport.TransportProtos.GetOtaPackageResponseMsg;
34 34 import org.thingsboard.server.gen.transport.TransportProtos.GetOrCreateDeviceFromGatewayRequestMsg;
35 35 import org.thingsboard.server.gen.transport.TransportProtos.GetResourceRequestMsg;
36 36 import org.thingsboard.server.gen.transport.TransportProtos.GetResourceResponseMsg;
... ... @@ -115,7 +115,7 @@ public interface TransportService {
115 115
116 116 void process(TransportToDeviceActorMsg msg, TransportServiceCallback<Void> callback);
117 117
118   - void process(SessionInfoProto sessionInfoProto, GetFirmwareRequestMsg msg, TransportServiceCallback<GetFirmwareResponseMsg> callback);
  118 + void process(SessionInfoProto sessionInfoProto, GetOtaPackageRequestMsg msg, TransportServiceCallback<GetOtaPackageResponseMsg> callback);
119 119
120 120 SessionMetaData registerAsyncSession(SessionInfoProto sessionInfo, SessionMsgListener listener);
121 121
... ...
... ... @@ -614,13 +614,13 @@ public class DefaultTransportService implements TransportService {
614 614 }
615 615
616 616 @Override
617   - public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.GetFirmwareRequestMsg msg, TransportServiceCallback<TransportProtos.GetFirmwareResponseMsg> callback) {
  617 + public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.GetOtaPackageRequestMsg msg, TransportServiceCallback<TransportProtos.GetOtaPackageResponseMsg> callback) {
618 618 if (checkLimits(sessionInfo, msg, callback)) {
619 619 TbProtoQueueMsg<TransportProtos.TransportApiRequestMsg> protoMsg =
620   - new TbProtoQueueMsg<>(UUID.randomUUID(), TransportProtos.TransportApiRequestMsg.newBuilder().setFirmwareRequestMsg(msg).build());
  620 + new TbProtoQueueMsg<>(UUID.randomUUID(), TransportProtos.TransportApiRequestMsg.newBuilder().setOtaPackageRequestMsg(msg).build());
621 621
622 622 AsyncCallbackTemplate.withCallback(transportApiRequestTemplate.send(protoMsg), response -> {
623   - callback.onSuccess(response.getValue().getFirmwareResponseMsg());
  623 + callback.onSuccess(response.getValue().getOtaPackageResponseMsg());
624 624 }, callback::onError, transportCallbackExecutor);
625 625 }
626 626 }
... ...
... ... @@ -21,6 +21,7 @@ import org.thingsboard.server.common.data.DeviceInfo;
21 21 import org.thingsboard.server.common.data.DeviceTransportType;
22 22 import org.thingsboard.server.common.data.EntitySubtype;
23 23 import org.thingsboard.server.common.data.id.TenantId;
  24 +import org.thingsboard.server.common.data.ota.OtaPackageType;
24 25 import org.thingsboard.server.common.data.page.PageData;
25 26 import org.thingsboard.server.common.data.page.PageLink;
26 27 import org.thingsboard.server.dao.Dao;
... ... @@ -81,9 +82,12 @@ public interface DeviceDao extends Dao<Device>, TenantEntityDao {
81 82 */
82 83 PageData<Device> findDevicesByTenantIdAndType(UUID tenantId, String type, PageLink pageLink);
83 84
84   - PageData<Device> findDevicesByTenantIdAndTypeAndEmptyFirmware(UUID tenantId, String type, PageLink pageLink);
  85 + PageData<Device> findDevicesByTenantIdAndTypeAndEmptyOtaPackage(UUID tenantId,
  86 + UUID deviceProfileId,
  87 + OtaPackageType type,
  88 + PageLink pageLink);
85 89
86   - PageData<Device> findDevicesByTenantIdAndTypeAndEmptySoftware(UUID tenantId, String type, PageLink pageLink);
  90 + Long countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(UUID tenantId, UUID deviceProfileId, OtaPackageType otaPackageType);
87 91
88 92 /**
89 93 * Find device infos by tenantId, type and page link.
... ...
... ... @@ -43,7 +43,7 @@ import org.thingsboard.server.common.data.DeviceProfileInfo;
43 43 import org.thingsboard.server.common.data.DeviceProfileProvisionType;
44 44 import org.thingsboard.server.common.data.DeviceProfileType;
45 45 import org.thingsboard.server.common.data.DeviceTransportType;
46   -import org.thingsboard.server.common.data.Firmware;
  46 +import org.thingsboard.server.common.data.OtaPackage;
47 47 import org.thingsboard.server.common.data.Tenant;
48 48 import org.thingsboard.server.common.data.device.profile.CoapDeviceProfileTransportConfiguration;
49 49 import org.thingsboard.server.common.data.device.profile.CoapDeviceTypeConfiguration;
... ... @@ -57,7 +57,7 @@ import org.thingsboard.server.common.data.device.profile.DisabledDeviceProfilePr
57 57 import org.thingsboard.server.common.data.device.profile.MqttDeviceProfileTransportConfiguration;
58 58 import org.thingsboard.server.common.data.device.profile.ProtoTransportPayloadConfiguration;
59 59 import org.thingsboard.server.common.data.device.profile.TransportPayloadTypeConfiguration;
60   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  60 +import org.thingsboard.server.common.data.ota.OtaPackageType;
61 61 import org.thingsboard.server.common.data.id.DeviceProfileId;
62 62 import org.thingsboard.server.common.data.id.TenantId;
63 63 import org.thingsboard.server.common.data.page.PageData;
... ... @@ -66,7 +66,7 @@ import org.thingsboard.server.common.data.rule.RuleChain;
66 66 import org.thingsboard.server.dao.dashboard.DashboardService;
67 67 import org.thingsboard.server.dao.entity.AbstractEntityService;
68 68 import org.thingsboard.server.dao.exception.DataValidationException;
69   -import org.thingsboard.server.dao.firmware.FirmwareService;
  69 +import org.thingsboard.server.dao.ota.OtaPackageService;
70 70 import org.thingsboard.server.dao.rule.RuleChainService;
71 71 import org.thingsboard.server.dao.service.DataValidator;
72 72 import org.thingsboard.server.dao.service.PaginatedRemover;
... ... @@ -119,7 +119,7 @@ public class DeviceProfileServiceImpl extends AbstractEntityService implements D
119 119 private CacheManager cacheManager;
120 120
121 121 @Autowired
122   - private FirmwareService firmwareService;
  122 + private OtaPackageService otaPackageService;
123 123
124 124 @Autowired
125 125 private RuleChainService ruleChainService;
... ... @@ -427,11 +427,11 @@ public class DeviceProfileServiceImpl extends AbstractEntityService implements D
427 427 }
428 428
429 429 if (deviceProfile.getFirmwareId() != null) {
430   - Firmware firmware = firmwareService.findFirmwareById(tenantId, deviceProfile.getFirmwareId());
  430 + OtaPackage firmware = otaPackageService.findOtaPackageById(tenantId, deviceProfile.getFirmwareId());
431 431 if (firmware == null) {
432 432 throw new DataValidationException("Can't assign non-existent firmware!");
433 433 }
434   - if (!firmware.getType().equals(FirmwareType.FIRMWARE)) {
  434 + if (!firmware.getType().equals(OtaPackageType.FIRMWARE)) {
435 435 throw new DataValidationException("Can't assign firmware with type: " + firmware.getType());
436 436 }
437 437 if (firmware.getData() == null) {
... ... @@ -443,11 +443,11 @@ public class DeviceProfileServiceImpl extends AbstractEntityService implements D
443 443 }
444 444
445 445 if (deviceProfile.getSoftwareId() != null) {
446   - Firmware software = firmwareService.findFirmwareById(tenantId, deviceProfile.getSoftwareId());
  446 + OtaPackage software = otaPackageService.findOtaPackageById(tenantId, deviceProfile.getSoftwareId());
447 447 if (software == null) {
448 448 throw new DataValidationException("Can't assign non-existent software!");
449 449 }
450   - if (!software.getType().equals(FirmwareType.SOFTWARE)) {
  450 + if (!software.getType().equals(OtaPackageType.SOFTWARE)) {
451 451 throw new DataValidationException("Can't assign software with type: " + software.getType());
452 452 }
453 453 if (software.getData() == null) {
... ...
... ... @@ -41,7 +41,7 @@ import org.thingsboard.server.common.data.DeviceTransportType;
41 41 import org.thingsboard.server.common.data.EntitySubtype;
42 42 import org.thingsboard.server.common.data.EntityType;
43 43 import org.thingsboard.server.common.data.EntityView;
44   -import org.thingsboard.server.common.data.Firmware;
  44 +import org.thingsboard.server.common.data.OtaPackage;
45 45 import org.thingsboard.server.common.data.Tenant;
46 46 import org.thingsboard.server.common.data.device.DeviceSearchQuery;
47 47 import org.thingsboard.server.common.data.device.credentials.BasicMqttCredentials;
... ... @@ -54,13 +54,13 @@ import org.thingsboard.server.common.data.device.data.Lwm2mDeviceTransportConfig
54 54 import org.thingsboard.server.common.data.device.data.MqttDeviceTransportConfiguration;
55 55 import org.thingsboard.server.common.data.device.data.SnmpDeviceTransportConfiguration;
56 56 import org.thingsboard.server.common.data.edge.Edge;
57   -import org.thingsboard.server.common.data.firmware.FirmwareType;
58 57 import org.thingsboard.server.common.data.id.CustomerId;
59 58 import org.thingsboard.server.common.data.id.DeviceId;
60 59 import org.thingsboard.server.common.data.id.DeviceProfileId;
61 60 import org.thingsboard.server.common.data.id.EdgeId;
62 61 import org.thingsboard.server.common.data.id.EntityId;
63 62 import org.thingsboard.server.common.data.id.TenantId;
  63 +import org.thingsboard.server.common.data.ota.OtaPackageType;
64 64 import org.thingsboard.server.common.data.page.PageData;
65 65 import org.thingsboard.server.common.data.page.PageLink;
66 66 import org.thingsboard.server.common.data.relation.EntityRelation;
... ... @@ -76,7 +76,7 @@ import org.thingsboard.server.dao.device.provision.ProvisionResponseStatus;
76 76 import org.thingsboard.server.dao.entity.AbstractEntityService;
77 77 import org.thingsboard.server.dao.event.EventService;
78 78 import org.thingsboard.server.dao.exception.DataValidationException;
79   -import org.thingsboard.server.dao.firmware.FirmwareService;
  79 +import org.thingsboard.server.dao.ota.OtaPackageService;
80 80 import org.thingsboard.server.dao.service.DataValidator;
81 81 import org.thingsboard.server.dao.service.PaginatedRemover;
82 82 import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
... ... @@ -138,7 +138,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
138 138 private TbTenantProfileCache tenantProfileCache;
139 139
140 140 @Autowired
141   - private FirmwareService firmwareService;
  141 + private OtaPackageService otaPackageService;
142 142
143 143 @Override
144 144 public DeviceInfo findDeviceInfoById(TenantId tenantId, DeviceId deviceId) {
... ... @@ -201,14 +201,12 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
201 201 deviceCredentials.setDeviceId(savedDevice.getId());
202 202 if (device.getId() == null) {
203 203 deviceCredentialsService.createDeviceCredentials(savedDevice.getTenantId(), deviceCredentials);
204   - }
205   - else {
  204 + } else {
206 205 DeviceCredentials foundDeviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(device.getTenantId(), savedDevice.getId());
207 206 if (foundDeviceCredentials == null) {
208 207 deviceCredentialsService.createDeviceCredentials(savedDevice.getTenantId(), deviceCredentials);
209   - }
210   - else {
211   - deviceCredentialsService.updateDeviceCredentials(device.getTenantId(), deviceCredentials);
  208 + } else {
  209 + deviceCredentialsService.updateDeviceCredentials(device.getTenantId(), deviceCredentials);
212 210 }
213 211 }
214 212 return savedDevice;
... ... @@ -364,21 +362,24 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
364 362 }
365 363
366 364 @Override
367   - public PageData<Device> findDevicesByTenantIdAndTypeAndEmptyFirmware(TenantId tenantId, String type, PageLink pageLink) {
368   - log.trace("Executing findDevicesByTenantIdAndTypeAndEmptyFirmware, tenantId [{}], type [{}], pageLink [{}]", tenantId, type, pageLink);
  365 + public PageData<Device> findDevicesByTenantIdAndTypeAndEmptyOtaPackage(TenantId tenantId,
  366 + DeviceProfileId deviceProfileId,
  367 + OtaPackageType type,
  368 + PageLink pageLink) {
  369 + log.trace("Executing findDevicesByTenantIdAndTypeAndEmptyOtaPackage, tenantId [{}], deviceProfileId [{}], type [{}], pageLink [{}]",
  370 + tenantId, deviceProfileId, type, pageLink);
369 371 validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
370   - validateString(type, "Incorrect type " + type);
  372 + validateId(tenantId, INCORRECT_DEVICE_PROFILE_ID + deviceProfileId);
371 373 validatePageLink(pageLink);
372   - return deviceDao.findDevicesByTenantIdAndTypeAndEmptyFirmware(tenantId.getId(), type, pageLink);
  374 + return deviceDao.findDevicesByTenantIdAndTypeAndEmptyOtaPackage(tenantId.getId(), deviceProfileId.getId(), type, pageLink);
373 375 }
374 376
375 377 @Override
376   - public PageData<Device> findDevicesByTenantIdAndTypeAndEmptySoftware(TenantId tenantId, String type, PageLink pageLink) {
377   - log.trace("Executing findDevicesByTenantIdAndTypeAndEmptySoftware, tenantId [{}], type [{}], pageLink [{}]", tenantId, type, pageLink);
  378 + public Long countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType type) {
  379 + log.trace("Executing countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage, tenantId [{}], deviceProfileId [{}], type [{}]", tenantId, deviceProfileId, type);
378 380 validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
379   - validateString(type, "Incorrect type " + type);
380   - validatePageLink(pageLink);
381   - return deviceDao.findDevicesByTenantIdAndTypeAndEmptySoftware(tenantId.getId(), type, pageLink);
  381 + validateId(tenantId, INCORRECT_DEVICE_PROFILE_ID + deviceProfileId);
  382 + return deviceDao.countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(tenantId.getId(), deviceProfileId.getId(), type);
382 383 }
383 384
384 385 @Override
... ... @@ -708,11 +709,11 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
708 709 .ifPresent(DeviceTransportConfiguration::validate);
709 710
710 711 if (device.getFirmwareId() != null) {
711   - Firmware firmware = firmwareService.findFirmwareById(tenantId, device.getFirmwareId());
  712 + OtaPackage firmware = otaPackageService.findOtaPackageById(tenantId, device.getFirmwareId());
712 713 if (firmware == null) {
713 714 throw new DataValidationException("Can't assign non-existent firmware!");
714 715 }
715   - if (!firmware.getType().equals(FirmwareType.FIRMWARE)) {
  716 + if (!firmware.getType().equals(OtaPackageType.FIRMWARE)) {
716 717 throw new DataValidationException("Can't assign firmware with type: " + firmware.getType());
717 718 }
718 719 if (firmware.getData() == null) {
... ... @@ -724,11 +725,11 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
724 725 }
725 726
726 727 if (device.getSoftwareId() != null) {
727   - Firmware software = firmwareService.findFirmwareById(tenantId, device.getSoftwareId());
  728 + OtaPackage software = otaPackageService.findOtaPackageById(tenantId, device.getSoftwareId());
728 729 if (software == null) {
729 730 throw new DataValidationException("Can't assign non-existent software!");
730 731 }
731   - if (!software.getType().equals(FirmwareType.SOFTWARE)) {
  732 + if (!software.getType().equals(OtaPackageType.SOFTWARE)) {
732 733 throw new DataValidationException("Can't assign software with type: " + software.getType());
733 734 }
734 735 if (software.getData() == null) {
... ...
... ... @@ -32,7 +32,7 @@ import org.thingsboard.server.common.data.id.DeviceId;
32 32 import org.thingsboard.server.common.data.id.EdgeId;
33 33 import org.thingsboard.server.common.data.id.EntityId;
34 34 import org.thingsboard.server.common.data.id.EntityViewId;
35   -import org.thingsboard.server.common.data.id.FirmwareId;
  35 +import org.thingsboard.server.common.data.id.OtaPackageId;
36 36 import org.thingsboard.server.common.data.id.RuleChainId;
37 37 import org.thingsboard.server.common.data.id.TbResourceId;
38 38 import org.thingsboard.server.common.data.id.TenantId;
... ... @@ -49,7 +49,7 @@ import org.thingsboard.server.dao.dashboard.DashboardService;
49 49 import org.thingsboard.server.dao.device.DeviceService;
50 50 import org.thingsboard.server.dao.entityview.EntityViewService;
51 51 import org.thingsboard.server.dao.exception.IncorrectParameterException;
52   -import org.thingsboard.server.dao.firmware.FirmwareService;
  52 +import org.thingsboard.server.dao.ota.OtaPackageService;
53 53 import org.thingsboard.server.dao.resource.ResourceService;
54 54 import org.thingsboard.server.dao.rule.RuleChainService;
55 55 import org.thingsboard.server.dao.tenant.TenantService;
... ... @@ -102,7 +102,7 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe
102 102 private ResourceService resourceService;
103 103
104 104 @Autowired
105   - private FirmwareService firmwareService;
  105 + private OtaPackageService otaPackageService;
106 106
107 107 @Override
108 108 public void deleteEntityRelations(TenantId tenantId, EntityId entityId) {
... ... @@ -167,8 +167,8 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe
167 167 case TB_RESOURCE:
168 168 hasName = resourceService.findResourceInfoByIdAsync(tenantId, new TbResourceId(entityId.getId()));
169 169 break;
170   - case FIRMWARE:
171   - hasName = firmwareService.findFirmwareInfoByIdAsync(tenantId, new FirmwareId(entityId.getId()));
  170 + case OTA_PACKAGE:
  171 + hasName = otaPackageService.findOtaPackageInfoByIdAsync(tenantId, new OtaPackageId(entityId.getId()));
172 172 break;
173 173 default:
174 174 throw new IllegalStateException("Not Implemented!");
... ... @@ -192,7 +192,7 @@ public class BaseEntityService extends AbstractEntityService implements EntitySe
192 192 case DEVICE_PROFILE:
193 193 case API_USAGE_STATE:
194 194 case TB_RESOURCE:
195   - case FIRMWARE:
  195 + case OTA_PACKAGE:
196 196 break;
197 197 case CUSTOMER:
198 198 hasCustomerId = () -> new CustomerId(entityId.getId());
... ...
... ... @@ -479,22 +479,21 @@ public class ModelConstants {
479 479 public static final String RESOURCE_DATA_COLUMN = "data";
480 480
481 481 /**
482   - * Firmware constants.
483   - */
484   - public static final String FIRMWARE_TABLE_NAME = "firmware";
485   - public static final String FIRMWARE_TENANT_ID_COLUMN = TENANT_ID_COLUMN;
486   - public static final String FIRMWARE_DEVICE_PROFILE_ID_COLUMN = "device_profile_id";
487   - public static final String FIRMWARE_TYPE_COLUMN = "type";
488   - public static final String FIRMWARE_TITLE_COLUMN = TITLE_PROPERTY;
489   - public static final String FIRMWARE_VERSION_COLUMN = "version";
490   - public static final String FIRMWARE_FILE_NAME_COLUMN = "file_name";
491   - public static final String FIRMWARE_CONTENT_TYPE_COLUMN = "content_type";
492   - public static final String FIRMWARE_CHECKSUM_ALGORITHM_COLUMN = "checksum_algorithm";
493   - public static final String FIRMWARE_CHECKSUM_COLUMN = "checksum";
494   - public static final String FIRMWARE_DATA_COLUMN = "data";
495   - public static final String FIRMWARE_DATA_SIZE_COLUMN = "data_size";
496   - public static final String FIRMWARE_ADDITIONAL_INFO_COLUMN = ADDITIONAL_INFO_PROPERTY;
497   - public static final String FIRMWARE_HAS_DATA_PROPERTY = "has_data";
  482 + * Ota Package constants.
  483 + */
  484 + public static final String OTA_PACKAGE_TABLE_NAME = "ota_package";
  485 + public static final String OTA_PACKAGE_TENANT_ID_COLUMN = TENANT_ID_COLUMN;
  486 + public static final String OTA_PACKAGE_DEVICE_PROFILE_ID_COLUMN = "device_profile_id";
  487 + public static final String OTA_PACKAGE_TYPE_COLUMN = "type";
  488 + public static final String OTA_PACKAGE_TILE_COLUMN = TITLE_PROPERTY;
  489 + public static final String OTA_PACKAGE_VERSION_COLUMN = "version";
  490 + public static final String OTA_PACKAGE_FILE_NAME_COLUMN = "file_name";
  491 + public static final String OTA_PACKAGE_CONTENT_TYPE_COLUMN = "content_type";
  492 + public static final String OTA_PACKAGE_CHECKSUM_ALGORITHM_COLUMN = "checksum_algorithm";
  493 + public static final String OTA_PACKAGE_CHECKSUM_COLUMN = "checksum";
  494 + public static final String OTA_PACKAGE_DATA_COLUMN = "data";
  495 + public static final String OTA_PACKAGE_DATA_SIZE_COLUMN = "data_size";
  496 + public static final String OTA_PACKAGE_ADDITIONAL_INFO_COLUMN = ADDITIONAL_INFO_PROPERTY;
498 497
499 498 /**
500 499 * Edge constants.
... ...
... ... @@ -28,7 +28,7 @@ import org.thingsboard.server.common.data.device.data.DeviceData;
28 28 import org.thingsboard.server.common.data.id.CustomerId;
29 29 import org.thingsboard.server.common.data.id.DeviceId;
30 30 import org.thingsboard.server.common.data.id.DeviceProfileId;
31   -import org.thingsboard.server.common.data.id.FirmwareId;
  31 +import org.thingsboard.server.common.data.id.OtaPackageId;
32 32 import org.thingsboard.server.common.data.id.TenantId;
33 33 import org.thingsboard.server.dao.model.BaseSqlEntity;
34 34 import org.thingsboard.server.dao.model.ModelConstants;
... ... @@ -154,10 +154,10 @@ public abstract class AbstractDeviceEntity<T extends Device> extends BaseSqlEnti
154 154 device.setDeviceProfileId(new DeviceProfileId(deviceProfileId));
155 155 }
156 156 if (firmwareId != null) {
157   - device.setFirmwareId(new FirmwareId(firmwareId));
  157 + device.setFirmwareId(new OtaPackageId(firmwareId));
158 158 }
159 159 if (softwareId != null) {
160   - device.setSoftwareId(new FirmwareId(softwareId));
  160 + device.setSoftwareId(new OtaPackageId(softwareId));
161 161 }
162 162 device.setDeviceData(JacksonUtil.convertValue(deviceData, DeviceData.class));
163 163 device.setName(name);
... ...
... ... @@ -29,7 +29,7 @@ import org.thingsboard.server.common.data.DeviceTransportType;
29 29 import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
30 30 import org.thingsboard.server.common.data.id.DashboardId;
31 31 import org.thingsboard.server.common.data.id.DeviceProfileId;
32   -import org.thingsboard.server.common.data.id.FirmwareId;
  32 +import org.thingsboard.server.common.data.id.OtaPackageId;
33 33 import org.thingsboard.server.common.data.id.RuleChainId;
34 34 import org.thingsboard.server.common.data.id.TenantId;
35 35 import org.thingsboard.server.dao.model.BaseSqlEntity;
... ... @@ -178,11 +178,11 @@ public final class DeviceProfileEntity extends BaseSqlEntity<DeviceProfile> impl
178 178 deviceProfile.setProvisionDeviceKey(provisionDeviceKey);
179 179
180 180 if (firmwareId != null) {
181   - deviceProfile.setFirmwareId(new FirmwareId(firmwareId));
  181 + deviceProfile.setFirmwareId(new OtaPackageId(firmwareId));
182 182 }
183 183
184 184 if (softwareId != null) {
185   - deviceProfile.setSoftwareId(new FirmwareId(softwareId));
  185 + deviceProfile.setSoftwareId(new OtaPackageId(softwareId));
186 186 }
187 187
188 188 return deviceProfile;
... ...
dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageEntity.java renamed from dao/src/main/java/org/thingsboard/server/dao/model/sql/FirmwareEntity.java
... ... @@ -20,11 +20,11 @@ import lombok.Data;
20 20 import lombok.EqualsAndHashCode;
21 21 import org.hibernate.annotations.Type;
22 22 import org.hibernate.annotations.TypeDef;
23   -import org.thingsboard.server.common.data.Firmware;
24   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
25   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  23 +import org.thingsboard.server.common.data.OtaPackage;
  24 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  25 +import org.thingsboard.server.common.data.ota.OtaPackageType;
26 26 import org.thingsboard.server.common.data.id.DeviceProfileId;
27   -import org.thingsboard.server.common.data.id.FirmwareId;
  27 +import org.thingsboard.server.common.data.id.OtaPackageId;
28 28 import org.thingsboard.server.common.data.id.TenantId;
29 29 import org.thingsboard.server.dao.model.BaseSqlEntity;
30 30 import org.thingsboard.server.dao.model.ModelConstants;
... ... @@ -40,75 +40,75 @@ import javax.persistence.Table;
40 40 import java.nio.ByteBuffer;
41 41 import java.util.UUID;
42 42
43   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CHECKSUM_ALGORITHM_COLUMN;
44   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CHECKSUM_COLUMN;
45   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CONTENT_TYPE_COLUMN;
46   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_DATA_COLUMN;
47   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_DATA_SIZE_COLUMN;
48   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_DEVICE_PROFILE_ID_COLUMN;
49   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_FILE_NAME_COLUMN;
50   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME;
51   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN;
52   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN;
53   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TYPE_COLUMN;
54   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN;
  43 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CHECKSUM_ALGORITHM_COLUMN;
  44 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CHECKSUM_COLUMN;
  45 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CONTENT_TYPE_COLUMN;
  46 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_DATA_COLUMN;
  47 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_DATA_SIZE_COLUMN;
  48 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_DEVICE_PROFILE_ID_COLUMN;
  49 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_FILE_NAME_COLUMN;
  50 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TABLE_NAME;
  51 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TENANT_ID_COLUMN;
  52 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TILE_COLUMN;
  53 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TYPE_COLUMN;
  54 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_VERSION_COLUMN;
55 55 import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY;
56 56
57 57 @Data
58 58 @EqualsAndHashCode(callSuper = true)
59 59 @Entity
60 60 @TypeDef(name = "json", typeClass = JsonStringType.class)
61   -@Table(name = FIRMWARE_TABLE_NAME)
62   -public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTextEntity<Firmware> {
  61 +@Table(name = OTA_PACKAGE_TABLE_NAME)
  62 +public class OtaPackageEntity extends BaseSqlEntity<OtaPackage> implements SearchTextEntity<OtaPackage> {
63 63
64   - @Column(name = FIRMWARE_TENANT_ID_COLUMN)
  64 + @Column(name = OTA_PACKAGE_TENANT_ID_COLUMN)
65 65 private UUID tenantId;
66 66
67   - @Column(name = FIRMWARE_DEVICE_PROFILE_ID_COLUMN)
  67 + @Column(name = OTA_PACKAGE_DEVICE_PROFILE_ID_COLUMN)
68 68 private UUID deviceProfileId;
69 69
70 70 @Enumerated(EnumType.STRING)
71   - @Column(name = FIRMWARE_TYPE_COLUMN)
72   - private FirmwareType type;
  71 + @Column(name = OTA_PACKAGE_TYPE_COLUMN)
  72 + private OtaPackageType type;
73 73
74   - @Column(name = FIRMWARE_TITLE_COLUMN)
  74 + @Column(name = OTA_PACKAGE_TILE_COLUMN)
75 75 private String title;
76 76
77   - @Column(name = FIRMWARE_VERSION_COLUMN)
  77 + @Column(name = OTA_PACKAGE_VERSION_COLUMN)
78 78 private String version;
79 79
80   - @Column(name = FIRMWARE_FILE_NAME_COLUMN)
  80 + @Column(name = OTA_PACKAGE_FILE_NAME_COLUMN)
81 81 private String fileName;
82 82
83   - @Column(name = FIRMWARE_CONTENT_TYPE_COLUMN)
  83 + @Column(name = OTA_PACKAGE_CONTENT_TYPE_COLUMN)
84 84 private String contentType;
85 85
86 86 @Enumerated(EnumType.STRING)
87   - @Column(name = FIRMWARE_CHECKSUM_ALGORITHM_COLUMN)
  87 + @Column(name = OTA_PACKAGE_CHECKSUM_ALGORITHM_COLUMN)
88 88 private ChecksumAlgorithm checksumAlgorithm;
89 89
90   - @Column(name = FIRMWARE_CHECKSUM_COLUMN)
  90 + @Column(name = OTA_PACKAGE_CHECKSUM_COLUMN)
91 91 private String checksum;
92 92
93 93 @Lob
94   - @Column(name = FIRMWARE_DATA_COLUMN, columnDefinition = "BINARY")
  94 + @Column(name = OTA_PACKAGE_DATA_COLUMN, columnDefinition = "BINARY")
95 95 private byte[] data;
96 96
97   - @Column(name = FIRMWARE_DATA_SIZE_COLUMN)
  97 + @Column(name = OTA_PACKAGE_DATA_SIZE_COLUMN)
98 98 private Long dataSize;
99 99
100 100 @Type(type = "json")
101   - @Column(name = ModelConstants.FIRMWARE_ADDITIONAL_INFO_COLUMN)
  101 + @Column(name = ModelConstants.OTA_PACKAGE_ADDITIONAL_INFO_COLUMN)
102 102 private JsonNode additionalInfo;
103 103
104 104 @Column(name = SEARCH_TEXT_PROPERTY)
105 105 private String searchText;
106 106
107   - public FirmwareEntity() {
  107 + public OtaPackageEntity() {
108 108 super();
109 109 }
110 110
111   - public FirmwareEntity(Firmware firmware) {
  111 + public OtaPackageEntity(OtaPackage firmware) {
112 112 this.createdTime = firmware.getCreatedTime();
113 113 this.setUuid(firmware.getUuidId());
114 114 this.tenantId = firmware.getTenantId().getId();
... ... @@ -138,8 +138,8 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex
138 138 }
139 139
140 140 @Override
141   - public Firmware toData() {
142   - Firmware firmware = new Firmware(new FirmwareId(id));
  141 + public OtaPackage toData() {
  142 + OtaPackage firmware = new OtaPackage(new OtaPackageId(id));
143 143 firmware.setCreatedTime(createdTime);
144 144 firmware.setTenantId(new TenantId(tenantId));
145 145 if (deviceProfileId != null) {
... ...
dao/src/main/java/org/thingsboard/server/dao/model/sql/OtaPackageInfoEntity.java renamed from dao/src/main/java/org/thingsboard/server/dao/model/sql/FirmwareInfoEntity.java
... ... @@ -21,11 +21,11 @@ import lombok.EqualsAndHashCode;
21 21 import org.hibernate.annotations.Type;
22 22 import org.hibernate.annotations.TypeDef;
23 23 import org.thingsboard.common.util.JacksonUtil;
24   -import org.thingsboard.server.common.data.FirmwareInfo;
25   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
26   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  24 +import org.thingsboard.server.common.data.OtaPackageInfo;
  25 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  26 +import org.thingsboard.server.common.data.ota.OtaPackageType;
27 27 import org.thingsboard.server.common.data.id.DeviceProfileId;
28   -import org.thingsboard.server.common.data.id.FirmwareId;
  28 +import org.thingsboard.server.common.data.id.OtaPackageId;
29 29 import org.thingsboard.server.common.data.id.TenantId;
30 30 import org.thingsboard.server.dao.model.BaseSqlEntity;
31 31 import org.thingsboard.server.dao.model.ModelConstants;
... ... @@ -40,60 +40,60 @@ import javax.persistence.Table;
40 40 import javax.persistence.Transient;
41 41 import java.util.UUID;
42 42
43   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CHECKSUM_ALGORITHM_COLUMN;
44   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CHECKSUM_COLUMN;
45   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_CONTENT_TYPE_COLUMN;
46   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_DATA_SIZE_COLUMN;
47   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_DEVICE_PROFILE_ID_COLUMN;
48   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_FILE_NAME_COLUMN;
49   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME;
50   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN;
51   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN;
52   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TYPE_COLUMN;
53   -import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN;
  43 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CHECKSUM_ALGORITHM_COLUMN;
  44 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CHECKSUM_COLUMN;
  45 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_CONTENT_TYPE_COLUMN;
  46 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_DATA_SIZE_COLUMN;
  47 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_DEVICE_PROFILE_ID_COLUMN;
  48 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_FILE_NAME_COLUMN;
  49 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TABLE_NAME;
  50 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TENANT_ID_COLUMN;
  51 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TILE_COLUMN;
  52 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_TYPE_COLUMN;
  53 +import static org.thingsboard.server.dao.model.ModelConstants.OTA_PACKAGE_VERSION_COLUMN;
54 54 import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY;
55 55
56 56 @Data
57 57 @EqualsAndHashCode(callSuper = true)
58 58 @Entity
59 59 @TypeDef(name = "json", typeClass = JsonStringType.class)
60   -@Table(name = FIRMWARE_TABLE_NAME)
61   -public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements SearchTextEntity<FirmwareInfo> {
  60 +@Table(name = OTA_PACKAGE_TABLE_NAME)
  61 +public class OtaPackageInfoEntity extends BaseSqlEntity<OtaPackageInfo> implements SearchTextEntity<OtaPackageInfo> {
62 62
63   - @Column(name = FIRMWARE_TENANT_ID_COLUMN)
  63 + @Column(name = OTA_PACKAGE_TENANT_ID_COLUMN)
64 64 private UUID tenantId;
65 65
66   - @Column(name = FIRMWARE_DEVICE_PROFILE_ID_COLUMN)
  66 + @Column(name = OTA_PACKAGE_DEVICE_PROFILE_ID_COLUMN)
67 67 private UUID deviceProfileId;
68 68
69 69 @Enumerated(EnumType.STRING)
70   - @Column(name = FIRMWARE_TYPE_COLUMN)
71   - private FirmwareType type;
  70 + @Column(name = OTA_PACKAGE_TYPE_COLUMN)
  71 + private OtaPackageType type;
72 72
73   - @Column(name = FIRMWARE_TITLE_COLUMN)
  73 + @Column(name = OTA_PACKAGE_TILE_COLUMN)
74 74 private String title;
75 75
76   - @Column(name = FIRMWARE_VERSION_COLUMN)
  76 + @Column(name = OTA_PACKAGE_VERSION_COLUMN)
77 77 private String version;
78 78
79   - @Column(name = FIRMWARE_FILE_NAME_COLUMN)
  79 + @Column(name = OTA_PACKAGE_FILE_NAME_COLUMN)
80 80 private String fileName;
81 81
82   - @Column(name = FIRMWARE_CONTENT_TYPE_COLUMN)
  82 + @Column(name = OTA_PACKAGE_CONTENT_TYPE_COLUMN)
83 83 private String contentType;
84 84
85 85 @Enumerated(EnumType.STRING)
86   - @Column(name = FIRMWARE_CHECKSUM_ALGORITHM_COLUMN)
  86 + @Column(name = OTA_PACKAGE_CHECKSUM_ALGORITHM_COLUMN)
87 87 private ChecksumAlgorithm checksumAlgorithm;
88 88
89   - @Column(name = FIRMWARE_CHECKSUM_COLUMN)
  89 + @Column(name = OTA_PACKAGE_CHECKSUM_COLUMN)
90 90 private String checksum;
91 91
92   - @Column(name = FIRMWARE_DATA_SIZE_COLUMN)
  92 + @Column(name = OTA_PACKAGE_DATA_SIZE_COLUMN)
93 93 private Long dataSize;
94 94
95 95 @Type(type = "json")
96   - @Column(name = ModelConstants.FIRMWARE_ADDITIONAL_INFO_COLUMN)
  96 + @Column(name = ModelConstants.OTA_PACKAGE_ADDITIONAL_INFO_COLUMN)
97 97 private JsonNode additionalInfo;
98 98
99 99 @Column(name = SEARCH_TEXT_PROPERTY)
... ... @@ -102,11 +102,11 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S
102 102 @Transient
103 103 private boolean hasData;
104 104
105   - public FirmwareInfoEntity() {
  105 + public OtaPackageInfoEntity() {
106 106 super();
107 107 }
108 108
109   - public FirmwareInfoEntity(FirmwareInfo firmware) {
  109 + public OtaPackageInfoEntity(OtaPackageInfo firmware) {
110 110 this.createdTime = firmware.getCreatedTime();
111 111 this.setUuid(firmware.getUuidId());
112 112 this.tenantId = firmware.getTenantId().getId();
... ... @@ -124,9 +124,9 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S
124 124 this.additionalInfo = firmware.getAdditionalInfo();
125 125 }
126 126
127   - public FirmwareInfoEntity(UUID id, long createdTime, UUID tenantId, UUID deviceProfileId, FirmwareType type, String title, String version,
128   - String fileName, String contentType, ChecksumAlgorithm checksumAlgorithm, String checksum, Long dataSize,
129   - Object additionalInfo, boolean hasData) {
  127 + public OtaPackageInfoEntity(UUID id, long createdTime, UUID tenantId, UUID deviceProfileId, OtaPackageType type, String title, String version,
  128 + String fileName, String contentType, ChecksumAlgorithm checksumAlgorithm, String checksum, Long dataSize,
  129 + Object additionalInfo, boolean hasData) {
130 130 this.id = id;
131 131 this.createdTime = createdTime;
132 132 this.tenantId = tenantId;
... ... @@ -154,8 +154,8 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S
154 154 }
155 155
156 156 @Override
157   - public FirmwareInfo toData() {
158   - FirmwareInfo firmware = new FirmwareInfo(new FirmwareId(id));
  157 + public OtaPackageInfo toData() {
  158 + OtaPackageInfo firmware = new OtaPackageInfo(new OtaPackageId(id));
159 159 firmware.setCreatedTime(createdTime);
160 160 firmware.setTenantId(new TenantId(tenantId));
161 161 if (deviceProfileId != null) {
... ...
dao/src/main/java/org/thingsboard/server/dao/ota/BaseOtaPackageService.java renamed from dao/src/main/java/org/thingsboard/server/dao/firmware/BaseFirmwareService.java
... ... @@ -13,7 +13,7 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.firmware;
  16 +package org.thingsboard.server.dao.ota;
17 17
18 18 import com.google.common.hash.HashFunction;
19 19 import com.google.common.hash.Hashing;
... ... @@ -26,17 +26,15 @@ import org.springframework.cache.Cache;
26 26 import org.springframework.cache.CacheManager;
27 27 import org.springframework.cache.annotation.Cacheable;
28 28 import org.springframework.stereotype.Service;
29   -import org.thingsboard.server.cache.firmware.FirmwareDataCache;
  29 +import org.thingsboard.server.cache.ota.OtaPackageDataCache;
30 30 import org.thingsboard.server.common.data.DeviceProfile;
31   -import org.thingsboard.server.common.data.Firmware;
32   -import org.thingsboard.server.common.data.FirmwareInfo;
  31 +import org.thingsboard.server.common.data.OtaPackage;
  32 +import org.thingsboard.server.common.data.OtaPackageInfo;
33 33 import org.thingsboard.server.common.data.Tenant;
34   -import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
35   -import org.thingsboard.server.common.data.exception.ThingsboardException;
36   -import org.thingsboard.server.common.data.firmware.ChecksumAlgorithm;
37   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  34 +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm;
  35 +import org.thingsboard.server.common.data.ota.OtaPackageType;
38 36 import org.thingsboard.server.common.data.id.DeviceProfileId;
39   -import org.thingsboard.server.common.data.id.FirmwareId;
  37 +import org.thingsboard.server.common.data.id.OtaPackageId;
40 38 import org.thingsboard.server.common.data.id.TenantId;
41 39 import org.thingsboard.server.common.data.page.PageData;
42 40 import org.thingsboard.server.common.data.page.PageLink;
... ... @@ -46,49 +44,45 @@ import org.thingsboard.server.dao.service.DataValidator;
46 44 import org.thingsboard.server.dao.service.PaginatedRemover;
47 45 import org.thingsboard.server.dao.tenant.TenantDao;
48 46
49   -import java.lang.reflect.InvocationTargetException;
50   -import java.lang.reflect.Method;
51 47 import java.nio.ByteBuffer;
52   -import java.util.ArrayList;
53   -import java.util.Arrays;
54 48 import java.util.Collections;
55 49 import java.util.List;
56 50 import java.util.Optional;
57 51
58   -import static org.thingsboard.server.common.data.CacheConstants.FIRMWARE_CACHE;
  52 +import static org.thingsboard.server.common.data.CacheConstants.OTA_PACKAGE_CACHE;
59 53 import static org.thingsboard.server.dao.service.Validator.validateId;
60 54 import static org.thingsboard.server.dao.service.Validator.validatePageLink;
61 55
62 56 @Service
63 57 @Slf4j
64 58 @RequiredArgsConstructor
65   -public class BaseFirmwareService implements FirmwareService {
66   - public static final String INCORRECT_FIRMWARE_ID = "Incorrect firmwareId ";
  59 +public class BaseOtaPackageService implements OtaPackageService {
  60 + public static final String INCORRECT_OTA_PACKAGE_ID = "Incorrect otaPackageId ";
67 61 public static final String INCORRECT_TENANT_ID = "Incorrect tenantId ";
68 62
69 63 private final TenantDao tenantDao;
70 64 private final DeviceProfileDao deviceProfileDao;
71   - private final FirmwareDao firmwareDao;
72   - private final FirmwareInfoDao firmwareInfoDao;
  65 + private final OtaPackageDao otaPackageDao;
  66 + private final OtaPackageInfoDao otaPackageInfoDao;
73 67 private final CacheManager cacheManager;
74   - private final FirmwareDataCache firmwareDataCache;
  68 + private final OtaPackageDataCache otaPackageDataCache;
75 69
76 70 @Override
77   - public FirmwareInfo saveFirmwareInfo(FirmwareInfo firmwareInfo) {
78   - log.trace("Executing saveFirmwareInfo [{}]", firmwareInfo);
79   - firmwareInfoValidator.validate(firmwareInfo, FirmwareInfo::getTenantId);
  71 + public OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo) {
  72 + log.trace("Executing saveOtaPackageInfo [{}]", otaPackageInfo);
  73 + otaPackageInfoValidator.validate(otaPackageInfo, OtaPackageInfo::getTenantId);
80 74 try {
81   - FirmwareId firmwareId = firmwareInfo.getId();
82   - if (firmwareId != null) {
83   - Cache cache = cacheManager.getCache(FIRMWARE_CACHE);
84   - cache.evict(toFirmwareInfoKey(firmwareId));
85   - firmwareDataCache.evict(firmwareId.toString());
  75 + OtaPackageId otaPackageId = otaPackageInfo.getId();
  76 + if (otaPackageId != null) {
  77 + Cache cache = cacheManager.getCache(OTA_PACKAGE_CACHE);
  78 + cache.evict(toOtaPackageInfoKey(otaPackageId));
  79 + otaPackageDataCache.evict(otaPackageId.toString());
86 80 }
87   - return firmwareInfoDao.save(firmwareInfo.getTenantId(), firmwareInfo);
  81 + return otaPackageInfoDao.save(otaPackageInfo.getTenantId(), otaPackageInfo);
88 82 } catch (Exception t) {
89 83 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
90   - if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("firmware_tenant_title_version_unq_key")) {
91   - throw new DataValidationException("Firmware with such title and version already exists!");
  84 + if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("ota_package_tenant_title_version_unq_key")) {
  85 + throw new DataValidationException("OtaPackage with such title and version already exists!");
92 86 } else {
93 87 throw t;
94 88 }
... ... @@ -96,21 +90,21 @@ public class BaseFirmwareService implements FirmwareService {
96 90 }
97 91
98 92 @Override
99   - public Firmware saveFirmware(Firmware firmware) {
100   - log.trace("Executing saveFirmware [{}]", firmware);
101   - firmwareValidator.validate(firmware, FirmwareInfo::getTenantId);
  93 + public OtaPackage saveOtaPackage(OtaPackage otaPackage) {
  94 + log.trace("Executing saveOtaPackage [{}]", otaPackage);
  95 + otaPackageValidator.validate(otaPackage, OtaPackageInfo::getTenantId);
102 96 try {
103   - FirmwareId firmwareId = firmware.getId();
104   - if (firmwareId != null) {
105   - Cache cache = cacheManager.getCache(FIRMWARE_CACHE);
106   - cache.evict(toFirmwareInfoKey(firmwareId));
107   - firmwareDataCache.evict(firmwareId.toString());
  97 + OtaPackageId otaPackageId = otaPackage.getId();
  98 + if (otaPackageId != null) {
  99 + Cache cache = cacheManager.getCache(OTA_PACKAGE_CACHE);
  100 + cache.evict(toOtaPackageInfoKey(otaPackageId));
  101 + otaPackageDataCache.evict(otaPackageId.toString());
108 102 }
109   - return firmwareDao.save(firmware.getTenantId(), firmware);
  103 + return otaPackageDao.save(otaPackage.getTenantId(), otaPackage);
110 104 } catch (Exception t) {
111 105 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
112   - if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("firmware_tenant_title_version_unq_key")) {
113   - throw new DataValidationException("Firmware with such title and version already exists!");
  106 + if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("ota_package_tenant_title_version_unq_key")) {
  107 + throw new DataValidationException("OtaPackage with such title and version already exists!");
114 108 } else {
115 109 throw t;
116 110 }
... ... @@ -120,7 +114,7 @@ public class BaseFirmwareService implements FirmwareService {
120 114 @Override
121 115 public String generateChecksum(ChecksumAlgorithm checksumAlgorithm, ByteBuffer data) {
122 116 if (data == null || !data.hasArray() || data.array().length == 0) {
123   - throw new DataValidationException("Firmware data should be specified!");
  117 + throw new DataValidationException("OtaPackage data should be specified!");
124 118 }
125 119
126 120 return getHashFunction(checksumAlgorithm).hashBytes(data.array()).toString();
... ... @@ -148,58 +142,58 @@ public class BaseFirmwareService implements FirmwareService {
148 142 }
149 143
150 144 @Override
151   - public Firmware findFirmwareById(TenantId tenantId, FirmwareId firmwareId) {
152   - log.trace("Executing findFirmwareById [{}]", firmwareId);
153   - validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId);
154   - return firmwareDao.findById(tenantId, firmwareId.getId());
  145 + public OtaPackage findOtaPackageById(TenantId tenantId, OtaPackageId otaPackageId) {
  146 + log.trace("Executing findOtaPackageById [{}]", otaPackageId);
  147 + validateId(otaPackageId, INCORRECT_OTA_PACKAGE_ID + otaPackageId);
  148 + return otaPackageDao.findById(tenantId, otaPackageId.getId());
155 149 }
156 150
157 151 @Override
158   - @Cacheable(cacheNames = FIRMWARE_CACHE, key = "{#firmwareId}")
159   - public FirmwareInfo findFirmwareInfoById(TenantId tenantId, FirmwareId firmwareId) {
160   - log.trace("Executing findFirmwareInfoById [{}]", firmwareId);
161   - validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId);
162   - return firmwareInfoDao.findById(tenantId, firmwareId.getId());
  152 + @Cacheable(cacheNames = OTA_PACKAGE_CACHE, key = "{#otaPackageId}")
  153 + public OtaPackageInfo findOtaPackageInfoById(TenantId tenantId, OtaPackageId otaPackageId) {
  154 + log.trace("Executing findOtaPackageInfoById [{}]", otaPackageId);
  155 + validateId(otaPackageId, INCORRECT_OTA_PACKAGE_ID + otaPackageId);
  156 + return otaPackageInfoDao.findById(tenantId, otaPackageId.getId());
163 157 }
164 158
165 159 @Override
166   - public ListenableFuture<FirmwareInfo> findFirmwareInfoByIdAsync(TenantId tenantId, FirmwareId firmwareId) {
167   - log.trace("Executing findFirmwareInfoByIdAsync [{}]", firmwareId);
168   - validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId);
169   - return firmwareInfoDao.findByIdAsync(tenantId, firmwareId.getId());
  160 + public ListenableFuture<OtaPackageInfo> findOtaPackageInfoByIdAsync(TenantId tenantId, OtaPackageId otaPackageId) {
  161 + log.trace("Executing findOtaPackageInfoByIdAsync [{}]", otaPackageId);
  162 + validateId(otaPackageId, INCORRECT_OTA_PACKAGE_ID + otaPackageId);
  163 + return otaPackageInfoDao.findByIdAsync(tenantId, otaPackageId.getId());
170 164 }
171 165
172 166 @Override
173   - public PageData<FirmwareInfo> findTenantFirmwaresByTenantId(TenantId tenantId, PageLink pageLink) {
174   - log.trace("Executing findTenantFirmwaresByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink);
  167 + public PageData<OtaPackageInfo> findTenantOtaPackagesByTenantId(TenantId tenantId, PageLink pageLink) {
  168 + log.trace("Executing findTenantOtaPackagesByTenantId, tenantId [{}], pageLink [{}]", tenantId, pageLink);
175 169 validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
176 170 validatePageLink(pageLink);
177   - return firmwareInfoDao.findFirmwareInfoByTenantId(tenantId, pageLink);
  171 + return otaPackageInfoDao.findOtaPackageInfoByTenantId(tenantId, pageLink);
178 172 }
179 173
180 174 @Override
181   - public PageData<FirmwareInfo> findTenantFirmwaresByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, FirmwareType firmwareType, boolean hasData, PageLink pageLink) {
182   - log.trace("Executing findTenantFirmwaresByTenantIdAndHasData, tenantId [{}], hasData [{}] pageLink [{}]", tenantId, hasData, pageLink);
  175 + public PageData<OtaPackageInfo> findTenantOtaPackagesByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType otaPackageType, boolean hasData, PageLink pageLink) {
  176 + log.trace("Executing findTenantOtaPackagesByTenantIdAndHasData, tenantId [{}], hasData [{}] pageLink [{}]", tenantId, hasData, pageLink);
183 177 validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
184 178 validatePageLink(pageLink);
185   - return firmwareInfoDao.findFirmwareInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(tenantId, deviceProfileId, firmwareType, hasData, pageLink);
  179 + return otaPackageInfoDao.findOtaPackageInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(tenantId, deviceProfileId, otaPackageType, hasData, pageLink);
186 180 }
187 181
188 182 @Override
189   - public void deleteFirmware(TenantId tenantId, FirmwareId firmwareId) {
190   - log.trace("Executing deleteFirmware [{}]", firmwareId);
191   - validateId(firmwareId, INCORRECT_FIRMWARE_ID + firmwareId);
  183 + public void deleteOtaPackage(TenantId tenantId, OtaPackageId otaPackageId) {
  184 + log.trace("Executing deleteOtaPackage [{}]", otaPackageId);
  185 + validateId(otaPackageId, INCORRECT_OTA_PACKAGE_ID + otaPackageId);
192 186 try {
193   - Cache cache = cacheManager.getCache(FIRMWARE_CACHE);
194   - cache.evict(toFirmwareInfoKey(firmwareId));
195   - firmwareDataCache.evict(firmwareId.toString());
196   - firmwareDao.removeById(tenantId, firmwareId.getId());
  187 + Cache cache = cacheManager.getCache(OTA_PACKAGE_CACHE);
  188 + cache.evict(toOtaPackageInfoKey(otaPackageId));
  189 + otaPackageDataCache.evict(otaPackageId.toString());
  190 + otaPackageDao.removeById(tenantId, otaPackageId.getId());
197 191 } catch (Exception t) {
198 192 ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
199 193 if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("fk_firmware_device")) {
200   - throw new DataValidationException("The firmware referenced by the devices cannot be deleted!");
  194 + throw new DataValidationException("The otaPackage referenced by the devices cannot be deleted!");
201 195 } else if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("fk_firmware_device_profile")) {
202   - throw new DataValidationException("The firmware referenced by the device profile cannot be deleted!");
  196 + throw new DataValidationException("The otaPackage referenced by the device profile cannot be deleted!");
203 197 } else if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("fk_software_device")) {
204 198 throw new DataValidationException("The software referenced by the devices cannot be deleted!");
205 199 } else if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("fk_software_device_profile")) {
... ... @@ -211,154 +205,154 @@ public class BaseFirmwareService implements FirmwareService {
211 205 }
212 206
213 207 @Override
214   - public void deleteFirmwaresByTenantId(TenantId tenantId) {
215   - log.trace("Executing deleteFirmwaresByTenantId, tenantId [{}]", tenantId);
  208 + public void deleteOtaPackagesByTenantId(TenantId tenantId) {
  209 + log.trace("Executing deleteOtaPackagesByTenantId, tenantId [{}]", tenantId);
216 210 validateId(tenantId, INCORRECT_TENANT_ID + tenantId);
217   - tenantFirmwareRemover.removeEntities(tenantId, tenantId);
  211 + tenantOtaPackageRemover.removeEntities(tenantId, tenantId);
218 212 }
219 213
220   - private DataValidator<FirmwareInfo> firmwareInfoValidator = new DataValidator<>() {
  214 + private DataValidator<OtaPackageInfo> otaPackageInfoValidator = new DataValidator<>() {
221 215
222 216 @Override
223   - protected void validateDataImpl(TenantId tenantId, FirmwareInfo firmwareInfo) {
224   - validateImpl(firmwareInfo);
  217 + protected void validateDataImpl(TenantId tenantId, OtaPackageInfo otaPackageInfo) {
  218 + validateImpl(otaPackageInfo);
225 219 }
226 220
227 221 @Override
228   - protected void validateUpdate(TenantId tenantId, FirmwareInfo firmware) {
229   - FirmwareInfo firmwareOld = firmwareInfoDao.findById(tenantId, firmware.getUuidId());
  222 + protected void validateUpdate(TenantId tenantId, OtaPackageInfo otaPackage) {
  223 + OtaPackageInfo otaPackageOld = otaPackageInfoDao.findById(tenantId, otaPackage.getUuidId());
230 224
231   - validateUpdateDeviceProfile(firmware, firmwareOld);
232   - BaseFirmwareService.validateUpdate(firmware, firmwareOld);
  225 + validateUpdateDeviceProfile(otaPackage, otaPackageOld);
  226 + BaseOtaPackageService.validateUpdate(otaPackage, otaPackageOld);
233 227 }
234 228 };
235 229
236   - private DataValidator<Firmware> firmwareValidator = new DataValidator<>() {
  230 + private DataValidator<OtaPackage> otaPackageValidator = new DataValidator<>() {
237 231
238 232 @Override
239   - protected void validateDataImpl(TenantId tenantId, Firmware firmware) {
240   - validateImpl(firmware);
  233 + protected void validateDataImpl(TenantId tenantId, OtaPackage otaPackage) {
  234 + validateImpl(otaPackage);
241 235
242   - if (StringUtils.isEmpty(firmware.getFileName())) {
243   - throw new DataValidationException("Firmware file name should be specified!");
  236 + if (StringUtils.isEmpty(otaPackage.getFileName())) {
  237 + throw new DataValidationException("OtaPackage file name should be specified!");
244 238 }
245 239
246   - if (StringUtils.isEmpty(firmware.getContentType())) {
247   - throw new DataValidationException("Firmware content type should be specified!");
  240 + if (StringUtils.isEmpty(otaPackage.getContentType())) {
  241 + throw new DataValidationException("OtaPackage content type should be specified!");
248 242 }
249 243
250   - if (firmware.getChecksumAlgorithm() == null) {
251   - throw new DataValidationException("Firmware checksum algorithm should be specified!");
  244 + if (otaPackage.getChecksumAlgorithm() == null) {
  245 + throw new DataValidationException("OtaPackage checksum algorithm should be specified!");
252 246 }
253   - if (StringUtils.isEmpty(firmware.getChecksum())) {
254   - throw new DataValidationException("Firmware checksum should be specified!");
  247 + if (StringUtils.isEmpty(otaPackage.getChecksum())) {
  248 + throw new DataValidationException("OtaPackage checksum should be specified!");
255 249 }
256 250
257 251 String currentChecksum;
258 252
259   - currentChecksum = generateChecksum(firmware.getChecksumAlgorithm(), firmware.getData());
  253 + currentChecksum = generateChecksum(otaPackage.getChecksumAlgorithm(), otaPackage.getData());
260 254
261   - if (!currentChecksum.equals(firmware.getChecksum())) {
262   - throw new DataValidationException("Wrong firmware file!");
  255 + if (!currentChecksum.equals(otaPackage.getChecksum())) {
  256 + throw new DataValidationException("Wrong otaPackage file!");
263 257 }
264 258 }
265 259
266 260 @Override
267   - protected void validateUpdate(TenantId tenantId, Firmware firmware) {
268   - Firmware firmwareOld = firmwareDao.findById(tenantId, firmware.getUuidId());
  261 + protected void validateUpdate(TenantId tenantId, OtaPackage otaPackage) {
  262 + OtaPackage otaPackageOld = otaPackageDao.findById(tenantId, otaPackage.getUuidId());
269 263
270   - validateUpdateDeviceProfile(firmware, firmwareOld);
271   - BaseFirmwareService.validateUpdate(firmware, firmwareOld);
  264 + validateUpdateDeviceProfile(otaPackage, otaPackageOld);
  265 + BaseOtaPackageService.validateUpdate(otaPackage, otaPackageOld);
272 266
273   - if (firmwareOld.getData() != null && !firmwareOld.getData().equals(firmware.getData())) {
274   - throw new DataValidationException("Updating firmware data is prohibited!");
  267 + if (otaPackageOld.getData() != null && !otaPackageOld.getData().equals(otaPackage.getData())) {
  268 + throw new DataValidationException("Updating otaPackage data is prohibited!");
275 269 }
276 270 }
277 271 };
278 272
279   - private void validateUpdateDeviceProfile(FirmwareInfo firmware, FirmwareInfo firmwareOld) {
280   - if (firmwareOld.getDeviceProfileId() != null && !firmwareOld.getDeviceProfileId().equals(firmware.getDeviceProfileId())) {
281   - if (firmwareInfoDao.isFirmwareUsed(firmwareOld.getId(), firmware.getType(), firmwareOld.getDeviceProfileId())) {
282   - throw new DataValidationException("Can`t update deviceProfileId because firmware is already in use!");
  273 + private void validateUpdateDeviceProfile(OtaPackageInfo otaPackage, OtaPackageInfo otaPackageOld) {
  274 + if (otaPackageOld.getDeviceProfileId() != null && !otaPackageOld.getDeviceProfileId().equals(otaPackage.getDeviceProfileId())) {
  275 + if (otaPackageInfoDao.isOtaPackageUsed(otaPackageOld.getId(), otaPackage.getType(), otaPackageOld.getDeviceProfileId())) {
  276 + throw new DataValidationException("Can`t update deviceProfileId because otaPackage is already in use!");
283 277 }
284 278 }
285 279 }
286 280
287   - private static void validateUpdate(FirmwareInfo firmware, FirmwareInfo firmwareOld) {
288   - if (!firmwareOld.getType().equals(firmware.getType())) {
  281 + private static void validateUpdate(OtaPackageInfo otaPackage, OtaPackageInfo otaPackageOld) {
  282 + if (!otaPackageOld.getType().equals(otaPackage.getType())) {
289 283 throw new DataValidationException("Updating type is prohibited!");
290 284 }
291 285
292   - if (!firmwareOld.getTitle().equals(firmware.getTitle())) {
293   - throw new DataValidationException("Updating firmware title is prohibited!");
  286 + if (!otaPackageOld.getTitle().equals(otaPackage.getTitle())) {
  287 + throw new DataValidationException("Updating otaPackage title is prohibited!");
294 288 }
295 289
296   - if (!firmwareOld.getVersion().equals(firmware.getVersion())) {
297   - throw new DataValidationException("Updating firmware version is prohibited!");
  290 + if (!otaPackageOld.getVersion().equals(otaPackage.getVersion())) {
  291 + throw new DataValidationException("Updating otaPackage version is prohibited!");
298 292 }
299 293
300   - if (firmwareOld.getFileName() != null && !firmwareOld.getFileName().equals(firmware.getFileName())) {
301   - throw new DataValidationException("Updating firmware file name is prohibited!");
  294 + if (otaPackageOld.getFileName() != null && !otaPackageOld.getFileName().equals(otaPackage.getFileName())) {
  295 + throw new DataValidationException("Updating otaPackage file name is prohibited!");
302 296 }
303 297
304   - if (firmwareOld.getContentType() != null && !firmwareOld.getContentType().equals(firmware.getContentType())) {
305   - throw new DataValidationException("Updating firmware content type is prohibited!");
  298 + if (otaPackageOld.getContentType() != null && !otaPackageOld.getContentType().equals(otaPackage.getContentType())) {
  299 + throw new DataValidationException("Updating otaPackage content type is prohibited!");
306 300 }
307 301
308   - if (firmwareOld.getChecksumAlgorithm() != null && !firmwareOld.getChecksumAlgorithm().equals(firmware.getChecksumAlgorithm())) {
309   - throw new DataValidationException("Updating firmware content type is prohibited!");
  302 + if (otaPackageOld.getChecksumAlgorithm() != null && !otaPackageOld.getChecksumAlgorithm().equals(otaPackage.getChecksumAlgorithm())) {
  303 + throw new DataValidationException("Updating otaPackage content type is prohibited!");
310 304 }
311 305
312   - if (firmwareOld.getChecksum() != null && !firmwareOld.getChecksum().equals(firmware.getChecksum())) {
313   - throw new DataValidationException("Updating firmware content type is prohibited!");
  306 + if (otaPackageOld.getChecksum() != null && !otaPackageOld.getChecksum().equals(otaPackage.getChecksum())) {
  307 + throw new DataValidationException("Updating otaPackage content type is prohibited!");
314 308 }
315 309
316   - if (firmwareOld.getDataSize() != null && !firmwareOld.getDataSize().equals(firmware.getDataSize())) {
317   - throw new DataValidationException("Updating firmware data size is prohibited!");
  310 + if (otaPackageOld.getDataSize() != null && !otaPackageOld.getDataSize().equals(otaPackage.getDataSize())) {
  311 + throw new DataValidationException("Updating otaPackage data size is prohibited!");
318 312 }
319 313 }
320 314
321   - private void validateImpl(FirmwareInfo firmwareInfo) {
322   - if (firmwareInfo.getTenantId() == null) {
323   - throw new DataValidationException("Firmware should be assigned to tenant!");
  315 + private void validateImpl(OtaPackageInfo otaPackageInfo) {
  316 + if (otaPackageInfo.getTenantId() == null) {
  317 + throw new DataValidationException("OtaPackage should be assigned to tenant!");
324 318 } else {
325   - Tenant tenant = tenantDao.findById(firmwareInfo.getTenantId(), firmwareInfo.getTenantId().getId());
  319 + Tenant tenant = tenantDao.findById(otaPackageInfo.getTenantId(), otaPackageInfo.getTenantId().getId());
326 320 if (tenant == null) {
327   - throw new DataValidationException("Firmware is referencing to non-existent tenant!");
  321 + throw new DataValidationException("OtaPackage is referencing to non-existent tenant!");
328 322 }
329 323 }
330 324
331   - if (firmwareInfo.getDeviceProfileId() != null) {
332   - DeviceProfile deviceProfile = deviceProfileDao.findById(firmwareInfo.getTenantId(), firmwareInfo.getDeviceProfileId().getId());
  325 + if (otaPackageInfo.getDeviceProfileId() != null) {
  326 + DeviceProfile deviceProfile = deviceProfileDao.findById(otaPackageInfo.getTenantId(), otaPackageInfo.getDeviceProfileId().getId());
333 327 if (deviceProfile == null) {
334   - throw new DataValidationException("Firmware is referencing to non-existent device profile!");
  328 + throw new DataValidationException("OtaPackage is referencing to non-existent device profile!");
335 329 }
336 330 }
337 331
338   - if (firmwareInfo.getType() == null) {
  332 + if (otaPackageInfo.getType() == null) {
339 333 throw new DataValidationException("Type should be specified!");
340 334 }
341 335
342   - if (StringUtils.isEmpty(firmwareInfo.getTitle())) {
343   - throw new DataValidationException("Firmware title should be specified!");
  336 + if (StringUtils.isEmpty(otaPackageInfo.getTitle())) {
  337 + throw new DataValidationException("OtaPackage title should be specified!");
344 338 }
345 339
346   - if (StringUtils.isEmpty(firmwareInfo.getVersion())) {
347   - throw new DataValidationException("Firmware version should be specified!");
  340 + if (StringUtils.isEmpty(otaPackageInfo.getVersion())) {
  341 + throw new DataValidationException("OtaPackage version should be specified!");
348 342 }
349 343 }
350 344
351   - private PaginatedRemover<TenantId, FirmwareInfo> tenantFirmwareRemover =
  345 + private PaginatedRemover<TenantId, OtaPackageInfo> tenantOtaPackageRemover =
352 346 new PaginatedRemover<>() {
353 347
354 348 @Override
355   - protected PageData<FirmwareInfo> findEntities(TenantId tenantId, TenantId id, PageLink pageLink) {
356   - return firmwareInfoDao.findFirmwareInfoByTenantId(id, pageLink);
  349 + protected PageData<OtaPackageInfo> findEntities(TenantId tenantId, TenantId id, PageLink pageLink) {
  350 + return otaPackageInfoDao.findOtaPackageInfoByTenantId(id, pageLink);
357 351 }
358 352
359 353 @Override
360   - protected void removeEntity(TenantId tenantId, FirmwareInfo entity) {
361   - deleteFirmware(tenantId, entity.getId());
  354 + protected void removeEntity(TenantId tenantId, OtaPackageInfo entity) {
  355 + deleteOtaPackage(tenantId, entity.getId());
362 356 }
363 357 };
364 358
... ... @@ -372,8 +366,8 @@ public class BaseFirmwareService implements FirmwareService {
372 366 }
373 367 }
374 368
375   - private static List<FirmwareId> toFirmwareInfoKey(FirmwareId firmwareId) {
376   - return Collections.singletonList(firmwareId);
  369 + private static List<OtaPackageId> toOtaPackageInfoKey(OtaPackageId otaPackageId) {
  370 + return Collections.singletonList(otaPackageId);
377 371 }
378 372
379 373 }
... ...
dao/src/main/java/org/thingsboard/server/dao/ota/OtaPackageDao.java renamed from dao/src/main/java/org/thingsboard/server/dao/firmware/FirmwareDao.java
... ... @@ -13,11 +13,11 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.firmware;
  16 +package org.thingsboard.server.dao.ota;
17 17
18   -import org.thingsboard.server.common.data.Firmware;
  18 +import org.thingsboard.server.common.data.OtaPackage;
19 19 import org.thingsboard.server.dao.Dao;
20 20
21   -public interface FirmwareDao extends Dao<Firmware> {
  21 +public interface OtaPackageDao extends Dao<OtaPackage> {
22 22
23 23 }
... ...
dao/src/main/java/org/thingsboard/server/dao/ota/OtaPackageInfoDao.java renamed from dao/src/main/java/org/thingsboard/server/dao/firmware/FirmwareInfoDao.java
... ... @@ -13,25 +13,23 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.firmware;
  16 +package org.thingsboard.server.dao.ota;
17 17
18   -import org.thingsboard.server.common.data.FirmwareInfo;
19   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  18 +import org.thingsboard.server.common.data.OtaPackageInfo;
  19 +import org.thingsboard.server.common.data.ota.OtaPackageType;
20 20 import org.thingsboard.server.common.data.id.DeviceProfileId;
21   -import org.thingsboard.server.common.data.id.FirmwareId;
  21 +import org.thingsboard.server.common.data.id.OtaPackageId;
22 22 import org.thingsboard.server.common.data.id.TenantId;
23 23 import org.thingsboard.server.common.data.page.PageData;
24 24 import org.thingsboard.server.common.data.page.PageLink;
25 25 import org.thingsboard.server.dao.Dao;
26 26
27   -import java.util.UUID;
  27 +public interface OtaPackageInfoDao extends Dao<OtaPackageInfo> {
28 28
29   -public interface FirmwareInfoDao extends Dao<FirmwareInfo> {
  29 + PageData<OtaPackageInfo> findOtaPackageInfoByTenantId(TenantId tenantId, PageLink pageLink);
30 30
31   - PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink);
  31 + PageData<OtaPackageInfo> findOtaPackageInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType otaPackageType, boolean hasData, PageLink pageLink);
32 32
33   - PageData<FirmwareInfo> findFirmwareInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, FirmwareType firmwareType, boolean hasData, PageLink pageLink);
34   -
35   - boolean isFirmwareUsed(FirmwareId firmwareId, FirmwareType type, DeviceProfileId deviceProfileId);
  33 + boolean isOtaPackageUsed(OtaPackageId otaPackageId, OtaPackageType otaPackageType, DeviceProfileId deviceProfileId);
36 34
37 35 }
... ...
... ... @@ -96,23 +96,35 @@ public interface DeviceRepository extends PagingAndSortingRepository<DeviceEntit
96 96 Pageable pageable);
97 97
98 98 @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
99   - "AND d.type = :type " +
  99 + "AND d.deviceProfileId = :deviceProfileId " +
100 100 "AND d.firmwareId = null " +
101 101 "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))")
102 102 Page<DeviceEntity> findByTenantIdAndTypeAndFirmwareIdIsNull(@Param("tenantId") UUID tenantId,
103   - @Param("type") String type,
  103 + @Param("deviceProfileId") UUID deviceProfileId,
104 104 @Param("textSearch") String textSearch,
105 105 Pageable pageable);
106 106
107 107 @Query("SELECT d FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
108   - "AND d.type = :type " +
  108 + "AND d.deviceProfileId = :deviceProfileId " +
109 109 "AND d.softwareId = null " +
110 110 "AND LOWER(d.searchText) LIKE LOWER(CONCAT(:textSearch, '%'))")
111 111 Page<DeviceEntity> findByTenantIdAndTypeAndSoftwareIdIsNull(@Param("tenantId") UUID tenantId,
112   - @Param("type") String type,
  112 + @Param("deviceProfileId") UUID deviceProfileId,
113 113 @Param("textSearch") String textSearch,
114 114 Pageable pageable);
115 115
  116 + @Query("SELECT count(*) FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
  117 + "AND d.deviceProfileId = :deviceProfileId " +
  118 + "AND d.firmwareId = null")
  119 + Long countByTenantIdAndDeviceProfileIdAndFirmwareIdIsNull(@Param("tenantId") UUID tenantId,
  120 + @Param("deviceProfileId") UUID deviceProfileId);
  121 +
  122 + @Query("SELECT count(*) FROM DeviceEntity d WHERE d.tenantId = :tenantId " +
  123 + "AND d.deviceProfileId = :deviceProfileId " +
  124 + "AND d.softwareId = null")
  125 + Long countByTenantIdAndDeviceProfileIdAndSoftwareIdIsNull(@Param("tenantId") UUID tenantId,
  126 + @Param("deviceProfileId") UUID deviceProfileId);
  127 +
116 128 @Query("SELECT new org.thingsboard.server.dao.model.sql.DeviceInfoEntity(d, c.title, c.additionalInfo, p.name) " +
117 129 "FROM DeviceEntity d " +
118 130 "LEFT JOIN CustomerEntity c on c.id = d.customerId " +
... ...
... ... @@ -18,6 +18,8 @@ package org.thingsboard.server.dao.sql.device;
18 18 import com.google.common.util.concurrent.ListenableFuture;
19 19 import lombok.extern.slf4j.Slf4j;
20 20 import org.springframework.beans.factory.annotation.Autowired;
  21 +import org.springframework.data.domain.Page;
  22 +import org.springframework.data.domain.Pageable;
21 23 import org.springframework.data.repository.CrudRepository;
22 24 import org.springframework.stereotype.Component;
23 25 import org.springframework.util.StringUtils;
... ... @@ -27,6 +29,8 @@ import org.thingsboard.server.common.data.DeviceTransportType;
27 29 import org.thingsboard.server.common.data.EntitySubtype;
28 30 import org.thingsboard.server.common.data.EntityType;
29 31 import org.thingsboard.server.common.data.id.TenantId;
  32 +import org.thingsboard.server.common.data.ota.OtaPackageType;
  33 +import org.thingsboard.server.common.data.ota.OtaPackageUtil;
30 34 import org.thingsboard.server.common.data.page.PageData;
31 35 import org.thingsboard.server.common.data.page.PageLink;
32 36 import org.thingsboard.server.dao.DaoUtil;
... ... @@ -155,23 +159,27 @@ public class JpaDeviceDao extends JpaAbstractSearchTextDao<DeviceEntity, Device>
155 159 }
156 160
157 161 @Override
158   - public PageData<Device> findDevicesByTenantIdAndTypeAndEmptyFirmware(UUID tenantId, String type, PageLink pageLink) {
159   - return DaoUtil.toPageData(
160   - deviceRepository.findByTenantIdAndTypeAndFirmwareIdIsNull(
161   - tenantId,
162   - type,
163   - Objects.toString(pageLink.getTextSearch(), ""),
164   - DaoUtil.toPageable(pageLink)));
  162 + public PageData<Device> findDevicesByTenantIdAndTypeAndEmptyOtaPackage(UUID tenantId,
  163 + UUID deviceProfileId,
  164 + OtaPackageType type,
  165 + PageLink pageLink) {
  166 + Pageable pageable = DaoUtil.toPageable(pageLink);
  167 + String searchText = Objects.toString(pageLink.getTextSearch(), "");
  168 + Page<DeviceEntity> page = OtaPackageUtil.getByOtaPackageType(
  169 + () -> deviceRepository.findByTenantIdAndTypeAndFirmwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
  170 + () -> deviceRepository.findByTenantIdAndTypeAndSoftwareIdIsNull(tenantId, deviceProfileId, searchText, pageable),
  171 + type
  172 + );
  173 + return DaoUtil.toPageData(page);
165 174 }
166 175
167 176 @Override
168   - public PageData<Device> findDevicesByTenantIdAndTypeAndEmptySoftware(UUID tenantId, String type, PageLink pageLink) {
169   - return DaoUtil.toPageData(
170   - deviceRepository.findByTenantIdAndTypeAndSoftwareIdIsNull(
171   - tenantId,
172   - type,
173   - Objects.toString(pageLink.getTextSearch(), ""),
174   - DaoUtil.toPageable(pageLink)));
  177 + public Long countDevicesByTenantIdAndDeviceProfileIdAndEmptyOtaPackage(UUID tenantId, UUID deviceProfileId, OtaPackageType type) {
  178 + return OtaPackageUtil.getByOtaPackageType(
  179 + () -> deviceRepository.countByTenantIdAndDeviceProfileIdAndFirmwareIdIsNull(tenantId, deviceProfileId),
  180 + () -> deviceRepository.countByTenantIdAndDeviceProfileIdAndSoftwareIdIsNull(tenantId, deviceProfileId),
  181 + type
  182 + );
175 183 }
176 184
177 185 @Override
... ...
dao/src/main/java/org/thingsboard/server/dao/sql/ota/JpaOtaPackageDao.java renamed from dao/src/main/java/org/thingsboard/server/dao/sql/firmware/JpaFirmwareDao.java
... ... @@ -13,34 +13,34 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.sql.firmware;
  16 +package org.thingsboard.server.dao.sql.ota;
17 17
18 18 import lombok.extern.slf4j.Slf4j;
19 19 import org.springframework.beans.factory.annotation.Autowired;
20 20 import org.springframework.data.repository.CrudRepository;
21 21 import org.springframework.stereotype.Component;
22   -import org.thingsboard.server.common.data.Firmware;
23   -import org.thingsboard.server.dao.firmware.FirmwareDao;
24   -import org.thingsboard.server.dao.model.sql.FirmwareEntity;
  22 +import org.thingsboard.server.common.data.OtaPackage;
  23 +import org.thingsboard.server.dao.ota.OtaPackageDao;
  24 +import org.thingsboard.server.dao.model.sql.OtaPackageEntity;
25 25 import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
26 26
27 27 import java.util.UUID;
28 28
29 29 @Slf4j
30 30 @Component
31   -public class JpaFirmwareDao extends JpaAbstractSearchTextDao<FirmwareEntity, Firmware> implements FirmwareDao {
  31 +public class JpaOtaPackageDao extends JpaAbstractSearchTextDao<OtaPackageEntity, OtaPackage> implements OtaPackageDao {
32 32
33 33 @Autowired
34   - private FirmwareRepository firmwareRepository;
  34 + private OtaPackageRepository otaPackageRepository;
35 35
36 36 @Override
37   - protected Class<FirmwareEntity> getEntityClass() {
38   - return FirmwareEntity.class;
  37 + protected Class<OtaPackageEntity> getEntityClass() {
  38 + return OtaPackageEntity.class;
39 39 }
40 40
41 41 @Override
42   - protected CrudRepository<FirmwareEntity, UUID> getCrudRepository() {
43   - return firmwareRepository;
  42 + protected CrudRepository<OtaPackageEntity, UUID> getCrudRepository() {
  43 + return otaPackageRepository;
44 44 }
45 45
46 46 }
... ...
dao/src/main/java/org/thingsboard/server/dao/sql/ota/JpaOtaPackageInfoDao.java renamed from dao/src/main/java/org/thingsboard/server/dao/sql/firmware/JpaFirmwareInfoDao.java
... ... @@ -13,22 +13,22 @@
13 13 * See the License for the specific language governing permissions and
14 14 * limitations under the License.
15 15 */
16   -package org.thingsboard.server.dao.sql.firmware;
  16 +package org.thingsboard.server.dao.sql.ota;
17 17
18 18 import lombok.extern.slf4j.Slf4j;
19 19 import org.springframework.beans.factory.annotation.Autowired;
20 20 import org.springframework.data.repository.CrudRepository;
21 21 import org.springframework.stereotype.Component;
22   -import org.thingsboard.server.common.data.FirmwareInfo;
23   -import org.thingsboard.server.common.data.firmware.FirmwareType;
  22 +import org.thingsboard.server.common.data.OtaPackageInfo;
  23 +import org.thingsboard.server.common.data.ota.OtaPackageType;
24 24 import org.thingsboard.server.common.data.id.DeviceProfileId;
25   -import org.thingsboard.server.common.data.id.FirmwareId;
  25 +import org.thingsboard.server.common.data.id.OtaPackageId;
26 26 import org.thingsboard.server.common.data.id.TenantId;
27 27 import org.thingsboard.server.common.data.page.PageData;
28 28 import org.thingsboard.server.common.data.page.PageLink;
29 29 import org.thingsboard.server.dao.DaoUtil;
30   -import org.thingsboard.server.dao.firmware.FirmwareInfoDao;
31   -import org.thingsboard.server.dao.model.sql.FirmwareInfoEntity;
  30 +import org.thingsboard.server.dao.ota.OtaPackageInfoDao;
  31 +import org.thingsboard.server.dao.model.sql.OtaPackageInfoEntity;
32 32 import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao;
33 33
34 34 import java.util.Objects;
... ... @@ -36,39 +36,39 @@ import java.util.UUID;
36 36
37 37 @Slf4j
38 38 @Component
39   -public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEntity, FirmwareInfo> implements FirmwareInfoDao {
  39 +public class JpaOtaPackageInfoDao extends JpaAbstractSearchTextDao<OtaPackageInfoEntity, OtaPackageInfo> implements OtaPackageInfoDao {
40 40
41 41 @Autowired
42   - private FirmwareInfoRepository firmwareInfoRepository;
  42 + private OtaPackageInfoRepository otaPackageInfoRepository;
43 43
44 44 @Override
45   - protected Class<FirmwareInfoEntity> getEntityClass() {
46   - return FirmwareInfoEntity.class;
  45 + protected Class<OtaPackageInfoEntity> getEntityClass() {
  46 + return OtaPackageInfoEntity.class;
47 47 }
48 48
49 49 @Override
50   - protected CrudRepository<FirmwareInfoEntity, UUID> getCrudRepository() {
51   - return firmwareInfoRepository;
  50 + protected CrudRepository<OtaPackageInfoEntity, UUID> getCrudRepository() {
  51 + return otaPackageInfoRepository;
52 52 }
53 53
54 54 @Override
55   - public FirmwareInfo findById(TenantId tenantId, UUID id) {
56   - return DaoUtil.getData(firmwareInfoRepository.findFirmwareInfoById(id));
  55 + public OtaPackageInfo findById(TenantId tenantId, UUID id) {
  56 + return DaoUtil.getData(otaPackageInfoRepository.findOtaPackageInfoById(id));
57 57 }
58 58
59 59 @Override
60   - public FirmwareInfo save(TenantId tenantId, FirmwareInfo firmwareInfo) {
61   - FirmwareInfo savedFirmware = super.save(tenantId, firmwareInfo);
62   - if (firmwareInfo.getId() == null) {
63   - return savedFirmware;
  60 + public OtaPackageInfo save(TenantId tenantId, OtaPackageInfo otaPackageInfo) {
  61 + OtaPackageInfo savedOtaPackage = super.save(tenantId, otaPackageInfo);
  62 + if (otaPackageInfo.getId() == null) {
  63 + return savedOtaPackage;
64 64 } else {
65   - return findById(tenantId, savedFirmware.getId().getId());
  65 + return findById(tenantId, savedOtaPackage.getId().getId());
66 66 }
67 67 }
68 68
69 69 @Override
70   - public PageData<FirmwareInfo> findFirmwareInfoByTenantId(TenantId tenantId, PageLink pageLink) {
71   - return DaoUtil.toPageData(firmwareInfoRepository
  70 + public PageData<OtaPackageInfo> findOtaPackageInfoByTenantId(TenantId tenantId, PageLink pageLink) {
  71 + return DaoUtil.toPageData(otaPackageInfoRepository
72 72 .findAllByTenantId(
73 73 tenantId.getId(),
74 74 Objects.toString(pageLink.getTextSearch(), ""),
... ... @@ -76,19 +76,19 @@ public class JpaFirmwareInfoDao extends JpaAbstractSearchTextDao<FirmwareInfoEnt
76 76 }
77 77
78 78 @Override
79   - public PageData<FirmwareInfo> findFirmwareInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, FirmwareType firmwareType, boolean hasData, PageLink pageLink) {
80   - return DaoUtil.toPageData(firmwareInfoRepository
  79 + public PageData<OtaPackageInfo> findOtaPackageInfoByTenantIdAndDeviceProfileIdAndTypeAndHasData(TenantId tenantId, DeviceProfileId deviceProfileId, OtaPackageType otaPackageType, boolean hasData, PageLink pageLink) {
  80 + return DaoUtil.toPageData(otaPackageInfoRepository
81 81 .findAllByTenantIdAndTypeAndDeviceProfileIdAndHasData(
82 82 tenantId.getId(),
83 83 deviceProfileId.getId(),
84   - firmwareType,
  84 + otaPackageType,
85 85 hasData,
86 86 Objects.toString(pageLink.getTextSearch(), ""),
87 87 DaoUtil.toPageable(pageLink)));
88 88 }
89 89
90 90 @Override
91   - public boolean isFirmwareUsed(FirmwareId firmwareId, FirmwareType type, DeviceProfileId deviceProfileId) {
92   - return firmwareInfoRepository.isFirmwareUsed(firmwareId.getId(), deviceProfileId.getId(), type.name());
  91 + public boolean isOtaPackageUsed(OtaPackageId otaPackageId, OtaPackageType otaPackageType, DeviceProfileId deviceProfileId) {
  92 + return otaPackageInfoRepository.isOtaPackageUsed(otaPackageId.getId(), deviceProfileId.getId(), otaPackageType.name());
93 93 }
94 94 }
... ...