Skip to content

Commit

Permalink
Fixed mor id not set before update
Browse files Browse the repository at this point in the history
  • Loading branch information
cpoder committed Mar 13, 2024
1 parent ccd0838 commit 008929f
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions java/lora-ns-ms/src/main/java/lora/ns/device/LNSDeviceService.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,22 @@ private ManagedObjectRepresentation createDeviceWithNameFromLns(String lnsInstan
public void addDeviceProperty(ManagedObjectRepresentation mor, String key, Object value) {
mor.setProperty(key, value);
ManagedObjectRepresentation update = new ManagedObjectRepresentation();
update.setId(mor.getId());
update.setProperty(key, value);
inventoryApi.update(update);
}

public void addDeviceProperty(ManagedObjectRepresentation mor, Object value) {
mor.set(value);
ManagedObjectRepresentation update = new ManagedObjectRepresentation();
update.setId(mor.getId());
update.set(value);
inventoryApi.update(update);
}

public void upsertDevice(String lnsConnectorId, DeviceData event) {
loraContextService.log("Upsert device with devEui {} with Payload {} from fPort {}", event.getDevEui(),
event.getPayload(), event.getfPort());
event.getPayload(), event.getfPort());
ManagedObjectRepresentation mor = getOrCreateDevice(lnsConnectorId, event.getDevEui());
boolean useGatewayPosition = !mor.hasProperty("useGatewayPosition") || (Boolean) mor.get("useGatewayPosition");
if (event.getModel() == null && mor.get(Hardware.class) != null) {
Expand All @@ -113,8 +115,8 @@ public void upsertDevice(String lnsConnectorId, DeviceData event) {
loraContextService.log("Using gateway position to locate device: {}, {}", event.getLat(), event.getLng());
updateLocation(event, mor);
}
if (!mor.hasProperty(LNSIntegrationService.LNS_CONNECTOR_REF)
|| !mor.getProperty(LNSIntegrationService.LNS_CONNECTOR_REF).toString().equals(lnsConnectorId)) {
if (!mor.hasProperty(LNSIntegrationService.LNS_CONNECTOR_REF) || !mor
.getProperty(LNSIntegrationService.LNS_CONNECTOR_REF).toString().equals(lnsConnectorId)) {
addDeviceProperty(mor, LNSIntegrationService.LNS_CONNECTOR_REF, lnsConnectorId);
}
updateCodec(mor);
Expand All @@ -132,7 +134,7 @@ public void upsertDevice(String lnsConnectorId, DeviceData event) {
private void updateCodec(ManagedObjectRepresentation mor) {
DeviceCodecRepresentation codec = mor.get(DeviceCodecRepresentation.class);
if (mor.getProperty(CODEC_PROPERTY) != null
&& (codec == null || !codec.getId().equals(mor.getProperty(CODEC_PROPERTY)))) {
&& (codec == null || !codec.getId().equals(mor.getProperty(CODEC_PROPERTY)))) {
CodecProxy codecProxy = codecManager.getCodec(mor.getProperty(CODEC_PROPERTY).toString());
if (codecProxy != null) {
addDeviceProperty(mor, codecProxy);
Expand Down Expand Up @@ -214,32 +216,32 @@ public String getDeviceEui(GId id) {
}
if (result == null) {
loraContextService.log("Device {} has no external Ids or does not exist in tenant {}.", id,
subscriptionsService.getTenant());
subscriptionsService.getTenant());
}
} else {
loraContextService.log("Device {} has no external Ids or does not exist in tenant {}.", id,
subscriptionsService.getTenant());
subscriptionsService.getTenant());
}
return result;
}

public Optional<ManagedObjectRepresentation> getDevice(String devEui) {
return c8yUtils.findExternalId(devEui, C8YUtils.DEVEUI_TYPE)
.map(extId -> Optional.of(inventoryApi.get(extId.getManagedObject().getId())))
.orElse(Optional.empty());
.map(extId -> Optional.of(inventoryApi.get(extId.getManagedObject().getId())))
.orElse(Optional.empty());
}

public ManagedObjectRepresentation mustGetDevice(String devEui) {
return c8yUtils.findExternalId(devEui, C8YUtils.DEVEUI_TYPE)
.map(extId -> inventoryApi.get(extId.getManagedObject().getId()))
.orElseThrow(() -> new DeviceNotFoundException(devEui));
.map(extId -> inventoryApi.get(extId.getManagedObject().getId()))
.orElseThrow(() -> new DeviceNotFoundException(devEui));
}

public void getDeviceConfig(ManagedObjectRepresentation mor) {
if (codecManager.getAvailableOperations(mor) != null
&& codecManager.getAvailableOperations(mor).containsKey(GET_CONFIG_COMMAND)) {
&& codecManager.getAvailableOperations(mor).containsKey(GET_CONFIG_COMMAND)) {
OperationCollection oc = deviceControlApi.getOperationsByFilter(
new OperationFilter().byDevice(mor.getId().getValue()).byStatus(OperationStatus.EXECUTING));
new OperationFilter().byDevice(mor.getId().getValue()).byStatus(OperationStatus.EXECUTING));
for (OperationRepresentation o : oc.get(2000).allPages()) {
if (o.get(Command.class) != null && o.get(Command.class).getText().contains(GET_CONFIG_COMMAND)) {
return;
Expand All @@ -254,7 +256,7 @@ public void getDeviceConfig(ManagedObjectRepresentation mor) {
}

private ManagedObjectRepresentation initDevice(ManagedObjectRepresentation device,
DeviceProvisioning deviceProvisioning) {
DeviceProvisioning deviceProvisioning) {
var update = new ManagedObjectRepresentation();
update.setId(device.getId());
if (deviceProvisioning.getCodec() != null) {
Expand All @@ -272,8 +274,7 @@ private ManagedObjectRepresentation initDevice(ManagedObjectRepresentation devic
return inventoryApi.update(update);
}

public ManagedObjectRepresentation provisionDevice(String lnsConnectorId,
DeviceProvisioning deviceProvisioning) {
public ManagedObjectRepresentation provisionDevice(String lnsConnectorId, DeviceProvisioning deviceProvisioning) {
loraContextService.log("Will provision device on LNS connector {}: {}", lnsConnectorId, deviceProvisioning);
ManagedObjectRepresentation mor = null;
LNSConnector connector = lnsConnectorManager.getConnector(lnsConnectorId);
Expand Down

0 comments on commit 008929f

Please sign in to comment.