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); }