@Test public void testAddGroup() { Group g1 = database.getRootGroup().addGroup(database.newGroup("group1")); Assert.assertTrue (database.getRootGroup().getGroups().size() == 1); Assert.assertTrue (g1.getName().equals("group1")); Assert.assertTrue (g1.getGroups().size() == 0); Assert.assertTrue (g1.getEntries().size() == 0); Assert.assertTrue("root is not the parent of its child", g1.getParent().equals(database.getRootGroup())); Group g2 = database.newGroup(); assertEquals("", g2.getName()); Assert.assertNotNull(g2.getUuid()); assertEquals(0, g2.getIcon().getIndex()); assertEquals(0, g2.getGroups().size()); assertEquals(0, g2.getEntries().size()); // show that the list of groups is a copy database.getRootGroup().getGroups().clear(); Assert.assertTrue(database.getRootGroup().getGroups().size() == 1); Assert.assertTrue (g1.getEntries().size() == 0); }
/** * local helper to determine the level of a group while building group structure * * @return -3 if detached branch, -2 if no parent, -1 if root, 0 if top level etc. */ int computedLevel() { if (isRootGroup()) { return -1; } int level = 0; Group currentParent = parent; if (currentParent == null) { return -2; } while (!currentParent.isRootGroup()) { currentParent = currentParent.getParent(); if (currentParent == null) { return -3; } level++; } return level; }
@Override public void emptyRecycleBin() { G recycle = getRecycleBin(); if (recycle == null) { return; } for (G g: recycle.getGroups()){ recycle.removeGroup(g); } for (E e: recycle.getEntries()){ recycle.removeEntry(e); } }
/** * Splice - add a group from one database to a parent from another (or copy from the same db) */ public void splice(G newParent, Group<?, ?, ?, ?> groupToSplice) { G addedGroup = newParent.addGroup(newParent.getDatabase().newGroup(groupToSplice)); addedGroup.copy(groupToSplice); }
@Override public void startVisit(Group group) { if (!recycle && group.getUuid().equals(uuid)) { groups.add((G) group); } if (group.isRecycleBin()) { recycle = true; } }
D database = getDatabase(); G root = database.getRootGroup(); Assert.assertTrue(root.isRootGroup()); assertEquals(0, root.getGroups().size()); assertEquals(0, root.getEntries().size()); UUID newGroupUUID = group1.getUuid(); root.addGroup(group1); assertEquals("Group 1", group1.getName()); Assert.assertFalse(group1.isRootGroup()); Assert.assertTrue(root.isRootGroup()); assertEquals(1, root.getGroups().size()); assertEquals(newGroupUUID, root.getGroups().get(0).getUuid()); group1.setParent(root); root.addGroup(group1); root.removeGroup(group1); Assert.assertTrue(group1.getParent() == null); assertEquals(0, root.getGroups().size()); root.addGroup(group1); assertEquals(1, root.getGroups().size()); assertEquals(newGroupUUID, root.getGroups().get(0).getUuid()); root.setParent(group1); Assert.fail("Cannot add root group to another group"); } catch (Exception ignored) {
@Test public void testDeleteGroup () { Group<D,G,E,I> g1 = database.getRootGroup().addGroup(database.newGroup("group1")); List<? extends G> l1 = database.getRootGroup().findGroups("group1"); Assert.assertTrue(l1.size() == 1); G g2 = l1.get(0); Assert.assertTrue (g2.equals(g1)); Group g3 = database.getRootGroup().removeGroup(g2); Assert.assertTrue (g3.equals(g1)); Assert.assertTrue(g1.getParent() == null); Assert.assertTrue(database.getRootGroup().getGroups().size() == 0); Assert.assertTrue(database.getRootGroup().findGroups("group1").size() == 0); }
assertEquals(5, output.getRootGroup().getGroupsCount()); Group group = input.getRootGroup().getGroups().get(g); assertEquals(g.toString(), group.getName()); assertEquals(g + 1, group.getEntries().size()); assertEquals(g+1, group.getEntriesCount()); assertEquals(input.getRootGroup(), group.getParent()); for (int e = 0; e <= g; e++) { Entry entry = (Entry) group.getEntries().get(e); assertEquals(g + "-" + e, entry.getTitle()); assertEquals(g + " - un - " + e, entry.getUsername());
@Override public boolean deleteGroup(final UUID uuid) { G g = findGroup(uuid); if (g==null) { return false; } g.getParent().removeGroup(g); if (isRecycleBinEnabled()) { getRecycleBin().addGroup(g); } return true; }
@Override public boolean deleteEntry(final UUID uuid) { E e = findEntry(uuid); if (e == null) { return false; } e.getParent().removeEntry(e); if (isRecycleBinEnabled()) { getRecycleBin().addEntry(e); } return true; }
@Test public void recycleBinGroups() { database.enableRecycleBin(true); assertTrue(database.isRecycleBinEnabled()); G recycleBin = database.getRecycleBin(); assertNotNull(recycleBin); G group= database.newGroup(); assertEquals(group, database.getRootGroup().addGroup(group)); assertEquals(2, database.getRootGroup().getGroupsCount()); assertTrue(database.deleteGroup(group.getUuid())); assertEquals(1, database.getRootGroup().getGroupsCount()); assertEquals(1, recycleBin.getGroupsCount()); database.enableRecycleBin(false); assertFalse(database.isRecycleBinEnabled()); group = database.newGroup(); assertEquals(group, database.getRootGroup().addGroup(group)); assertEquals(2, database.getRootGroup().getGroupsCount()); assertTrue(database.deleteGroup(group.getUuid())); assertEquals(1, database.getRootGroup().getGroupsCount()); assertEquals(1, recycleBin.getGroupsCount()); database.emptyRecycleBin(); assertEquals(0, recycleBin.getGroupsCount()); }
/** * Group by title */ public G groupByTitle(D database) { List<? extends E> entries = database.findEntries(new Entry.Matcher() { @Override public boolean matches(Entry entry) { return entry.getProperty(Entry.STANDARD_PROPERTY_NAME_TITLE).toLowerCase().contains("findme!"); } }); // create a new group using DB factory method G newParent = database.newGroup("Found entries"); // iterate over the found entries for (E entry : entries) { // copy the entry using DB factory so it remains where it was found as well as being in new group E copy = database.newEntry(entry); // add new entry to new group newParent.addEntry(copy); } return newParent; }
@Test public void testEmptyDatabase() { Assert.assertTrue (database.getRootGroup().getName().equals("Root")); Assert.assertTrue (database.getRootGroup().getEntries().size() == 0); Assert.assertTrue (database.getRootGroup().getGroups().size() == 0); }
@Override public void startVisit(Group group) { if (group != null && uuid.equals(group.getUuid())) { foundGroup = group; } } }
@Override public String getPath() { Stack<Group> parents = new Stack<>(); Group parent = this; parents.push(this); while ((parent=parent.getParent()) != null) { parents.push(parent); } String result = "/"; while (parents.size() > 0) { result = result + parents.pop().getName() + "/"; } return result; }
@Test public void recycleBinEntries() { database.enableRecycleBin(false); assertFalse(database.isRecycleBinEnabled()); assertNull(database.getRecycleBin()); database.enableRecycleBin(true); assertTrue(database.isRecycleBinEnabled()); G recycleBin = database.getRecycleBin(); assertNotNull(recycleBin); E entry = database.newEntry(); assertEquals(entry, database.getRootGroup().addEntry(entry)); assertEquals(1, database.getRootGroup().getEntriesCount()); assertTrue(database.deleteEntry(entry.getUuid())); assertEquals(0, database.getRootGroup().getEntriesCount()); assertEquals(1, recycleBin.getEntriesCount()); database.enableRecycleBin(false); assertFalse(database.isRecycleBinEnabled()); entry = database.newEntry(); assertEquals(entry, database.getRootGroup().addEntry(entry)); assertEquals(1, database.getRootGroup().getEntriesCount()); assertTrue(database.deleteEntry(entry.getUuid())); assertEquals(0, database.getRootGroup().getEntriesCount()); assertEquals(1, recycleBin.getEntriesCount()); database.emptyRecycleBin(); assertEquals(0, recycleBin.getEntriesCount()); }
@Override public void visit(G group, Visitor visitor) { if (visitor.isEntriesFirst()) { for (E entry : group.getEntries()) { visitor.visit(entry); } } for (G g : group.getGroups()) { visitor.startVisit(g); visit(g, visitor); visitor.endVisit(g); } if (!visitor.isEntriesFirst()) { for (Entry entry : group.getEntries()) { visitor.visit(entry); } } }