Added JSON generate methods to some entities

Jens Pelzetter 2020-05-27 21:37:09 +02:00
parent c4dee6362c
commit 1d7f88829b
6 changed files with 206 additions and 21 deletions

View File

@ -249,6 +249,21 @@ public abstract class AbstractEntityRepository<K, E> implements Serializable {
return executeCriteriaQuery(createCriteriaQuery());
}
@Transactional(Transactional.TxType.REQUIRED)
public long countAll() {
final CriteriaBuilder criteriaBuilder = entityManager
.getCriteriaBuilder();
final CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(
Long.class
);
criteriaQuery
.select(
criteriaBuilder.count(criteriaQuery.from(getEntityClass()))
);
return entityManager.createQuery(criteriaQuery).getSingleResult();
}
public List<E> findAll(final int limit, final int offset) {
return executeCriteriaQuery(createCriteriaQuery(), limit, offset);
}

View File

@ -35,6 +35,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
@ -45,6 +46,10 @@ import java.util.Set;
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
/**
* A helper class for localisable string properties. This class is declared as
* embeddable, so that it can be used in every other entity. The localised
@ -202,6 +207,25 @@ public class LocalizedString implements Serializable {
return obj instanceof LocalizedString;
}
public JsonObject toJson() {
return buildJson().build();
}
public JsonObjectBuilder buildJson() {
final JsonObjectBuilder builder = Json.createObjectBuilder();
values
.entrySet()
.stream()
.forEach(
entry -> builder.add(
Objects.toString(entry.getKey()), entry.getValue()
)
);
return builder;
}
@Override
public String toString() {
return String.format(

View File

@ -165,7 +165,6 @@ public class GroupMembership implements Serializable, Exportable {
}
public JsonObjectBuilder buildJson() {
return Json
.createObjectBuilder()
.add("membershipId", membershipId)

View File

@ -40,6 +40,14 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.libreccm.imexport.Exportable;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonValue;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@ -63,48 +71,40 @@ import javax.persistence.TemporalType;
@Table(name = "PERMISSIONS", schema = DB_SCHEMA)
@NamedQueries({
@NamedQuery(name = "Permission.findByUuid",
query = "SELECT p FROM Permission p WHERE p.uuid = :uuid")
,
query = "SELECT p FROM Permission p WHERE p.uuid = :uuid"),
@NamedQuery(name = "Permission.findByCustomPermId",
query = "SELECT p FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object = :object")
,
+ "AND p.object = :object"),
@NamedQuery(name = "Permission.existsForPrivilegeRoleObject",
query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object = :object")
,
+ "AND p.object = :object"),
@NamedQuery(name = "Permission.existsDirectForPrivilegeRoleObject",
query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object = :object "
+ "AND p.inherited = false")
,
+ "AND p.inherited = false"),
@NamedQuery(name = "Permission.existsInheritedForPrivilegeRoleObject",
query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object = :object "
+ "AND p.inherited = true")
,
+ "AND p.inherited = true"),
@NamedQuery(name = "Permission.existsForPrivilegeAndRole",
query = "SELECT COUNT(p) FROM Permission p "
+ "WHERE p.grantedPrivilege = :privilege "
+ "AND p.grantee = :grantee "
+ "AND p.object IS NULL")
,
+ "AND p.object IS NULL"),
@NamedQuery(name = "Permission.findPermissionsForRole",
query = "SELECT p FROM Permission p "
+ "WHERE p.grantee = :grantee")
,
+ "WHERE p.grantee = :grantee"),
@NamedQuery(name = "Permission.findPermissionsForCcmObject",
query = "SELECT p FROM Permission p "
+ "WHERE p.object = :object")
,
+ "WHERE p.object = :object"),
@NamedQuery(name = "Permission.findPermissionsForRoleAndObject",
query = "SELECT p FROM Permission p "
+ "WHERE p.object = :object and p.grantee = :grantee")
@ -337,6 +337,78 @@ public class Permission implements Serializable, Exportable {
return obj instanceof Permission;
}
public JsonObjectBuilder buildJson() {
final JsonObjectBuilder builder = Json
.createObjectBuilder()
.add("permissionId", permissionId)
.add("uuid", uuid)
.add("grantedPrivilege", grantedPrivilege)
.add("inherited", inherited);
if (object != null) {
builder.add(
"object",
Json
.createObjectBuilder()
.add("objectId", object.getObjectId())
.add("uuid", object.getUuid())
.add("dispayName", object.getDisplayName())
);
}
builder.add(
"grantee",
Json
.createObjectBuilder()
.add("roleId", grantee.getRoleId())
.add("uuid", grantee.getUuid())
.add("name", grantee.getName())
);
if (creationUser != null) {
builder.add(
"creationUser",
Json
.createObjectBuilder()
.add("partyId", creationUser.getPartyId())
.add("uuid", creationUser.getUuid())
.add("name", creationUser.getName())
);
}
if (creationDate != null) {
final LocalDateTime dateTime = creationDate
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
builder.add(
"creationDate",
DateTimeFormatter.ISO_DATE_TIME.format(dateTime)
);
}
if (creationIp != null) {
builder.add("creationIp", creationIp);
}
if (inherited && inheritedFrom != null) {
builder.add(
"inheritedFrom",
Json
.createObjectBuilder()
.add("objectId", inheritedFrom.getObjectId())
.add("uuid", inheritedFrom.getUuid())
.add("dispayName", inheritedFrom.getDisplayName())
);
}
return builder;
}
public JsonObject toJson() {
return buildJson().build();
}
@Override
public String toString() {
return String.format("%s{ "

View File

@ -28,6 +28,7 @@ import org.libreccm.workflow.TaskAssignment;
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import org.libreccm.core.api.JsonArrayCollector;
import org.libreccm.imexport.Exportable;
import java.io.Serializable;
@ -38,6 +39,9 @@ import java.util.List;
import java.util.Objects;
import java.util.Set;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.persistence.AssociationOverride;
import javax.persistence.Column;
import javax.persistence.Embedded;
@ -351,6 +355,40 @@ public class Role implements Serializable, Exportable {
return obj instanceof Role;
}
public JsonObjectBuilder buildJson() {
return Json
.createObjectBuilder()
.add("roleId", roleId)
.add("uuid", uuid)
.add("name", name)
.add("description", description.buildJson())
.add(
"memberships",
memberships
.stream()
.map(RoleMembership::toJson)
.collect(new JsonArrayCollector())
)
.add(
"permissions",
permissions
.stream()
.map(Permission::toJson)
.collect(new JsonArrayCollector())
)
.add(
"assignedTasks",
assignedTasks
.stream()
.map(TaskAssignment::toJson)
.collect(new JsonArrayCollector())
);
}
public JsonObject toJson() {
return buildJson().build();
}
@Override
public String toString() {
// return String.format("%s{ "

View File

@ -30,6 +30,9 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import org.libreccm.imexport.Exportable;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
@ -96,7 +99,6 @@ public class TaskAssignment implements Serializable, Exportable {
this.uuid = uuid;
}
public AssignableTask getTask() {
return task;
}
@ -150,6 +152,41 @@ public class TaskAssignment implements Serializable, Exportable {
return obj instanceof TaskAssignment;
}
public JsonObjectBuilder buildJson() {
final JsonObjectBuilder builder = Json
.createObjectBuilder()
.add("taskAssignmentId", taskAssignmentId)
.add("uuid", uuid);
if (task != null) {
builder.add(
"task",
Json
.createObjectBuilder()
.add("taskId", task.getTaskId())
.add("uuid", task.getUuid())
.add("label", task.getLabel().buildJson())
);
}
if (role != null) {
builder.add(
"role",
Json
.createObjectBuilder()
.add("roleId", role.getRoleId())
.add("uuid", role.getUuid())
.add("name", role.getName())
);
}
return builder;
}
public JsonObject toJson() {
return buildJson().build();
}
@Override
public String toString() {
return String.format("%s{ "