package marubinotto.piggydb.ui.page.partial; import marubinotto.piggydb.model.FragmentRepository; import marubinotto.piggydb.model.exception.BaseDataObsoleteException; import marubinotto.util.procedure.Procedure; public class SaveFragment extends AbstractSubmitFragmentForm { public Long parentId; public String success; public Long newId; public Long getParentId() { return this.parentId; } @Override protected void setModels() throws Exception { super.setModels(); if (this.fragment == null) { this.fragment = getDomain().getFragmentRepository().newInstance(getUser()); } bindValues(); if (!hasErrors()) saveFragment(); } protected void saveFragment() throws Exception { // register if (this.fragment.getId() == null) { this.newId = (Long)getDomain().getTransaction().execute(new Procedure() { public Object execute(Object input) throws Exception { FragmentRepository repository = getDomain().getFragmentRepository(); long newId = repository.register(getFragment()); if (getParentId() != null) { repository.createRelation(getParentId(), newId, getUser()); } return newId; } }); this.success = getMessage("completed-register-fragment", this.html.linkToFragment(this.newId), false); } // update else { final boolean minorEdit = isMinorEditAvailable() && isMinorEdit(); try { getDomain().getTransaction().execute(new Procedure() { public Object execute(Object input) throws Exception { FragmentRepository repository = getDomain().getFragmentRepository(); repository.update(getFragment(), !minorEdit); return null; } }); } catch (BaseDataObsoleteException e) { this.error = getMessage("FragmentForm-base-data-obsolete"); } } } }