public DomDatabaseWrapper () throws IOException { init(); }
@Override public Database load(KdbxCreds creds, InputStream inputStream) throws Exception { return DomDatabaseWrapper.load(creds, inputStream); } }
@Override public DomIconWrapper newIcon(Integer i) { DomIconWrapper icon = newIcon(); icon.setIndex(i); return icon; }
@Override public DomEntryWrapper removeEntry(DomEntryWrapper e12) { element.removeChild(e12.element); database.setDirty(true); return e12; }
@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; }
public static DomDatabaseWrapper load (Credentials credentials, InputStream inputStream) throws IOException { return new DomDatabaseWrapper(new KdbxStreamFormat(), credentials, inputStream); }
@Override public DomGroupWrapper removeGroup(DomGroupWrapper g1) { element.removeChild(g1.element); database.setDirty(true); return g1; }
@Override public void setName(String name) { setElementContent(NAME_ELEMENT_NAME, element, name); database.setDirty(true); }
public DomDatabaseWrapper (StreamFormat streamFormat, Credentials credentials, InputStream inputStream) throws IOException { streamFormat.load(domDatabase, credentials, inputStream); init(); }
@Override public boolean removeBinaryProperty(String name) { boolean wasRemoved = DomHelper.removeElement(String.format(DomHelper.BINARY_PROPERTY_ELEMENT_FORMAT, name), element); if (wasRemoved) database.setDirty(true); return wasRemoved; }
private void touch() { touchElement(LAST_MODIFICATION_TIME_ELEMENT_NAME, this.element); this.database.setDirty(true); } }
@Override public DomEntryWrapper addEntry(DomEntryWrapper entry) { if (entry.getParent() != null) { entry.element.getParentNode().removeChild(element); } element.appendChild(entry.element); database.setDirty(true); return entry; }
@Override public boolean removeProperty(String name) throws IllegalArgumentException { if (STANDARD_PROPERTY_NAMES.contains(name)) throw new IllegalArgumentException("may not remove property: " + name); boolean wasRemoved = DomHelper.removeElement(String.format(DomHelper.PROPERTY_ELEMENT_FORMAT, name), element); if (wasRemoved) database.setDirty(true); return wasRemoved; }
public void save(StreamFormat streamFormat, Credentials credentials, OutputStream outputStream) throws IOException { streamFormat.save(domDatabase, credentials, outputStream); setDirty(false); }
@Override public void setIcon(DomIconWrapper icon) { setElementContent(ICON_ELEMENT_NAME, element, String.valueOf(icon.getIndex())); database.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 save(Credentials credentials, OutputStream outputStream) throws IOException { new KdbxStreamFormat().save(domDatabase, credentials, outputStream); setDirty(false); }
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 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); }