From 602c4c4501dcd89cbce1d6ba61ba6bc75761d643 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Sat, 18 Jan 2014 11:23:45 +0000
Subject: [PATCH] #396 feature - Getting all orgs from user including the children ones
---
securis/src/main/java/net/curisit/securis/db/User.java | 26 ++++++++++++++++++++++----
1 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/User.java b/securis/src/main/java/net/curisit/securis/db/User.java
index 1de7b9f..7f57cf8 100644
--- a/securis/src/main/java/net/curisit/securis/db/User.java
+++ b/securis/src/main/java/net/curisit/securis/db/User.java
@@ -3,7 +3,9 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
@@ -70,7 +72,7 @@
inverseJoinColumns =
{ @JoinColumn(name = "organization_id", referencedColumnName = "id") } //
)
- private List<Organization> organizations;
+ private Set<Organization> organizations;
public String getUsername() {
return username;
@@ -160,17 +162,17 @@
this.lang = lang;
}
- public List<Organization> getOrganizations() {
+ public Set<Organization> getOrganizations() {
return organizations;
}
- public void setOrganizations(List<Organization> organizations) {
+ public void setOrganizations(Set<Organization> organizations) {
this.organizations = organizations;
}
@JsonProperty("organizations_ids")
public void setOrgsIds(List<Integer> orgsIds) {
- organizations = new ArrayList<>();
+ organizations = new HashSet<>();
for (Integer orgid : orgsIds) {
Organization o = new Organization();
o.setId(orgid);
@@ -189,6 +191,22 @@
return ids;
}
+ @JsonIgnore
+ public Set<Integer> getAllOrgsIds() {
+ if (organizations == null)
+ return null;
+ Set<Integer> ids = new HashSet<>();
+ includeAllOrgs(this.organizations, ids);
+ return ids;
+ }
+
+ private void includeAllOrgs(Set<Organization> list, Set<Integer> orgIds) {
+ for (Organization org : list) {
+ orgIds.add(org.getId());
+ includeAllOrgs(org.getChildOrganizations(), orgIds);
+ }
+ }
+
static public class Rol {
static public final int ADVANCE = 0x01;
static public final int ADMIN = 0x02;
--
Gitblit v1.3.2