From 8dc3bd2c4c87e7bfb5cbb24fc51cbce214008f2d Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Thu, 13 Oct 2016 17:19:27 -0300
Subject: [PATCH] Implement private group creation and fetching in
 PrivateGroupManager

---
 .../api/privategroup/PrivateGroupManager.java |  3 ++
 .../privategroup/PrivateGroupManagerImpl.java | 35 ++++++++++++++++++-
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/briar-api/src/org/briarproject/api/privategroup/PrivateGroupManager.java b/briar-api/src/org/briarproject/api/privategroup/PrivateGroupManager.java
index 956a423446..f2253c99a7 100644
--- a/briar-api/src/org/briarproject/api/privategroup/PrivateGroupManager.java
+++ b/briar-api/src/org/briarproject/api/privategroup/PrivateGroupManager.java
@@ -18,6 +18,9 @@ public interface PrivateGroupManager extends MessageTracker {
 	@NotNull
 	ClientId getClientId();
 
+	/** Adds a new private group. */
+	GroupId addPrivateGroup(String name) throws DbException;
+
 	/** Removes a dissolved private group. */
 	void removePrivateGroup(GroupId g) throws DbException;
 
diff --git a/briar-core/src/org/briarproject/privategroup/PrivateGroupManagerImpl.java b/briar-core/src/org/briarproject/privategroup/PrivateGroupManagerImpl.java
index 6f40bd9c6c..05c2d4021c 100644
--- a/briar-core/src/org/briarproject/privategroup/PrivateGroupManagerImpl.java
+++ b/briar-core/src/org/briarproject/privategroup/PrivateGroupManagerImpl.java
@@ -28,6 +28,7 @@ import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.security.GeneralSecurityException;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.logging.Logger;
@@ -70,6 +71,21 @@ public class PrivateGroupManagerImpl extends BdfIncomingMessageHook implements
 		return CLIENT_ID;
 	}
 
+	@Override
+	public GroupId addPrivateGroup(String name) throws DbException {
+		PrivateGroup group;
+		Transaction txn = db.startTransaction(false);
+		try {
+			LocalAuthor a = identityManager.getLocalAuthor(txn);
+			group = privateGroupFactory.createPrivateGroup(name, a);
+			db.addGroup(txn, group.getGroup());
+			txn.setComplete();
+		} finally {
+			db.endTransaction(txn);
+		}
+		return group.getId();
+	}
+
 	@Override
 	public void removePrivateGroup(GroupId g) throws DbException {
 
@@ -137,7 +153,24 @@ public class PrivateGroupManagerImpl extends BdfIncomingMessageHook implements
 	@NotNull
 	@Override
 	public Collection<PrivateGroup> getPrivateGroups() throws DbException {
-		return Collections.emptyList();
+		Collection<Group> groups;
+		Transaction txn = db.startTransaction(true);
+		try {
+			groups = db.getGroups(txn, getClientId());
+			txn.setComplete();
+		} finally {
+			db.endTransaction(txn);
+		}
+		try {
+			Collection<PrivateGroup> privateGroups =
+					new ArrayList<PrivateGroup>(groups.size());
+			for (Group g : groups) {
+				privateGroups.add(privateGroupFactory.parsePrivateGroup(g));
+			}
+			return privateGroups;
+		} catch (FormatException e) {
+			throw new DbException(e);
+		}
 	}
 
 	@Override
-- 
GitLab