package marubinotto.piggydb.ui.page.partial; import marubinotto.piggydb.model.Fragment; import marubinotto.piggydb.model.Tag; public class AddTag extends AbstractPartial { public Long fragmentId; public Long tagId; public Fragment fragment; @Override protected void setModels() throws Exception { super.setModels(); // fragment setFragment(); if (this.fragment == null) return; // tag Tag tag = getTag(); if (tag == null) return; // tagging this.fragment.addTagByUser(tag, getUser()); try { getDomain().saveFragment(this.fragment, getUser()); } catch (Exception e) { setFragment(); // restore the original data throw e; } } private void setFragment() throws Exception { if (this.fragmentId == null) return; this.fragment = getDomain().getFragmentRepository().get(this.fragmentId); } private Tag getTag() throws Exception { if (this.tagId == null) return null; return getDomain().getTagRepository().get(this.tagId); } }