Added JSON generate methods to some entities
parent
c4dee6362c
commit
1d7f88829b
|
|
@ -249,6 +249,21 @@ public abstract class AbstractEntityRepository<K, E> implements Serializable {
|
||||||
return executeCriteriaQuery(createCriteriaQuery());
|
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) {
|
public List<E> findAll(final int limit, final int offset) {
|
||||||
return executeCriteriaQuery(createCriteriaQuery(), limit, offset);
|
return executeCriteriaQuery(createCriteriaQuery(), limit, offset);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
@ -45,6 +46,10 @@ import java.util.Set;
|
||||||
|
|
||||||
import static org.libreccm.l10n.L10NConstants.L10N_XML_NS;
|
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
|
* 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
|
* 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;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format(
|
return String.format(
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,6 @@ public class GroupMembership implements Serializable, Exportable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public JsonObjectBuilder buildJson() {
|
public JsonObjectBuilder buildJson() {
|
||||||
|
|
||||||
return Json
|
return Json
|
||||||
.createObjectBuilder()
|
.createObjectBuilder()
|
||||||
.add("membershipId", membershipId)
|
.add("membershipId", membershipId)
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,14 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.imexport.Exportable;
|
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.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
|
|
@ -63,48 +71,40 @@ import javax.persistence.TemporalType;
|
||||||
@Table(name = "PERMISSIONS", schema = DB_SCHEMA)
|
@Table(name = "PERMISSIONS", schema = DB_SCHEMA)
|
||||||
@NamedQueries({
|
@NamedQueries({
|
||||||
@NamedQuery(name = "Permission.findByUuid",
|
@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",
|
@NamedQuery(name = "Permission.findByCustomPermId",
|
||||||
query = "SELECT p FROM Permission p "
|
query = "SELECT p FROM Permission p "
|
||||||
+ "WHERE p.grantedPrivilege = :privilege "
|
+ "WHERE p.grantedPrivilege = :privilege "
|
||||||
+ "AND p.grantee = :grantee "
|
+ "AND p.grantee = :grantee "
|
||||||
+ "AND p.object = :object")
|
+ "AND p.object = :object"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.existsForPrivilegeRoleObject",
|
@NamedQuery(name = "Permission.existsForPrivilegeRoleObject",
|
||||||
query = "SELECT COUNT(p) FROM Permission p "
|
query = "SELECT COUNT(p) FROM Permission p "
|
||||||
+ "WHERE p.grantedPrivilege = :privilege "
|
+ "WHERE p.grantedPrivilege = :privilege "
|
||||||
+ "AND p.grantee = :grantee "
|
+ "AND p.grantee = :grantee "
|
||||||
+ "AND p.object = :object")
|
+ "AND p.object = :object"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.existsDirectForPrivilegeRoleObject",
|
@NamedQuery(name = "Permission.existsDirectForPrivilegeRoleObject",
|
||||||
query = "SELECT COUNT(p) FROM Permission p "
|
query = "SELECT COUNT(p) FROM Permission p "
|
||||||
+ "WHERE p.grantedPrivilege = :privilege "
|
+ "WHERE p.grantedPrivilege = :privilege "
|
||||||
+ "AND p.grantee = :grantee "
|
+ "AND p.grantee = :grantee "
|
||||||
+ "AND p.object = :object "
|
+ "AND p.object = :object "
|
||||||
+ "AND p.inherited = false")
|
+ "AND p.inherited = false"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.existsInheritedForPrivilegeRoleObject",
|
@NamedQuery(name = "Permission.existsInheritedForPrivilegeRoleObject",
|
||||||
query = "SELECT COUNT(p) FROM Permission p "
|
query = "SELECT COUNT(p) FROM Permission p "
|
||||||
+ "WHERE p.grantedPrivilege = :privilege "
|
+ "WHERE p.grantedPrivilege = :privilege "
|
||||||
+ "AND p.grantee = :grantee "
|
+ "AND p.grantee = :grantee "
|
||||||
+ "AND p.object = :object "
|
+ "AND p.object = :object "
|
||||||
+ "AND p.inherited = true")
|
+ "AND p.inherited = true"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.existsForPrivilegeAndRole",
|
@NamedQuery(name = "Permission.existsForPrivilegeAndRole",
|
||||||
query = "SELECT COUNT(p) FROM Permission p "
|
query = "SELECT COUNT(p) FROM Permission p "
|
||||||
+ "WHERE p.grantedPrivilege = :privilege "
|
+ "WHERE p.grantedPrivilege = :privilege "
|
||||||
+ "AND p.grantee = :grantee "
|
+ "AND p.grantee = :grantee "
|
||||||
+ "AND p.object IS NULL")
|
+ "AND p.object IS NULL"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.findPermissionsForRole",
|
@NamedQuery(name = "Permission.findPermissionsForRole",
|
||||||
query = "SELECT p FROM Permission p "
|
query = "SELECT p FROM Permission p "
|
||||||
+ "WHERE p.grantee = :grantee")
|
+ "WHERE p.grantee = :grantee"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.findPermissionsForCcmObject",
|
@NamedQuery(name = "Permission.findPermissionsForCcmObject",
|
||||||
query = "SELECT p FROM Permission p "
|
query = "SELECT p FROM Permission p "
|
||||||
+ "WHERE p.object = :object")
|
+ "WHERE p.object = :object"),
|
||||||
,
|
|
||||||
@NamedQuery(name = "Permission.findPermissionsForRoleAndObject",
|
@NamedQuery(name = "Permission.findPermissionsForRoleAndObject",
|
||||||
query = "SELECT p FROM Permission p "
|
query = "SELECT p FROM Permission p "
|
||||||
+ "WHERE p.object = :object and p.grantee = :grantee")
|
+ "WHERE p.object = :object and p.grantee = :grantee")
|
||||||
|
|
@ -337,6 +337,78 @@ public class Permission implements Serializable, Exportable {
|
||||||
return obj instanceof Permission;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s{ "
|
return String.format("%s{ "
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import org.libreccm.workflow.TaskAssignment;
|
||||||
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
||||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
|
|
||||||
|
import org.libreccm.core.api.JsonArrayCollector;
|
||||||
import org.libreccm.imexport.Exportable;
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -38,6 +39,9 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.json.Json;
|
||||||
|
import javax.json.JsonObject;
|
||||||
|
import javax.json.JsonObjectBuilder;
|
||||||
import javax.persistence.AssociationOverride;
|
import javax.persistence.AssociationOverride;
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Embedded;
|
import javax.persistence.Embedded;
|
||||||
|
|
@ -351,6 +355,40 @@ public class Role implements Serializable, Exportable {
|
||||||
return obj instanceof Role;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
// return String.format("%s{ "
|
// return String.format("%s{ "
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,9 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.imexport.Exportable;
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
|
import javax.json.Json;
|
||||||
|
import javax.json.JsonObject;
|
||||||
|
import javax.json.JsonObjectBuilder;
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
|
|
@ -96,7 +99,6 @@ public class TaskAssignment implements Serializable, Exportable {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public AssignableTask getTask() {
|
public AssignableTask getTask() {
|
||||||
return task;
|
return task;
|
||||||
}
|
}
|
||||||
|
|
@ -150,6 +152,41 @@ public class TaskAssignment implements Serializable, Exportable {
|
||||||
return obj instanceof TaskAssignment;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return String.format("%s{ "
|
return String.format("%s{ "
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue