diff --git a/ccm-core/src/main/java/org/libreccm/core/api/ApiConstants.java b/ccm-core/src/main/java/org/libreccm/api/ApiConstants.java similarity index 97% rename from ccm-core/src/main/java/org/libreccm/core/api/ApiConstants.java rename to ccm-core/src/main/java/org/libreccm/api/ApiConstants.java index 31d6489e1..b980ef666 100644 --- a/ccm-core/src/main/java/org/libreccm/core/api/ApiConstants.java +++ b/ccm-core/src/main/java/org/libreccm/api/ApiConstants.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.core.api; +package org.libreccm.api; /** * diff --git a/ccm-core/src/main/java/org/libreccm/core/api/ExtractedIdentifier.java b/ccm-core/src/main/java/org/libreccm/api/ExtractedIdentifier.java similarity index 97% rename from ccm-core/src/main/java/org/libreccm/core/api/ExtractedIdentifier.java rename to ccm-core/src/main/java/org/libreccm/api/ExtractedIdentifier.java index faf20ca54..cfa1d0dc9 100644 --- a/ccm-core/src/main/java/org/libreccm/core/api/ExtractedIdentifier.java +++ b/ccm-core/src/main/java/org/libreccm/api/ExtractedIdentifier.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.core.api; +package org.libreccm.api; /** * diff --git a/ccm-core/src/main/java/org/libreccm/core/api/IdentifierExtractor.java b/ccm-core/src/main/java/org/libreccm/api/IdentifierExtractor.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/core/api/IdentifierExtractor.java rename to ccm-core/src/main/java/org/libreccm/api/IdentifierExtractor.java index d0894e1d2..020181767 100644 --- a/ccm-core/src/main/java/org/libreccm/core/api/IdentifierExtractor.java +++ b/ccm-core/src/main/java/org/libreccm/api/IdentifierExtractor.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.core.api; +package org.libreccm.api; import java.util.Objects; diff --git a/ccm-core/src/main/java/org/libreccm/core/api/IdentifierType.java b/ccm-core/src/main/java/org/libreccm/api/IdentifierType.java similarity index 96% rename from ccm-core/src/main/java/org/libreccm/core/api/IdentifierType.java rename to ccm-core/src/main/java/org/libreccm/api/IdentifierType.java index a2a2b1551..2ba561292 100644 --- a/ccm-core/src/main/java/org/libreccm/core/api/IdentifierType.java +++ b/ccm-core/src/main/java/org/libreccm/api/IdentifierType.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.core.api; +package org.libreccm.api; /** * diff --git a/ccm-core/src/main/java/org/libreccm/core/api/JsonArrayCollector.java b/ccm-core/src/main/java/org/libreccm/api/JsonArrayCollector.java similarity index 98% rename from ccm-core/src/main/java/org/libreccm/core/api/JsonArrayCollector.java rename to ccm-core/src/main/java/org/libreccm/api/JsonArrayCollector.java index 94a9730a6..4ea7500bb 100644 --- a/ccm-core/src/main/java/org/libreccm/core/api/JsonArrayCollector.java +++ b/ccm-core/src/main/java/org/libreccm/api/JsonArrayCollector.java @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA */ -package org.libreccm.core.api; +package org.libreccm.api; import com.google.common.collect.Sets; diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/GroupsApi.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/GroupsApi.java index f02e619d5..65273f13c 100644 --- a/ccm-core/src/main/java/org/libreccm/api/admin/security/GroupsApi.java +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/GroupsApi.java @@ -22,8 +22,8 @@ import org.libreccm.api.admin.security.dto.GroupUserMembership; import org.libreccm.api.admin.security.dto.PartyRoleMembership; import org.libreccm.api.dto.ListView; import org.libreccm.core.CoreConstants; -import org.libreccm.core.api.ExtractedIdentifier; -import org.libreccm.core.api.IdentifierExtractor; +import org.libreccm.api.ExtractedIdentifier; +import org.libreccm.api.IdentifierExtractor; import java.net.URI; import java.util.List; diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/RolesApi.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/RolesApi.java index 273b78099..43c89aaaf 100644 --- a/ccm-core/src/main/java/org/libreccm/api/admin/security/RolesApi.java +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/RolesApi.java @@ -5,18 +5,17 @@ */ package org.libreccm.api.admin.security; -import org.libreccm.core.CcmObject; +import org.libreccm.api.ExtractedIdentifier; import org.libreccm.core.CcmObjectRepository; import org.libreccm.core.CoreConstants; -import org.libreccm.core.api.ExtractedIdentifier; -import org.libreccm.core.api.IdentifierExtractor; -import org.libreccm.core.api.JsonArrayCollector; +import org.libreccm.api.IdentifierExtractor; +import org.libreccm.api.admin.security.dto.RoleData; +import org.libreccm.api.dto.ListView; import java.util.List; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; -import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; import javax.transaction.Transactional; @@ -30,7 +29,6 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -42,6 +40,14 @@ import org.libreccm.security.Role; import org.libreccm.security.RoleManager; import org.libreccm.security.RoleRepository; +import java.net.URI; +import java.util.UUID; +import java.util.stream.Collectors; + +import javax.ws.rs.WebApplicationException; + +import static com.arsdigita.bebop.Component.*; + /** * * @author Jens Pelzetter @@ -55,7 +61,7 @@ public class RolesApi { @Inject private CcmObjectRepository ccmObjectRepository; - + @Inject private PartyRepository partyRepository; @@ -71,26 +77,19 @@ public class RolesApi { @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) - public JsonObject getRoles( + public ListView getRoles( @QueryParam("limit") @DefaultValue("20") final int limit, @QueryParam("offset") @DefaultValue("0") final int offset ) { final long count = roleRepository.countAll(); final List roles = roleRepository.findAll(limit, offset); - return Json - .createObjectBuilder() - .add("count", count) - .add("limit", limit) - .add("offset", offset) - .add( - "roles", - roles - .stream() - .map(Role::toJson) - .collect(new JsonArrayCollector()) - ) - .build(); + return new ListView<>( + roles.stream().map(RoleData::new).collect(Collectors.toList()), + count, + limit, + offset + ); } @GET @@ -99,20 +98,29 @@ public class RolesApi { @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) - public JsonObject getRole( + public RoleData getRole( @PathParam("roleIdentifier") final String roleIdentifier ) { - return findRole(roleIdentifier).toJson(); + return new RoleData(findRole(roleIdentifier)); } - + @POST @Path("/") @Consumes(MediaType.APPLICATION_JSON) @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) @Transactional(Transactional.TxType.REQUIRED) - public Response addRole(final JsonObject roleData) { - throw new UnsupportedOperationException(); + public Response addRole(final RoleData roleData) { + + final Role role = new Role(); + role.setName(roleData.getName()); + role.setDescription(roleData.getDescription()); + + roleRepository.save(role); + + return Response.created( + URI.create(String.format("/api/admin/roles/%s", role.getName())) + ).build(); } @PUT @@ -187,7 +195,7 @@ public class RolesApi { ) { throw new UnsupportedOperationException(); } - + @POST @Path("/{roleIdentifier}/permissions") @Consumes(MediaType.APPLICATION_JSON) @@ -200,7 +208,7 @@ public class RolesApi { ) { throw new UnsupportedOperationException(); } - + @DELETE @Path("/{roleIdentifier}/permissions/{permissionIdentifier}") @AuthorizationRequired @@ -213,8 +221,6 @@ public class RolesApi { throw new UnsupportedOperationException(); } - - private Party findParty(final String partyIdentifier) { final ExtractedIdentifier identifier = identifierExtractor .extractIdentifier(partyIdentifier); diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/UsersApi.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/UsersApi.java index 0fab94c27..d11ea80c0 100644 --- a/ccm-core/src/main/java/org/libreccm/api/admin/security/UsersApi.java +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/UsersApi.java @@ -23,8 +23,8 @@ import org.libreccm.api.admin.security.dto.UserGroupMembership; import org.libreccm.api.admin.security.dto.PartyRoleMembership; import org.libreccm.api.dto.ListView; import org.libreccm.core.CoreConstants; -import org.libreccm.core.api.ExtractedIdentifier; -import org.libreccm.core.api.IdentifierExtractor; +import org.libreccm.api.ExtractedIdentifier; +import org.libreccm.api.IdentifierExtractor; import java.net.URI; import java.util.List; diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleAssignedTask.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleAssignedTask.java new file mode 100644 index 000000000..c7dd03875 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleAssignedTask.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.admin.security.dto; + +import org.libreccm.api.admin.workflow.dto.TaskId; +import org.libreccm.workflow.TaskAssignment; + +import java.util.Objects; + +/** + * A DTO for a {@link TaskAssignment} from the viewpoint of a {@link Role}. + * + * @author Jens Pelzetter + */ +public class RoleAssignedTask { + + private long taskAssignmentId; + + private String uuid; + + private TaskId task; + + /** + * Parameterless constructor for generating empty instances. + */ + public RoleAssignedTask() { + // Nothing + } + + /** + * Creates {@code RoleAssignedTask} DTO from a {@link TaskAssignment}. + * + * @param taskAssignment The source object. + */ + public RoleAssignedTask(final TaskAssignment taskAssignment) { + Objects.requireNonNull( + taskAssignment, "Can't create a RoleAssignedTask DTO from null." + ); + + taskAssignmentId = taskAssignment.getTaskAssignmentId(); + uuid = taskAssignment.getUuid(); + task = new TaskId(taskAssignment.getTask()); + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleData.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleData.java new file mode 100644 index 000000000..ed3132865 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RoleData.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.admin.security.dto; + +import org.libreccm.l10n.LocalizedString; +import org.libreccm.security.Role; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * A DTO for {@link Role}s. + * + * @author Jens Pelzetter + */ +public class RoleData { + + private long roleId; + + private String uuid; + + private String name; + + private LocalizedString description; + + private List memberships; + + private List permissions; + + private List assignedTasks; + + /** + * Parameterless constructor for creating empty instances. + */ + public RoleData() { + memberships = new ArrayList<>(); + permissions = new ArrayList<>(); + assignedTasks = new ArrayList<>(); + } + + public RoleData(final Role role) { + Objects.requireNonNull(role, "Can't create a RoleData DTO from null."); + + roleId = role.getRoleId(); + uuid = role.getUuid(); + name = role.getName(); + description = role.getDescription(); + + memberships = role + .getMemberships() + .stream() + .map(RolePartyMembership::new) + .collect(Collectors.toList()); + + permissions = role + .getPermissions() + .stream() + .map(RolePermission::new) + .collect(Collectors.toList()); + + assignedTasks = role + .getAssignedTasks() + .stream() + .map(RoleAssignedTask::new) + .collect(Collectors.toList()); + } + + public long getRoleId() { + return roleId; + } + + public void setRoleId(final long roleId) { + this.roleId = roleId; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(final String uuid) { + this.uuid = uuid; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public List getMemberships() { + return new ArrayList<>(memberships); + } + + public void setMemberships(final List memberships) { + this.memberships = new ArrayList<>(memberships); + } + + public List getAssignedTasks() { + return new ArrayList<>(assignedTasks); + } + + public void setAssignedTasks(final List assignedTasks) { + this.assignedTasks = new ArrayList<>(assignedTasks); + } + + public LocalizedString getDescription() { + return description; + } + + public void setDescription(final LocalizedString description) { + this.description = description; + } + + public List getPermissions() { + return new ArrayList<>(permissions); + } + + public void setPermissions(final List permissions) { + this.permissions = new ArrayList<>(permissions); + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePartyMembership.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePartyMembership.java new file mode 100644 index 000000000..708997ba6 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePartyMembership.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.admin.security.dto; + +import org.libreccm.security.RoleMembership; + +import java.util.Objects; + +/** + * Data Transfer Object for data about the members of a role. + * + * @author Jens Pelzetter + */ +public class RolePartyMembership { + + private long membershipId; + + private String uuid; + + private PartyId party; + + /** + * Parameterless constructor for generating empty instances. + */ + public RolePartyMembership() { + // Nothing + } + + /** + * Creates a {@code RolePartyMembership} DTO from a {@link RoleMembership}. + * + * @param membership The source object from which the instance is created. + */ + public RolePartyMembership(final RoleMembership membership) { + Objects.requireNonNull( + membership, + "Can't create a RolePartyMembership from null." + ); + + membershipId = membership.getMembershipId(); + uuid = membership.getUuid(); + party = new PartyId(membership.getMember()); + } + + public long getMembershipId() { + return membershipId; + } + + public void setMembershipId(final long membershipId) { + this.membershipId = membershipId; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(final String uuid) { + this.uuid = uuid; + } + + public PartyId getParty() { + return party; + } + + public void setParty(final PartyId party) { + this.party = party; + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePermission.java b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePermission.java new file mode 100644 index 000000000..ee48ab6c3 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/admin/security/dto/RolePermission.java @@ -0,0 +1,153 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.admin.security.dto; + +import org.libreccm.api.core.dto.CcmObjectId; +import org.libreccm.security.Permission; + +import java.util.Date; +import java.util.Objects; + +/** + * A DTO for a {@link Permission} assigned to a role. + * + * @author Jens Pelzetter + */ +public class RolePermission { + + private long permissionId; + + private String uuid; + + private String grantedPrivilege; + + private boolean inherited; + + private CcmObjectId object; + + private PartyId creationUser; + + private Date creationDate; + + private String creationIp; + + private CcmObjectId inheritedFrom; + + /** + * Parameterless constructor for creating empty instances. + */ + public RolePermission() { + // Nothing + } + + public RolePermission(final Permission permission) { + Objects.requireNonNull( + permission, "Can't create a RolePermission DTO from null." + ); + + permissionId = permission.getPermissionId(); + uuid = permission.getUuid(); + grantedPrivilege = permission.getGrantedPrivilege(); + inherited = permission.isInherited(); + if (permission.getObject() != null) { + object = new CcmObjectId(permission.getObject()); + } + creationUser = new PartyId(permission.getCreationUser()); + creationDate = permission.getCreationDate(); + creationIp = permission.getCreationIp(); + if (inherited && permission.getInheritedFrom() != null) { + inheritedFrom = new CcmObjectId(permission.getInheritedFrom()); + } + } + + public long getPermissionId() { + return permissionId; + } + + public void setPermissionId(final long permissionId) { + this.permissionId = permissionId; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(final String uuid) { + this.uuid = uuid; + } + + public String getGrantedPrivilege() { + return grantedPrivilege; + } + + public void setGrantedPrivilege(final String grantedPrivilege) { + this.grantedPrivilege = grantedPrivilege; + } + + public boolean isInherited() { + return inherited; + } + + public void setInherited(final boolean inherited) { + this.inherited = inherited; + } + + public CcmObjectId getObject() { + return object; + } + + public void setObject(final CcmObjectId object) { + this.object = object; + } + + public PartyId getCreationUser() { + return creationUser; + } + + public void setCreationUser(final PartyId creationUser) { + this.creationUser = creationUser; + } + + public Date getCreationDate() { + return new Date(creationDate.getTime()); + } + + public void setCreationDate(Date creationDate) { + this.creationDate = new Date(creationDate.getTime()); + } + + public String getCreationIp() { + return creationIp; + } + + public void setCreationIp(final String creationIp) { + this.creationIp = creationIp; + } + + public CcmObjectId getInheritedFrom() { + return inheritedFrom; + } + + public void setInheritedFrom(final CcmObjectId inheritedFrom) { + this.inheritedFrom = inheritedFrom; + } + + + +} diff --git a/ccm-core/src/main/java/org/libreccm/api/admin/workflow/dto/TaskId.java b/ccm-core/src/main/java/org/libreccm/api/admin/workflow/dto/TaskId.java new file mode 100644 index 000000000..7ab71381d --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/admin/workflow/dto/TaskId.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.admin.workflow.dto; + +import org.libreccm.l10n.LocalizedString; +import org.libreccm.workflow.Task; + +import java.util.Objects; + +/** + * A DTO for the identifing information of a tasks. + * + * @author Jens Pelzetter + */ +public class TaskId { + + private long taskId; + + private String uuid; + + private LocalizedString label; + + /** + * Parameterless contructor for creating empty instances. + */ + public TaskId() { + // Nothing + } + + /** + * Creates a {@code TaskId} DTO for a {@link Task}. + * + * @param task The source object. + */ + public TaskId(final Task task) { + Objects.requireNonNull(task, "Can't create a TaskId from null."); + + taskId = task.getTaskId(); + uuid = task.getUuid(); + label = task.getLabel(); + } + + public long getTaskId() { + return taskId; + } + + public void setTaskId(long taskId) { + this.taskId = taskId; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public LocalizedString getLabel() { + return label; + } + + public void setLabel(LocalizedString label) { + this.label = label; + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/api/core/dto/CcmObjectId.java b/ccm-core/src/main/java/org/libreccm/api/core/dto/CcmObjectId.java new file mode 100644 index 000000000..7d74e1959 --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/api/core/dto/CcmObjectId.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.api.core.dto; + +import org.libreccm.core.CcmObject; + +import java.util.Objects; + +/** + * A DTO containing the basic information about a {@link CcmObject} + * + * @author Jens Pelzetter + */ +public class CcmObjectId { + + private long objectId; + + private String uuid; + + private String displayName; + + /** + * Parameterless constructor for creating empty instances. + */ + public CcmObjectId() { + // Nothing + } + + public CcmObjectId(final CcmObject object) { + Objects.requireNonNull( + object, "Can't create a CcmObjectId DTO from null." + ); + + objectId = object.getObjectId(); + uuid = object.getUuid(); + displayName = object.getDisplayName(); + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(final long objectId) { + this.objectId = objectId; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(final String uuid) { + this.uuid = uuid; + } + + public String getDisplayName() { + return displayName; + } + + public void setDisplayName(final String displayName) { + this.displayName = displayName; + } + +} diff --git a/ccm-core/src/main/java/org/libreccm/security/Party.java b/ccm-core/src/main/java/org/libreccm/security/Party.java index db7a0e529..5c9dbac8e 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Party.java +++ b/ccm-core/src/main/java/org/libreccm/security/Party.java @@ -23,7 +23,7 @@ import static org.libreccm.core.CoreConstants.*; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.ObjectIdGenerators; -import org.libreccm.core.api.JsonArrayCollector; +import org.libreccm.api.JsonArrayCollector; import javax.persistence.FetchType; import javax.validation.constraints.NotNull; diff --git a/ccm-core/src/main/java/org/libreccm/security/Role.java b/ccm-core/src/main/java/org/libreccm/security/Role.java index eda94d92a..2eedd0c17 100644 --- a/ccm-core/src/main/java/org/libreccm/security/Role.java +++ b/ccm-core/src/main/java/org/libreccm/security/Role.java @@ -28,7 +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.api.JsonArrayCollector; import org.libreccm.imexport.Exportable; import java.io.Serializable; diff --git a/ccm-core/src/main/java/org/libreccm/security/User.java b/ccm-core/src/main/java/org/libreccm/security/User.java index a124e2742..30a67f5fc 100644 --- a/ccm-core/src/main/java/org/libreccm/security/User.java +++ b/ccm-core/src/main/java/org/libreccm/security/User.java @@ -30,7 +30,7 @@ import java.io.Serializable; 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.api.JsonArrayCollector; import org.libreccm.imexport.Exportable; import java.util.ArrayList;