/** * Update. * * @param request the request * @return the response */ @RequestMapping(value = UPDATE, method = RequestMethod.POST) @ResponseBody public Response update(@RequestBody Map<String, Object> request) { ScheduleResponse response = new ScheduleResponse(); try { ScheduleRequest scheduleRequest = new ScheduleRequest(new DMSchedule(Integer.parseInt(request.get(ID).toString()))); // ADD user context to request addUserContextToRequest(scheduleRequest); response = getScheduleBCF().fetchScheduleById(scheduleRequest); if (!response.isOperationSuccess()) { return response; } DMSchedule schedule = response.getSchedules().get(0); if (STATUS_PAUSED.equals(request.get(TYPE))) { schedule.setStatusEnum(ScheduleStatusEnum.PAUSED); } else if (STATUS_RESUME.equals(request.get(TYPE))) { schedule.setStatusEnum(ScheduleStatusEnum.ENABLED); } else if (STATUS_FAILED.equals(request.get(TYPE))) { schedule.setStatusEnum(ScheduleStatusEnum.ENABLED); // New Next Execution Date Date serverUTC = DMConvertUtil.convertDateToDefaultUTC(new Date()); // New Action Date = New Next Execution Date + (Old Action Date - Old Next Execution Date) Date actionDate = DMConvertUtil.convertDateToDefaultUTC( DMConvertUtil.convertIntegerToDate( DMConvertUtil.convertDateToInteger(serverUTC) + (DMConvertUtil.convertDateToInteger( DMConvertUtil.convertDateToDefaultUTC( schedule.getDmAction().getActionTime())) - DMConvertUtil.convertDateToInteger( DMConvertUtil.convertDateToDefaultUTC( schedule.getFrequency().getNextExecution()))))); schedule.getDmAction().setActionTime(actionDate); schedule.getFrequency().setNextExecution(serverUTC); } scheduleRequest.setSchedule(schedule); response = getScheduleBCF().updateScheduleStatus(scheduleRequest); } catch (Exception e) { SensusInterfaceUtil.handleException( LOG, response, e, DEFAULT_EXCEPTION_MSG, new String[] {CONTROLLER_EXCEPTION_MSG}); } return response; }