private void createItem(Instruction instr, DatabaseCore databaseCore) { Map<String, Object> data = instr.getData(); ModifiableItem item = databaseCore .getDataFactory() .createItem( instr.getTarget(), data.getOrDefault("date", "").toString(), data.getOrDefault("name", "").toString(), data.getOrDefault("data", "").toString()); if (data.containsKey("tags")) item.addTags(parseTags(data.get("tags"), databaseCore)); databaseCore.addItem(item); }
private void processTag(Instruction instr, DatabaseCore databaseCore) { switch (instr.getOperationType()) { case CREATE: createTag(instr, databaseCore); return; case EDIT: editTag(instr, databaseCore); return; case DELETE: databaseCore.removeTag(instr.getTarget()); } }
private void editItem(Instruction instr, DatabaseCore databaseCore) { Map<String, Object> data = instr.getData(); ModifiableItem item = databaseCore.getItemChecked(instr.getTarget()); if (data.containsKey("name")) item.setName(data.get("name").toString()); if (data.containsKey("date")) item.setDate(data.get("date").toString()); if (data.containsKey("data")) item.setData(data.get("data").toString()); if (data.containsKey("tags")) { item.removeAllTags(); item.addTags(parseTags(data.get("tags"), databaseCore)); } }
private void editTag(Instruction instr, DatabaseCore core) { Map<String, Object> data = instr.getData(); ModifiableTag tag = core.getTagChecked(instr.getTarget()); if (data.containsKey("name")) tag.setName(data.get("name").toString()); if (data.containsKey("parent")) { int newParentID = (int) data.get("parent"); ModifiableTag oldParent = ((ModifiableTag) tag.getParent()); ModifiableTag newParent = core.getTagChecked(newParentID); if (newParentID == oldParent.getID()) return; // beze změny - stejný nadřazený štítek if (Tags.sameBranch(tag, newParent)) throw new RuntimeException("same branch!"); // odstranění odkazu z předchozího nadřazeného štítku oldParent.removeChild(tag); tag.setParent(newParent); newParent.addChild(tag); } }
private void createTag(Instruction instr, DatabaseCore databaseCore) { Map<String, Object> data = instr.getData(); ModifiableTag tag = databaseCore .getDataFactory() .createTag(instr.getTarget(), data.getOrDefault("name", "").toString()); ModifiableTag parent; if (data.containsKey("parent")) { // explicitně uvedeno int parentID = (int) data.get("parent"); parent = databaseCore.getTagChecked(parentID); } else { // výchozí - ROOT parent = databaseCore.getRootTag(); } tag.setParent(parent); parent.addChild(tag); databaseCore.addTag(tag); }