Created
December 21, 2016 10:04
-
-
Save earlwlkr/38edb256228e86ebeefd286e851d42a0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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