public AuthKey updateAuth(Auth auth, CommonRequestArgs cra) {
if (!authDao.hasAccess(SecurityConstants.SYSTEM_ID,
SecurityConstants.SEC_FUNC_AUTHS, AccessMode.WRITE, cra)) {
ApplicationException.exception(DAOMessageID.UNAUTHORIZED.getMessage());
}
Auth oldAuth = readAuth(auth.getAuthId(), cra);
if (oldAuth == null) {
ApplicationException.exception(DAOMessageID.UPDATE_FAILURE.getMessage());
}
Date sd = null;
if (!isNullOrEmpty(auth.getStartDate())) {
try {
sd = CommonDateFormat.YYYYMMDD_HHMM.parse(auth.getStartDate());
} catch (ParseException ex) {
ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("Start date").setSysId(SecurityConstants.SYSTEM_ID));
}
}
Date ed = null;
if (!isNullOrEmpty(auth.getEndDate())) {
try {
ed = CommonDateFormat.YYYYMMDD_HHMM.parse(auth.getEndDate());
} catch (ParseException ex) {
ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("End date").setSysId(SecurityConstants.SYSTEM_ID));
}
}
if (sd != null && ed != null && sd.after(ed)) {
ApplicationException.exception(CommonMessageID.INVALID_ARG.getMessage("End date").setSysId(SecurityConstants.SYSTEM_ID));
}
long dataId = oldAuth.getDataId() != null ? oldAuth.getDataId().longValue() : -1;
dataId = dataDao.updateData(dataId, auth.getData(), cra);
if (auth.getData() != null && auth.getData().size() == 0) {
dataId = -1; // no data bundle attached to authorisation.
}