Showing
12 changed files
with
95 additions
and
23 deletions
@@ -63,6 +63,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | @@ -63,6 +63,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | ||
63 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, | 63 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, |
64 | created_time bigint NOT NULL, | 64 | created_time bigint NOT NULL, |
65 | tenant_id uuid NOT NULL, | 65 | tenant_id uuid NOT NULL, |
66 | + type varchar(32) NOT NULL, | ||
66 | title varchar(255) NOT NULL, | 67 | title varchar(255) NOT NULL, |
67 | version varchar(255) NOT NULL, | 68 | version varchar(255) NOT NULL, |
68 | file_name varchar(255), | 69 | file_name varchar(255), |
@@ -22,7 +22,6 @@ import org.thingsboard.rule.engine.api.RuleEngineTelemetryService; | @@ -22,7 +22,6 @@ import org.thingsboard.rule.engine.api.RuleEngineTelemetryService; | ||
22 | import org.thingsboard.server.common.data.DataConstants; | 22 | import org.thingsboard.server.common.data.DataConstants; |
23 | import org.thingsboard.server.common.data.Device; | 23 | import org.thingsboard.server.common.data.Device; |
24 | import org.thingsboard.server.common.data.DeviceProfile; | 24 | import org.thingsboard.server.common.data.DeviceProfile; |
25 | -import org.thingsboard.server.common.data.Firmware; | ||
26 | import org.thingsboard.server.common.data.FirmwareInfo; | 25 | import org.thingsboard.server.common.data.FirmwareInfo; |
27 | import org.thingsboard.server.common.data.id.DeviceId; | 26 | import org.thingsboard.server.common.data.id.DeviceId; |
28 | import org.thingsboard.server.common.data.id.FirmwareId; | 27 | import org.thingsboard.server.common.data.id.FirmwareId; |
@@ -35,7 +34,6 @@ import org.thingsboard.server.common.data.kv.StringDataEntry; | @@ -35,7 +34,6 @@ import org.thingsboard.server.common.data.kv.StringDataEntry; | ||
35 | import org.thingsboard.server.common.data.kv.TsKvEntry; | 34 | import org.thingsboard.server.common.data.kv.TsKvEntry; |
36 | import org.thingsboard.server.common.data.page.PageData; | 35 | import org.thingsboard.server.common.data.page.PageData; |
37 | import org.thingsboard.server.common.data.page.PageLink; | 36 | import org.thingsboard.server.common.data.page.PageLink; |
38 | -import org.thingsboard.server.common.msg.queue.TbCallback; | ||
39 | import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; | 37 | import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; |
40 | import org.thingsboard.server.dao.device.DeviceProfileService; | 38 | import org.thingsboard.server.dao.device.DeviceProfileService; |
41 | import org.thingsboard.server.dao.device.DeviceService; | 39 | import org.thingsboard.server.dao.device.DeviceService; |
@@ -59,6 +57,11 @@ import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_CHECKSUM | @@ -59,6 +57,11 @@ import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_CHECKSUM | ||
59 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_SIZE; | 57 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_SIZE; |
60 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_TITLE; | 58 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_TITLE; |
61 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_VERSION; | 59 | import static org.thingsboard.server.common.data.DataConstants.FIRMWARE_VERSION; |
60 | +import static org.thingsboard.server.common.data.DataConstants.SOFTWARE_CHECKSUM; | ||
61 | +import static org.thingsboard.server.common.data.DataConstants.SOFTWARE_CHECKSUM_ALGORITHM; | ||
62 | +import static org.thingsboard.server.common.data.DataConstants.SOFTWARE_SIZE; | ||
63 | +import static org.thingsboard.server.common.data.DataConstants.SOFTWARE_TITLE; | ||
64 | +import static org.thingsboard.server.common.data.DataConstants.SOFTWARE_VERSION; | ||
62 | 65 | ||
63 | @Slf4j | 66 | @Slf4j |
64 | @Service | 67 | @Service |
@@ -185,9 +188,18 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | @@ -185,9 +188,18 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | ||
185 | fwStateMsgProducer.send(tpi, new TbProtoQueueMsg<>(UUID.randomUUID(), msg), null); | 188 | fwStateMsgProducer.send(tpi, new TbProtoQueueMsg<>(UUID.randomUUID(), msg), null); |
186 | 189 | ||
187 | List<TsKvEntry> telemetry = new ArrayList<>(); | 190 | List<TsKvEntry> telemetry = new ArrayList<>(); |
188 | - telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_FIRMWARE_TITLE, firmware.getTitle()))); | ||
189 | - telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_FIRMWARE_VERSION, firmware.getVersion()))); | ||
190 | - telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_STATE, FirmwareUpdateStatus.QUEUED.name()))); | 191 | + switch (firmware.getType()) { |
192 | + case FIRMWARE: | ||
193 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_FIRMWARE_TITLE, firmware.getTitle()))); | ||
194 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_FIRMWARE_VERSION, firmware.getVersion()))); | ||
195 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_STATE, FirmwareUpdateStatus.QUEUED.name()))); | ||
196 | + break; | ||
197 | + case SOFTWARE: | ||
198 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_SOFTWARE_TITLE, firmware.getTitle()))); | ||
199 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.TARGET_SOFTWARE_VERSION, firmware.getVersion()))); | ||
200 | + telemetry.add(new BasicTsKvEntry(ts, new StringDataEntry(DataConstants.SOFTWARE_STATE, FirmwareUpdateStatus.QUEUED.name()))); | ||
201 | + break; | ||
202 | + } | ||
191 | 203 | ||
192 | telemetryService.saveAndNotify(tenantId, deviceId, telemetry, new FutureCallback<>() { | 204 | telemetryService.saveAndNotify(tenantId, deviceId, telemetry, new FutureCallback<>() { |
193 | @Override | 205 | @Override |
@@ -223,12 +235,23 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | @@ -223,12 +235,23 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | ||
223 | 235 | ||
224 | List<AttributeKvEntry> attributes = new ArrayList<>(); | 236 | List<AttributeKvEntry> attributes = new ArrayList<>(); |
225 | 237 | ||
226 | - attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_TITLE, firmware.getTitle()))); | ||
227 | - attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_VERSION, firmware.getVersion()))); | 238 | + switch (firmware.getType()) { |
239 | + case SOFTWARE: | ||
240 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_TITLE, firmware.getTitle()))); | ||
241 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_VERSION, firmware.getVersion()))); | ||
242 | + attributes.add(new BaseAttributeKvEntry(ts, new LongDataEntry(DataConstants.FIRMWARE_SIZE, firmware.getDataSize()))); | ||
243 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_CHECKSUM_ALGORITHM, firmware.getChecksumAlgorithm()))); | ||
244 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_CHECKSUM, firmware.getChecksum()))); | ||
245 | + break; | ||
246 | + case FIRMWARE: | ||
247 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(SOFTWARE_TITLE, firmware.getTitle()))); | ||
248 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(SOFTWARE_VERSION, firmware.getVersion()))); | ||
249 | + attributes.add(new BaseAttributeKvEntry(ts, new LongDataEntry(SOFTWARE_SIZE, firmware.getDataSize()))); | ||
250 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(SOFTWARE_CHECKSUM_ALGORITHM, firmware.getChecksumAlgorithm()))); | ||
251 | + attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(SOFTWARE_CHECKSUM, firmware.getChecksum()))); | ||
252 | + break; | ||
253 | + } | ||
228 | 254 | ||
229 | - attributes.add(new BaseAttributeKvEntry(ts, new LongDataEntry(FIRMWARE_SIZE, firmware.getDataSize()))); | ||
230 | - attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_CHECKSUM_ALGORITHM, firmware.getChecksumAlgorithm()))); | ||
231 | - attributes.add(new BaseAttributeKvEntry(ts, new StringDataEntry(DataConstants.FIRMWARE_CHECKSUM, firmware.getChecksum()))); | ||
232 | telemetryService.saveAndNotify(tenantId, deviceId, DataConstants.SHARED_SCOPE, attributes, new FutureCallback<>() { | 255 | telemetryService.saveAndNotify(tenantId, deviceId, DataConstants.SHARED_SCOPE, attributes, new FutureCallback<>() { |
233 | @Override | 256 | @Override |
234 | public void onSuccess(@Nullable Void tmp) { | 257 | public void onSuccess(@Nullable Void tmp) { |
@@ -244,7 +267,8 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | @@ -244,7 +267,8 @@ public class DefaultFirmwareStateService implements FirmwareStateService { | ||
244 | 267 | ||
245 | private void remove(Device device) { | 268 | private void remove(Device device) { |
246 | telemetryService.deleteAndNotify(device.getTenantId(), device.getId(), DataConstants.SHARED_SCOPE, | 269 | telemetryService.deleteAndNotify(device.getTenantId(), device.getId(), DataConstants.SHARED_SCOPE, |
247 | - Arrays.asList(FIRMWARE_TITLE, FIRMWARE_VERSION, FIRMWARE_SIZE, FIRMWARE_CHECKSUM_ALGORITHM, FIRMWARE_CHECKSUM), | 270 | + Arrays.asList(FIRMWARE_TITLE, FIRMWARE_VERSION, FIRMWARE_SIZE, FIRMWARE_CHECKSUM_ALGORITHM, FIRMWARE_CHECKSUM, |
271 | + SOFTWARE_TITLE, SOFTWARE_VERSION, SOFTWARE_SIZE, SOFTWARE_CHECKSUM_ALGORITHM, SOFTWARE_CHECKSUM), | ||
248 | new FutureCallback<>() { | 272 | new FutureCallback<>() { |
249 | @Override | 273 | @Override |
250 | public void onSuccess(@Nullable Void tmp) { | 274 | public void onSuccess(@Nullable Void tmp) { |
@@ -93,21 +93,37 @@ public class DataConstants { | @@ -93,21 +93,37 @@ public class DataConstants { | ||
93 | public static final String USERNAME = "username"; | 93 | public static final String USERNAME = "username"; |
94 | public static final String PASSWORD = "password"; | 94 | public static final String PASSWORD = "password"; |
95 | 95 | ||
96 | + public static final String EDGE_MSG_SOURCE = "edge"; | ||
97 | + public static final String MSG_SOURCE_KEY = "source"; | ||
98 | + | ||
96 | //firmware | 99 | //firmware |
97 | //telemetry | 100 | //telemetry |
98 | - public static final String CURRENT_FIRMWARE_TITLE = "cur_fw_title"; | ||
99 | - public static final String CURRENT_FIRMWARE_VERSION = "cur_fw_version"; | 101 | + public static final String CURRENT_FIRMWARE_TITLE = "current_fw_title"; |
102 | + public static final String CURRENT_FIRMWARE_VERSION = "current_fw_version"; | ||
100 | public static final String TARGET_FIRMWARE_TITLE = "target_fw_title"; | 103 | public static final String TARGET_FIRMWARE_TITLE = "target_fw_title"; |
101 | public static final String TARGET_FIRMWARE_VERSION = "target_fw_version"; | 104 | public static final String TARGET_FIRMWARE_VERSION = "target_fw_version"; |
102 | public static final String FIRMWARE_STATE = "fw_state"; | 105 | public static final String FIRMWARE_STATE = "fw_state"; |
103 | 106 | ||
104 | //attributes | 107 | //attributes |
105 | - //telemetry | ||
106 | public static final String FIRMWARE_TITLE = "fw_title"; | 108 | public static final String FIRMWARE_TITLE = "fw_title"; |
107 | public static final String FIRMWARE_VERSION = "fw_version"; | 109 | public static final String FIRMWARE_VERSION = "fw_version"; |
108 | public static final String FIRMWARE_SIZE = "fw_size"; | 110 | public static final String FIRMWARE_SIZE = "fw_size"; |
109 | public static final String FIRMWARE_CHECKSUM = "fw_checksum"; | 111 | public static final String FIRMWARE_CHECKSUM = "fw_checksum"; |
110 | public static final String FIRMWARE_CHECKSUM_ALGORITHM = "fw_checksum_algorithm"; | 112 | public static final String FIRMWARE_CHECKSUM_ALGORITHM = "fw_checksum_algorithm"; |
111 | - public static final String EDGE_MSG_SOURCE = "edge"; | ||
112 | - public static final String MSG_SOURCE_KEY = "source"; | 113 | + |
114 | + //software | ||
115 | + //telemetry | ||
116 | + public static final String CURRENT_SOFTWARE_TITLE = "current_sw_title"; | ||
117 | + public static final String CURRENT_SOFTWARE_VERSION = "current_sw_version"; | ||
118 | + public static final String TARGET_SOFTWARE_TITLE = "target_sw_title"; | ||
119 | + public static final String TARGET_SOFTWARE_VERSION = "target_sw_version"; | ||
120 | + public static final String SOFTWARE_STATE = "sw_state"; | ||
121 | + | ||
122 | + //attributes | ||
123 | + public static final String SOFTWARE_TITLE = "sw_title"; | ||
124 | + public static final String SOFTWARE_VERSION = "sw_version"; | ||
125 | + public static final String SOFTWARE_SIZE = "sw_size"; | ||
126 | + public static final String SOFTWARE_CHECKSUM = "sw_checksum"; | ||
127 | + public static final String SOFTWARE_CHECKSUM_ALGORITHM = "sw_checksum_algorithm"; | ||
128 | + | ||
113 | } | 129 | } |
@@ -29,6 +29,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | @@ -29,6 +29,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | ||
29 | private static final long serialVersionUID = 3168391583570815419L; | 29 | private static final long serialVersionUID = 3168391583570815419L; |
30 | 30 | ||
31 | private TenantId tenantId; | 31 | private TenantId tenantId; |
32 | + private FirmwareType type; | ||
32 | private String title; | 33 | private String title; |
33 | private String version; | 34 | private String version; |
34 | private boolean hasData; | 35 | private boolean hasData; |
@@ -50,6 +51,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | @@ -50,6 +51,7 @@ public class FirmwareInfo extends SearchTextBasedWithAdditionalInfo<FirmwareId> | ||
50 | public FirmwareInfo(FirmwareInfo firmwareInfo) { | 51 | public FirmwareInfo(FirmwareInfo firmwareInfo) { |
51 | super(firmwareInfo); | 52 | super(firmwareInfo); |
52 | this.tenantId = firmwareInfo.getTenantId(); | 53 | this.tenantId = firmwareInfo.getTenantId(); |
54 | + this.type = firmwareInfo.getType(); | ||
53 | this.title = firmwareInfo.getTitle(); | 55 | this.title = firmwareInfo.getTitle(); |
54 | this.version = firmwareInfo.getVersion(); | 56 | this.version = firmwareInfo.getVersion(); |
55 | this.hasData = firmwareInfo.isHasData(); | 57 | this.hasData = firmwareInfo.isHasData(); |
@@ -363,10 +363,11 @@ message GetFirmwareResponseMsg { | @@ -363,10 +363,11 @@ message GetFirmwareResponseMsg { | ||
363 | ResponseStatus responseStatus = 1; | 363 | ResponseStatus responseStatus = 1; |
364 | int64 firmwareIdMSB = 2; | 364 | int64 firmwareIdMSB = 2; |
365 | int64 firmwareIdLSB = 3; | 365 | int64 firmwareIdLSB = 3; |
366 | - string title = 4; | ||
367 | - string version = 5; | ||
368 | - string contentType = 6; | ||
369 | - string fileName = 7; | 366 | + string type = 4; |
367 | + string title = 5; | ||
368 | + string version = 6; | ||
369 | + string contentType = 7; | ||
370 | + string fileName = 8; | ||
370 | } | 371 | } |
371 | 372 | ||
372 | //Used to report session state to tb-Service and persist this state in the cache on the tb-Service level. | 373 | //Used to report session state to tb-Service and persist this state in the cache on the tb-Service level. |
@@ -476,6 +476,7 @@ public class ModelConstants { | @@ -476,6 +476,7 @@ public class ModelConstants { | ||
476 | */ | 476 | */ |
477 | public static final String FIRMWARE_TABLE_NAME = "firmware"; | 477 | public static final String FIRMWARE_TABLE_NAME = "firmware"; |
478 | public static final String FIRMWARE_TENANT_ID_COLUMN = TENANT_ID_COLUMN; | 478 | public static final String FIRMWARE_TENANT_ID_COLUMN = TENANT_ID_COLUMN; |
479 | + public static final String FIRMWARE_TYPE_COLUMN = "type"; | ||
479 | public static final String FIRMWARE_TITLE_COLUMN = TITLE_PROPERTY; | 480 | public static final String FIRMWARE_TITLE_COLUMN = TITLE_PROPERTY; |
480 | public static final String FIRMWARE_VERSION_COLUMN = "version"; | 481 | public static final String FIRMWARE_VERSION_COLUMN = "version"; |
481 | public static final String FIRMWARE_FILE_NAME_COLUMN = "file_name"; | 482 | public static final String FIRMWARE_FILE_NAME_COLUMN = "file_name"; |
@@ -21,6 +21,7 @@ import lombok.EqualsAndHashCode; | @@ -21,6 +21,7 @@ import lombok.EqualsAndHashCode; | ||
21 | import org.hibernate.annotations.Type; | 21 | import org.hibernate.annotations.Type; |
22 | import org.hibernate.annotations.TypeDef; | 22 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.server.common.data.Firmware; | 23 | import org.thingsboard.server.common.data.Firmware; |
24 | +import org.thingsboard.server.common.data.FirmwareType; | ||
24 | import org.thingsboard.server.common.data.id.FirmwareId; | 25 | import org.thingsboard.server.common.data.id.FirmwareId; |
25 | import org.thingsboard.server.common.data.id.TenantId; | 26 | import org.thingsboard.server.common.data.id.TenantId; |
26 | import org.thingsboard.server.dao.model.BaseSqlEntity; | 27 | import org.thingsboard.server.dao.model.BaseSqlEntity; |
@@ -30,6 +31,8 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | @@ -30,6 +31,8 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | ||
30 | 31 | ||
31 | import javax.persistence.Column; | 32 | import javax.persistence.Column; |
32 | import javax.persistence.Entity; | 33 | import javax.persistence.Entity; |
34 | +import javax.persistence.EnumType; | ||
35 | +import javax.persistence.Enumerated; | ||
33 | import javax.persistence.Table; | 36 | import javax.persistence.Table; |
34 | import java.nio.ByteBuffer; | 37 | import java.nio.ByteBuffer; |
35 | import java.util.UUID; | 38 | import java.util.UUID; |
@@ -43,6 +46,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_FILE_NAME | @@ -43,6 +46,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_FILE_NAME | ||
43 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; | 46 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; |
44 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; | 47 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; |
45 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; | 48 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; |
49 | +import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TYPE_COLUMN; | ||
46 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN; | 50 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN; |
47 | import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY; | 51 | import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY; |
48 | 52 | ||
@@ -56,6 +60,10 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | @@ -56,6 +60,10 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | ||
56 | @Column(name = FIRMWARE_TENANT_ID_COLUMN) | 60 | @Column(name = FIRMWARE_TENANT_ID_COLUMN) |
57 | private UUID tenantId; | 61 | private UUID tenantId; |
58 | 62 | ||
63 | + @Enumerated(EnumType.STRING) | ||
64 | + @Column(name = FIRMWARE_TYPE_COLUMN) | ||
65 | + private FirmwareType type; | ||
66 | + | ||
59 | @Column(name = FIRMWARE_TITLE_COLUMN) | 67 | @Column(name = FIRMWARE_TITLE_COLUMN) |
60 | private String title; | 68 | private String title; |
61 | 69 | ||
@@ -95,6 +103,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | @@ -95,6 +103,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | ||
95 | this.createdTime = firmware.getCreatedTime(); | 103 | this.createdTime = firmware.getCreatedTime(); |
96 | this.setUuid(firmware.getUuidId()); | 104 | this.setUuid(firmware.getUuidId()); |
97 | this.tenantId = firmware.getTenantId().getId(); | 105 | this.tenantId = firmware.getTenantId().getId(); |
106 | + this.type = firmware.getType(); | ||
98 | this.title = firmware.getTitle(); | 107 | this.title = firmware.getTitle(); |
99 | this.version = firmware.getVersion(); | 108 | this.version = firmware.getVersion(); |
100 | this.fileName = firmware.getFileName(); | 109 | this.fileName = firmware.getFileName(); |
@@ -121,6 +130,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | @@ -121,6 +130,7 @@ public class FirmwareEntity extends BaseSqlEntity<Firmware> implements SearchTex | ||
121 | Firmware firmware = new Firmware(new FirmwareId(id)); | 130 | Firmware firmware = new Firmware(new FirmwareId(id)); |
122 | firmware.setCreatedTime(createdTime); | 131 | firmware.setCreatedTime(createdTime); |
123 | firmware.setTenantId(new TenantId(tenantId)); | 132 | firmware.setTenantId(new TenantId(tenantId)); |
133 | + firmware.setType(type); | ||
124 | firmware.setTitle(title); | 134 | firmware.setTitle(title); |
125 | firmware.setVersion(version); | 135 | firmware.setVersion(version); |
126 | firmware.setFileName(fileName); | 136 | firmware.setFileName(fileName); |
@@ -22,6 +22,7 @@ import org.hibernate.annotations.Type; | @@ -22,6 +22,7 @@ import org.hibernate.annotations.Type; | ||
22 | import org.hibernate.annotations.TypeDef; | 22 | import org.hibernate.annotations.TypeDef; |
23 | import org.thingsboard.common.util.JacksonUtil; | 23 | import org.thingsboard.common.util.JacksonUtil; |
24 | import org.thingsboard.server.common.data.FirmwareInfo; | 24 | import org.thingsboard.server.common.data.FirmwareInfo; |
25 | +import org.thingsboard.server.common.data.FirmwareType; | ||
25 | import org.thingsboard.server.common.data.id.FirmwareId; | 26 | import org.thingsboard.server.common.data.id.FirmwareId; |
26 | import org.thingsboard.server.common.data.id.TenantId; | 27 | import org.thingsboard.server.common.data.id.TenantId; |
27 | import org.thingsboard.server.dao.model.BaseSqlEntity; | 28 | import org.thingsboard.server.dao.model.BaseSqlEntity; |
@@ -31,6 +32,8 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | @@ -31,6 +32,8 @@ import org.thingsboard.server.dao.util.mapping.JsonStringType; | ||
31 | 32 | ||
32 | import javax.persistence.Column; | 33 | import javax.persistence.Column; |
33 | import javax.persistence.Entity; | 34 | import javax.persistence.Entity; |
35 | +import javax.persistence.EnumType; | ||
36 | +import javax.persistence.Enumerated; | ||
34 | import javax.persistence.Table; | 37 | import javax.persistence.Table; |
35 | import javax.persistence.Transient; | 38 | import javax.persistence.Transient; |
36 | import java.util.UUID; | 39 | import java.util.UUID; |
@@ -45,6 +48,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_HAS_DATA_ | @@ -45,6 +48,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_HAS_DATA_ | ||
45 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; | 48 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TABLE_NAME; |
46 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; | 49 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TENANT_ID_COLUMN; |
47 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; | 50 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TITLE_COLUMN; |
51 | +import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_TYPE_COLUMN; | ||
48 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN; | 52 | import static org.thingsboard.server.dao.model.ModelConstants.FIRMWARE_VERSION_COLUMN; |
49 | import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY; | 53 | import static org.thingsboard.server.dao.model.ModelConstants.SEARCH_TEXT_PROPERTY; |
50 | 54 | ||
@@ -58,6 +62,10 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -58,6 +62,10 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
58 | @Column(name = FIRMWARE_TENANT_ID_COLUMN) | 62 | @Column(name = FIRMWARE_TENANT_ID_COLUMN) |
59 | private UUID tenantId; | 63 | private UUID tenantId; |
60 | 64 | ||
65 | + @Enumerated(EnumType.STRING) | ||
66 | + @Column(name = FIRMWARE_TYPE_COLUMN) | ||
67 | + private FirmwareType type; | ||
68 | + | ||
61 | @Column(name = FIRMWARE_TITLE_COLUMN) | 69 | @Column(name = FIRMWARE_TITLE_COLUMN) |
62 | private String title; | 70 | private String title; |
63 | 71 | ||
@@ -107,12 +115,13 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -107,12 +115,13 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
107 | this.additionalInfo = firmware.getAdditionalInfo(); | 115 | this.additionalInfo = firmware.getAdditionalInfo(); |
108 | } | 116 | } |
109 | 117 | ||
110 | - public FirmwareInfoEntity(UUID id, long createdTime, UUID tenantId, String title, String version, | 118 | + public FirmwareInfoEntity(UUID id, long createdTime, UUID tenantId, String type, String title, String version, |
111 | String fileName, String contentType, String checksumAlgorithm, String checksum, Long dataSize, | 119 | String fileName, String contentType, String checksumAlgorithm, String checksum, Long dataSize, |
112 | Object additionalInfo, boolean hasData) { | 120 | Object additionalInfo, boolean hasData) { |
113 | this.id = id; | 121 | this.id = id; |
114 | this.createdTime = createdTime; | 122 | this.createdTime = createdTime; |
115 | this.tenantId = tenantId; | 123 | this.tenantId = tenantId; |
124 | + this.type = FirmwareType.valueOf(type); | ||
116 | this.title = title; | 125 | this.title = title; |
117 | this.version = version; | 126 | this.version = version; |
118 | this.fileName = fileName; | 127 | this.fileName = fileName; |
@@ -139,6 +148,7 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | @@ -139,6 +148,7 @@ public class FirmwareInfoEntity extends BaseSqlEntity<FirmwareInfo> implements S | ||
139 | FirmwareInfo firmware = new FirmwareInfo(new FirmwareId(id)); | 148 | FirmwareInfo firmware = new FirmwareInfo(new FirmwareId(id)); |
140 | firmware.setCreatedTime(createdTime); | 149 | firmware.setCreatedTime(createdTime); |
141 | firmware.setTenantId(new TenantId(tenantId)); | 150 | firmware.setTenantId(new TenantId(tenantId)); |
151 | + firmware.setType(type); | ||
142 | firmware.setTitle(title); | 152 | firmware.setTitle(title); |
143 | firmware.setVersion(version); | 153 | firmware.setVersion(version); |
144 | firmware.setFileName(fileName); | 154 | firmware.setFileName(fileName); |
@@ -25,14 +25,14 @@ import org.thingsboard.server.dao.model.sql.FirmwareInfoEntity; | @@ -25,14 +25,14 @@ import org.thingsboard.server.dao.model.sql.FirmwareInfoEntity; | ||
25 | import java.util.UUID; | 25 | import java.util.UUID; |
26 | 26 | ||
27 | public interface FirmwareInfoRepository extends CrudRepository<FirmwareInfoEntity, UUID> { | 27 | public interface FirmwareInfoRepository extends CrudRepository<FirmwareInfoEntity, UUID> { |
28 | - @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.title, f.version, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + | 28 | + @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.type, f.title, f.version, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + |
29 | "f.tenantId = :tenantId " + | 29 | "f.tenantId = :tenantId " + |
30 | "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") | 30 | "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") |
31 | Page<FirmwareInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId, | 31 | Page<FirmwareInfoEntity> findAllByTenantId(@Param("tenantId") UUID tenantId, |
32 | @Param("searchText") String searchText, | 32 | @Param("searchText") String searchText, |
33 | Pageable pageable); | 33 | Pageable pageable); |
34 | 34 | ||
35 | - @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.title, f.version, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + | 35 | + @Query("SELECT new FirmwareInfoEntity(f.id, f.createdTime, f.tenantId, f.type, f.title, f.version, f.fileName, f.contentType, f.checksumAlgorithm, f.checksum, f.dataSize, f.additionalInfo, f.data IS NOT NULL) FROM FirmwareEntity f WHERE " + |
36 | "f.tenantId = :tenantId " + | 36 | "f.tenantId = :tenantId " + |
37 | "AND ((f.data IS NOT NULL AND :hasData = true) OR (f.data IS NULL AND :hasData = false ))" + | 37 | "AND ((f.data IS NOT NULL AND :hasData = true) OR (f.data IS NULL AND :hasData = false ))" + |
38 | "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") | 38 | "AND LOWER(f.searchText) LIKE LOWER(CONCAT(:searchText, '%'))") |
@@ -162,6 +162,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | @@ -162,6 +162,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | ||
162 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, | 162 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, |
163 | created_time bigint NOT NULL, | 163 | created_time bigint NOT NULL, |
164 | tenant_id uuid NOT NULL, | 164 | tenant_id uuid NOT NULL, |
165 | + type varchar(32) NOT NULL, | ||
165 | title varchar(255) NOT NULL, | 166 | title varchar(255) NOT NULL, |
166 | version varchar(255) NOT NULL, | 167 | version varchar(255) NOT NULL, |
167 | file_name varchar(255), | 168 | file_name varchar(255), |
@@ -180,6 +180,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | @@ -180,6 +180,7 @@ CREATE TABLE IF NOT EXISTS firmware ( | ||
180 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, | 180 | id uuid NOT NULL CONSTRAINT firmware_pkey PRIMARY KEY, |
181 | created_time bigint NOT NULL, | 181 | created_time bigint NOT NULL, |
182 | tenant_id uuid NOT NULL, | 182 | tenant_id uuid NOT NULL, |
183 | + type varchar(32) NOT NULL, | ||
183 | title varchar(255) NOT NULL, | 184 | title varchar(255) NOT NULL, |
184 | version varchar(255) NOT NULL, | 185 | version varchar(255) NOT NULL, |
185 | file_name varchar(255), | 186 | file_name varchar(255), |