diff --git a/pom.xml b/pom.xml
index 93b1af6..e12bd39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,13 @@
1.7.7
provided
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.17.0
+ provided
+
diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java
index ac52b8c..5ffbfdf 100644
--- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java
+++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java
@@ -19,13 +19,13 @@ import org.apache.guacamole.environment.Environment;
import org.apache.guacamole.environment.LocalEnvironment;
public class Wallix {
-
+
+ private final static String HEADER_AUTH_USER = "X-Auth-User";
+
+ private final static String HEADER_AUTH_KEY = "X-Auth-Key";
+
private static Wallix INSTANCE;
- private static String HEADER_AUTH_USER = "X-Auth-User";
-
- private static String HEADER_AUTH_KEY = "X-Auth-Key";
-
private String url;
private String user;
@@ -109,5 +109,13 @@ public class Wallix {
throw e;
}
}
+
+ public final class API {
+
+ public static final String ATTRIBUTE_GROUP_NAME = "group_name";
+
+ public static final String ATTRIBUTE_GROUP_USERS = "users";
+
+ }
}
diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java
index 3d593e2..c40eed3 100644
--- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java
+++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java
@@ -1,11 +1,17 @@
package cm.soungui.guacamole.ext.wallix.sync;
+import java.util.ArrayList;
import java.util.List;
import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.environment.LocalEnvironment;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
import cm.soungui.guacamole.ext.wallix.sync.db.DB;
+import cm.soungui.guacamole.ext.wallix.sync.db.User;
import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup;
public class WallixConfigSynchronizer implements Runnable {
@@ -36,11 +42,13 @@ public class WallixConfigSynchronizer implements Runnable {
System.out.println("Synchronizing groups");
System.out.println("Getting Wallix groups");
printWallixVersion();
- getWallixGroups();
+ List wallixGroups = getWallixGroups();
+ System.out.println("Wallix Groups");
+ wallixGroups.forEach(group -> System.out.println(group.getName()));
DB db = DB.getInstance();
- List groups = db.getUserGroups();
- for (UserGroup group : groups) {
+ List dbGroups = db.getUserGroups();
+ for (UserGroup group : dbGroups) {
System.out.println("ID : " + group.getId() + " - Name : " + group.getName());
}
}
@@ -51,10 +59,30 @@ public class WallixConfigSynchronizer implements Runnable {
System.out.println(output);
}
- private void getWallixGroups() throws Exception {
+ private List getWallixGroups() throws Exception {
Wallix wallix = Wallix.getInstance();
String output = wallix.get("/usergroups");
- System.out.println(output);
+
+ ObjectMapper objectMapper = new ObjectMapper();
+ JsonNode jsonNode = objectMapper.readTree(output);
+ List list = new ArrayList<>();
+
+ jsonNode.elements().forEachRemaining((e) -> {
+ ObjectNode node = (ObjectNode) e;
+
+ UserGroup group = new UserGroup();
+ group.setName(node.findValue(Wallix.API.ATTRIBUTE_GROUP_NAME).asText());
+
+ node.findValues(Wallix.API.ATTRIBUTE_GROUP_USERS).forEach(userNode -> {
+ User user = new User();
+ user.setName(userNode.textValue());
+ group.getMembers().add(user);
+ });
+
+ list.add(group);
+ });
+
+ return list;
}
}
diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java
index f2ae275..b03c70a 100644
--- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java
+++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java
@@ -1,18 +1,22 @@
package cm.soungui.guacamole.ext.wallix.sync.db;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.HashSet;
+import java.util.Set;
public class UserGroup extends Entity {
private int groupId;
- private List members = new ArrayList<>();
+ private Set members = new HashSet<>();
@Override
public EntityType getType() {
return EntityType.GROUP;
}
+
+ @Override
+ public void setType(EntityType type) {
+ }
public int getGroupId() {
return groupId;
@@ -22,7 +26,7 @@ public class UserGroup extends Entity {
this.groupId = groupId;
}
- public List getMembers() {
+ public Set getMembers() {
return members;
}