From 59cdd2b7ebceae94fbecdb1eeb46a969666dc88f Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Fri, 10 Jan 2014 12:25:27 +0000
Subject: [PATCH] #394 feature - Added all catalog resources with refereced fields
---
securis/src/main/java/net/curisit/securis/db/Organization.java | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 56 insertions(+), 1 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/Organization.java b/securis/src/main/java/net/curisit/securis/db/Organization.java
index 71a7ebc..04ac638 100644
--- a/securis/src/main/java/net/curisit/securis/db/Organization.java
+++ b/securis/src/main/java/net/curisit/securis/db/Organization.java
@@ -1,6 +1,7 @@
package net.curisit.securis.db;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -17,7 +18,11 @@
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.annotate.JsonSerialize;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Entity implementation class for Entity: organization
@@ -30,6 +35,9 @@
@NamedQueries(
{ @NamedQuery(name = "list-organizations", query = "SELECT o FROM Organization o") })
public class Organization implements Serializable {
+
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory.getLogger(Organization.class);
private static final long serialVersionUID = 1L;
@@ -44,20 +52,28 @@
@Column(name = "creation_timestamp")
private Date creationTimestamp;
+ @JsonIgnore
+ // We don't include the users to limit the size of each row a the listing
@ManyToMany
@JoinTable(name = "user_organization", //
joinColumns =
{ @JoinColumn(name = "organization_id", referencedColumnName = "id") }, //
inverseJoinColumns =
- { @JoinColumn(name = "user_id", referencedColumnName = "username") })
+ { @JoinColumn(name = "username", referencedColumnName = "username") })
private List<User> users;
+ @JsonIgnore
+ // We don't include the users to limit the size of each row a the listing
@ManyToOne
@JoinColumn(name = "org_parent_id")
private Organization parentOrganization;
public int getId() {
return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
}
public String getName() {
@@ -108,4 +124,43 @@
this.parentOrganization = parentOrganization;
}
+ // Roberto: Following methods are necessary to include in the REST list response
+ // information about the referenced entities.
+ @JsonProperty("org_parent_id")
+ public void setParentOrgId(Integer orgId) {
+ parentOrganization = new Organization();
+ parentOrganization.setId(orgId);
+ }
+
+ @JsonProperty("org_parent_id")
+ public Integer getParentOrgId() {
+ return parentOrganization == null ? null : parentOrganization.getId();
+ }
+
+ @JsonProperty("org_parent_name")
+ public String getParentOrgName() {
+ return parentOrganization == null ? null : parentOrganization.getName();
+ }
+
+ @JsonProperty("users_ids")
+ public void setUsersIds(List<String> usersIds) {
+ users = new ArrayList<>();
+ for (String userid : usersIds) {
+ User u = new User();
+ u.setUsername(userid);
+ users.add(u);
+ }
+ }
+
+ @JsonProperty("users_ids")
+ public List<String> getUsersIds() {
+ if (users == null)
+ return null;
+ List<String> ids = new ArrayList<>();
+ for (User user : users) {
+ ids.add(user.getUsername());
+ }
+ return ids;
+ }
+
}
--
Gitblit v1.3.2