Skip to content

Instantly share code, notes, and snippets.

@earlwlkr
Created December 21, 2016 10:04
Show Gist options
  • Save earlwlkr/38edb256228e86ebeefd286e851d42a0 to your computer and use it in GitHub Desktop.
Save earlwlkr/38edb256228e86ebeefd286e851d42a0 to your computer and use it in GitHub Desktop.
@RequestMapping(value = ControllerUtils.API_DPS_UPDATE_DIMMING_LEVEL, method = RequestMethod.POST)
@ResponseBody
public final ApiUpdateOperationResponseForm apiUpdateDpsDimmingLevel(
@PathVariable long id,
@ModelAttribute final ApiUpdateDpsDimmingLevelRequestForm request) {
final ApiUpdateOperationResponseForm modelData = new ApiUpdateOperationResponseForm();
try {
DpsDto dpsDto = dpsService.getDpsById(id);
if (dpsDto.getId() == null) {
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_DPS_TARGET_ID_INVALID);
return modelData;
}
Integer dimmingLevel;
try {
dimmingLevel = Integer.parseInt(request.getDimmingLevel());
} catch (NumberFormatException e) {
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_DPS_DIMMING_LEVEL_INVALID);
return modelData;
}
if (dimmingLevel < ProjectConstants.MIN_DIM_LEVEL || dimmingLevel > 100) {
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_DPS_DIMMING_LEVEL_INVALID);
return modelData;
}
if (dpsDto.getModbusNum() == null) {
// unassigned DPS
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_DPS_UNASSIGNED_INVALID);
return modelData;
} else if (checkIsMlcInOperaton(dpsDto.getDeviceId()) == MlcOperatorStateEnum.BUSY) {
// MLC busy
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_MLC_BUSY);
return modelData;
} else if (checkIsMlcInOperaton(dpsDto.getDeviceId()) == MlcOperatorStateEnum.TRY_TO_RESEND) {
// MLC in trying to resend state
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.API_MLC_TRY_TO_RESEND);
return modelData;
}
dpsDto.setState(OperatorStateEnum.INPROCESS.getValue());
dpsService.updateDps(dpsDto);
updateStatusMlcInOperaton(dpsDto);
// send rabbitMQ message to observer
rabbitMQSender.setTopic(RabbitMQConstants.DPS_NOTIFY_ROUTING);
String rabbitMQMessage = String.format("%s:%d;%d", RabbitMQConstants.CHANGE_DIMMING_LEVEL_ACTION,
dpsDto.getDeviceId(), dimmingLevel);
rabbitMQSender.setMessage(rabbitMQMessage);
rabbitMQSender.sendRabbitMQMessage();
if (dpsDto.isMode()) {
rabbitMQSender.setTopic(RabbitMQConstants.DPS_NOTIFY_ROUTING);
rabbitMQMessage = RabbitMQConstants.CHANGE_MODE_ACTION
+ ":" + dpsDto.getDeviceId() + ";false";
rabbitMQSender.setMessage(rabbitMQMessage);
rabbitMQSender.sendRabbitMQMessage();
}
modelData.setResult(true);
} catch (BusinessException ex) {
modelData.setResult(false);
String errorMessage = this.getMessage(ex.getErrorCode(), ex.getParams());
modelData.setErrorCode(ex.getErrorCode());
logger.error(errorMessage, ex);
} catch (Exception ex) {
modelData.setResult(false);
modelData.setErrorCode(ErrorCodeConstant.INTERNAL_ERROR);
logger.error(ex.getMessage(), ex);
}
return modelData;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment