Использую обработку изменения параметра:
Код:
// После изменения
if (event instanceof ParamChangedEvent) {
ParamChangedEvent changedEvent = (ParamChangedEvent) event;
con = Setup.getSetup().getDBConnectionFromPool();
processDao = new ProcessDAO(con);
processTypeDao = new ProcessTypeDAO(con);
processPrf = new Preferences((processTypeDao.getProcessType(processDao.getProcess(changedEvent.getObjectId()).getTypeId()).getProperties().getConfig()));
/*
* Постобработка времени работы
*/
if(changedEvent.getParameter().getId() == PARAM_WORKDATETIME){
handleWorkDateTimeAfter(changedEvent);
}
/*
* Обрабатываем изменеине параметров для Гугл календаря
*/
if((Arrays.asList(GOOGLE_PARAMS_ID)).contains(changedEvent.getParameter().getId())){
handleGoogleParams(changedEvent);
}
}
handleGoogleParams(changedEvent) выглядит вот так:
Код:
/**
* Обработка параметров в гугл календаре
*
* @param changedEvent
* @throws BGException
*/
private void handleGoogleParams(ParamChangedEvent changedEvent) throws BGException {
String calendarId = processPrf.get("google.cal:calendarId", "");
if(!Utils.isEmptyString(calendarId)){
try {
this.con.commit();
} catch (SQLException e) {
log.error(e.getMessage(), e);
}
GoogleHandler googleHandler = new GoogleHandler(processDao.getProcess(changedEvent.getObjectId()), this.con, processPrf);
googleHandler.processCalendar();
}
}
суть в том, что GoogleHandler видит старые значения параметров, но ведь перед запуском ParamChangedEvent в БД уже измененное значение или еще нет??