private void touch() { touchElement(LAST_MODIFICATION_TIME_ELEMENT_NAME, this.element); this.database.setDirty(true); } }
public void setName(String name) { DomHelper.setElementContent("DatabaseName", dbMeta, name); DomHelper.touchElement("DatabaseNameChanged", dbMeta); setDirty(true); }
@Override public void setDescription(String description) { DomHelper.setElementContent("DatabaseDescription", dbMeta, description); DomHelper.touchElement("DatabaseDescriptionChanged", dbMeta); setDirty(true); }
@Override public void setIcon(DomIconWrapper icon) { DomHelper.getElement(DomHelper.ICON_ELEMENT_NAME, element, true).setTextContent(String.valueOf(icon.getIndex())); DomHelper.touchElement(DomHelper.LAST_MODIFICATION_TIME_ELEMENT_NAME, element); database.setDirty(true); }
@Override public void setBinaryProperty(String name, byte[] value) { Element property = DomHelper.getElement(String.format(DomHelper.BINARY_PROPERTY_ELEMENT_FORMAT, name), element, false); if (property == null) { property = DomHelper.newElement("Binary", element); DomHelper.setElementContent("Key", property, name); } DomHelper.setBinaryElementContent(DomHelper.VALUE_ELEMENT_NAME, property, value); DomHelper.touchElement(DomHelper.LAST_MODIFICATION_TIME_ELEMENT_NAME, element); database.setDirty(true); }
@Override public void setProperty(String name, String value) { Element property = DomHelper.getElement(String.format(DomHelper.PROPERTY_ELEMENT_FORMAT, name), element, false); if (property == null) { property = DomHelper.newElement("String", element); DomHelper.setElementContent("Key", property, name); } DomHelper.setElementContent(DomHelper.VALUE_ELEMENT_NAME, property, value); DomHelper.touchElement(DomHelper.LAST_MODIFICATION_TIME_ELEMENT_NAME, element); database.setDirty(true); }
@Override public DomGroupWrapper addGroup(DomGroupWrapper group) { if (group.isRootGroup()) { throw new IllegalStateException("Cannot set root group as child of another group"); } // skip if this is a new group with no parent if (group.getParent() != null) { group.getParent().touch(); group.getParent().removeGroup(group); } element.appendChild(group.element); touchElement("Times/LocationChanged", group.element); touch(); return group; }
@Override public DomGroupWrapper getRecycleBin() { String UUIDcontent = getElementContent(RECYCLE_BIN_UUID_ELEMENT_NAME, dbMeta); if (UUIDcontent != null){ final UUID uuid = Helpers.uuidFromBase64(UUIDcontent); if (uuid.getLeastSignificantBits() != 0 && uuid.getMostSignificantBits() != 0) { for (DomGroupWrapper g: getRootGroup().getGroups()) { if (g.getUuid().equals(uuid)) { return g; } } // the recycle bin seems to have been lost, better create another one } // uuid was 0 i.e. there isn't one } // no recycle bin group set up if (!isRecycleBinEnabled()) { return null; } DomGroupWrapper g = newGroup(); g.setName("Recycle Bin"); getRootGroup().addGroup(g); ensureElementContent(RECYCLE_BIN_UUID_ELEMENT_NAME, dbMeta, base64FromUuid(g.getUuid())); touchElement(RECYCLE_BIN_CHANGED_ELEMENT_NAME, dbMeta); return g; }