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());
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -165,7 +165,6 @@ public class GroupMembership implements Serializable, Exportable {
|
|||
}
|
||||
|
||||
public JsonObjectBuilder buildJson() {
|
||||
|
||||
return Json
|
||||
.createObjectBuilder()
|
||||
.add("membershipId", membershipId)
|
||||
|
|
|
|||
|
|
@ -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{ "
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -350,6 +354,40 @@ public class Role implements Serializable, Exportable {
|
|||
public boolean canEqual(final Object obj) {
|
||||
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() {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
@ -41,7 +44,7 @@ import javax.persistence.Table;
|
|||
|
||||
/**
|
||||
* Represents the assignment of a {@link AssignableTask} to a {@link Role}.
|
||||
*
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Entity
|
||||
|
|
@ -62,7 +65,7 @@ public class TaskAssignment implements Serializable, Exportable {
|
|||
|
||||
@Column(name = "UUID", unique = true, nullable = false)
|
||||
private String uuid;
|
||||
|
||||
|
||||
/**
|
||||
* The task.
|
||||
*/
|
||||
|
|
@ -86,7 +89,7 @@ public class TaskAssignment implements Serializable, Exportable {
|
|||
protected void setTaskAssignmentId(final long taskAssignmentId) {
|
||||
this.taskAssignmentId = taskAssignmentId;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getUuid() {
|
||||
return uuid;
|
||||
|
|
@ -95,7 +98,6 @@ public class TaskAssignment implements Serializable, Exportable {
|
|||
protected void setUuid(final String uuid) {
|
||||
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{ "
|
||||
|
|
|
|||
Loading…
Reference in New Issue