/** * Обработчик события сохранения 'save' В зависимости от состояния выполняет сохранение * существующего или создание нового объекта. * * <p>Метод используется в случае использования стандартного сервиса работы с данными * JepStandardService. При реализации в прикладном модуле собственного сервиса необходимо в * презентере-наследнике прикладного модуля реализовать перекрывающий метод onSave(). */ public void onSave(SaveEvent event) { if (fields.isValid()) { JepRecord formProperties = fields.getValues(); logger.debug(this.getClass() + ".onSave(): formProperties = " + formProperties); // Для подчинённых объектов добавляется foreignKey. if (JepScopeStack.instance.size() > 1 || !JepScopeStack.instance.peek().isMainActive()) { JepClientUtil.addForeignKey(formProperties); } // Для режима редактирования текущую запись // необходимо дополнить или переписать значениями с формы. if (EDIT.equals(_workstate)) { JepRecord updatedRecord = new JepRecord(currentRecord); updatedRecord.update(formProperties); formProperties = updatedRecord; } // Если не выполнены первоначальные условия проверки, то выходим из сохранения. if (!beforeSave(formProperties)) return; eventBus.setSaveButtonEnabled(false); if (CREATE.equals(_workstate)) { saveOnCreate(formProperties); } else if (EDIT.equals(_workstate)) { saveOnEdit(formProperties); } } else { messageBox.showError(clientFactory.getTexts().errors_dialog_form_incorrectInputData()); } }
/** * {@inheritDoc}<br> * Обрабатываем лишь специфичные для детальной формы состояния. */ @Override protected boolean isAcceptableWorkstate(WorkstateEnum workstate) { return SEARCH.equals(workstate) || CREATE.equals(workstate) || VIEW_DETAILS.equals(workstate) || EDIT.equals(workstate); }
protected void onChangeWorkstate(WorkstateEnum workstate) { fields.changeWorkstate(workstate); if (VIEW_DETAILS.equals(workstate)) { fields.setValues(currentRecord); updateScope(workstate); } else if (EDIT.equals(workstate)) { fields.setValues(currentRecord); updateScope(workstate); } else if (CREATE.equals(workstate)) { fields.clear(); resetScope(); } else if (SEARCH.equals(workstate)) { if (searchTemplate != null) { // Если есть сохраненные поисковые параметры, то восстановим их. fields.setValues(searchTemplate); } else { // Очистим поля, если сохраненные поисковые параметры отсутствуют. fields.clear(); } resetScope(); } }