CCM NG: Removed associations to User and Group from the UserTask and replaced them with an association to Role.
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@3763 8810af33-2d31-482b-a856-94f89814c4dfpull/2/head
parent
d043fbea56
commit
6066ea22a2
|
|
@ -21,6 +21,7 @@ package org.libreccm.security;
|
|||
import static org.libreccm.core.CoreConstants.*;
|
||||
|
||||
import org.hibernate.validator.constraints.NotBlank;
|
||||
import org.libreccm.workflow.TaskAssignment;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -92,6 +93,9 @@ public class Role implements Serializable {
|
|||
@XmlElement(name = "permission", namespace = CORE_XML_NS)
|
||||
private List<Permission> permissions = new ArrayList<>();
|
||||
|
||||
@OneToMany(mappedBy = "role")
|
||||
private List<TaskAssignment> assignedTasks;
|
||||
|
||||
protected Role() {
|
||||
super();
|
||||
}
|
||||
|
|
@ -152,6 +156,26 @@ public class Role implements Serializable {
|
|||
permissions.remove(permission);
|
||||
}
|
||||
|
||||
public List<TaskAssignment> assignedTasks() {
|
||||
if (assignedTasks == null) {
|
||||
return null;
|
||||
} else {
|
||||
return Collections.unmodifiableList(assignedTasks);
|
||||
}
|
||||
}
|
||||
|
||||
protected void setAssignedTasks(final List<TaskAssignment> assignedTasks) {
|
||||
this.assignedTasks = assignedTasks;
|
||||
}
|
||||
|
||||
protected void addAssignedTask(final TaskAssignment taskAssignment) {
|
||||
assignedTasks.add(taskAssignment);
|
||||
}
|
||||
|
||||
protected void removeAssignedTask(final TaskAssignment taskAssignment) {
|
||||
assignedTasks.remove(taskAssignment);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = 7;
|
||||
|
|
|
|||
|
|
@ -137,8 +137,8 @@ public class RoleMembership implements Serializable {
|
|||
return String.format("%s{ "
|
||||
+ "membershipId = %d, "
|
||||
+ "user = %s, "
|
||||
+ "role = %s, "
|
||||
+ " },",
|
||||
+ "role = %s "
|
||||
+ " }",
|
||||
super.toString(),
|
||||
membershipId,
|
||||
Objects.toString(member),
|
||||
|
|
|
|||
|
|
@ -0,0 +1,134 @@
|
|||
/*
|
||||
* Copyright (C) 2015 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.workflow;
|
||||
|
||||
import static org.libreccm.core.CoreConstants.*;
|
||||
|
||||
import org.libreccm.security.Role;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "TASK_ASSIGNMENTS", schema = DB_SCHEMA)
|
||||
public class TaskAssignment implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4427537363301565707L;
|
||||
|
||||
@Id
|
||||
@Column(name = "TASK_ASSIGNMENT_ID")
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private long taskAssignmentId;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "TASK_ID")
|
||||
private UserTask task;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "ROLE_ID")
|
||||
private Role role;
|
||||
|
||||
public long getTaskAssignmentId() {
|
||||
return taskAssignmentId;
|
||||
}
|
||||
|
||||
protected void setTaskAssignmentId(final long taskAssignmentId) {
|
||||
this.taskAssignmentId = taskAssignmentId;
|
||||
}
|
||||
|
||||
public UserTask getTask() {
|
||||
return task;
|
||||
}
|
||||
|
||||
protected void setTask(final UserTask task) {
|
||||
this.task = task;
|
||||
}
|
||||
|
||||
public Role getRole() {
|
||||
return role;
|
||||
}
|
||||
|
||||
protected void setRole(final Role role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = 7;
|
||||
hash = 67 * hash
|
||||
+ (int) (taskAssignmentId ^ (taskAssignmentId >>> 32));
|
||||
hash = 67 * hash + Objects.hashCode(task);
|
||||
hash = 67 * hash + Objects.hashCode(role);
|
||||
return hash;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(obj instanceof TaskAssignment)) {
|
||||
return false;
|
||||
}
|
||||
final TaskAssignment other = (TaskAssignment) obj;
|
||||
if (!other.canEqual(this)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (taskAssignmentId != other.getTaskAssignmentId()) {
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(task, other.getTask())) {
|
||||
return false;
|
||||
}
|
||||
return Objects.equals(role, other.getRole());
|
||||
}
|
||||
|
||||
public boolean canEqual(final Object obj) {
|
||||
return obj instanceof TaskAssignment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("%s{ "
|
||||
+ "taskAssignmentId = %d, "
|
||||
+ "task = %s, "
|
||||
+ "role = %s"
|
||||
+ " }",
|
||||
super.toString(),
|
||||
taskAssignmentId,
|
||||
Objects.toString(task),
|
||||
Objects.toString(role));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -21,6 +21,7 @@ package org.libreccm.workflow;
|
|||
import static org.libreccm.core.CoreConstants.*;
|
||||
|
||||
import org.libreccm.security.Group;
|
||||
import org.libreccm.security.Role;
|
||||
import org.libreccm.security.User;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
|
@ -34,6 +35,7 @@ import javax.persistence.Column;
|
|||
import javax.persistence.Entity;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.persistence.Table;
|
||||
|
|
@ -77,28 +79,12 @@ public class UserTask extends Task implements Serializable {
|
|||
@SuppressWarnings("PMD.LongVariable") //Shorter name would not be descriptive
|
||||
private User notificationSender;
|
||||
|
||||
@OneToMany
|
||||
@JoinTable(name = "WORKFLOW_USER_TASK_ASSIGNED_USERS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "USER_TASK_ID")},
|
||||
inverseJoinColumns = {
|
||||
@JoinColumn(name = "ASSIGNED_USER_ID")})
|
||||
private List<User> assignedUsers;
|
||||
|
||||
@OneToMany
|
||||
@JoinTable(name = "WORKFLOW_USER_TASK_ASSIGNED_GROUPS",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
@JoinColumn(name = "USER_TASK_ID")},
|
||||
inverseJoinColumns = {
|
||||
@JoinColumn(name = "ASSIGNED_GROUP_ID")})
|
||||
private List<Group> assignedGroups;
|
||||
@OneToMany(mappedBy = "task")
|
||||
private List<TaskAssignment> assignments;
|
||||
|
||||
public UserTask() {
|
||||
super();
|
||||
assignedUsers = new ArrayList<>();
|
||||
assignedGroups = new ArrayList<>();
|
||||
assignments = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean isLocked() {
|
||||
|
|
@ -166,44 +152,24 @@ public class UserTask extends Task implements Serializable {
|
|||
this.notificationSender = notificationSender;
|
||||
}
|
||||
|
||||
public List<User> getAssignedUsers() {
|
||||
if (assignedUsers == null) {
|
||||
public List<TaskAssignment> getAssignments() {
|
||||
if (assignments == null) {
|
||||
return null;
|
||||
} else {
|
||||
return Collections.unmodifiableList(assignedUsers);
|
||||
return Collections.unmodifiableList(assignments);
|
||||
}
|
||||
}
|
||||
|
||||
protected void setAssignedUsers(final List<User> assignedUsers) {
|
||||
this.assignedUsers = assignedUsers;
|
||||
protected void setAssignments(final List<TaskAssignment> assignments) {
|
||||
this.assignments = assignments;
|
||||
}
|
||||
|
||||
protected void addAssignedUser(final User user) {
|
||||
assignedUsers.add(user);
|
||||
protected void addAssignment(final TaskAssignment assignment) {
|
||||
assignments.add(assignment);
|
||||
}
|
||||
|
||||
protected void removeAssignedUser(final User user) {
|
||||
assignedUsers.remove(user);
|
||||
}
|
||||
|
||||
public List<Group> getAssignedGroups() {
|
||||
if (assignedGroups == null) {
|
||||
return null;
|
||||
} else {
|
||||
return Collections.unmodifiableList(assignedGroups);
|
||||
}
|
||||
}
|
||||
|
||||
protected void setAssignedGroups(final List<Group> assignedGroups) {
|
||||
this.assignedGroups = assignedGroups;
|
||||
}
|
||||
|
||||
protected void addAssignedGroup(final Group group) {
|
||||
assignedGroups.add(group);
|
||||
}
|
||||
|
||||
protected void removeAssignedGroup(final Group group) {
|
||||
assignedGroups.remove(group);
|
||||
protected void removeAssignment(final TaskAssignment assignment) {
|
||||
assignments.remove(assignment);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -39,6 +39,7 @@ public class EqualsAndHashCodeTest extends EqualsVerifier {
|
|||
public static Collection<Class<?>> data() {
|
||||
return Arrays.asList(new Class<?>[]{
|
||||
Task.class,
|
||||
TaskAssignment.class,
|
||||
UserTask.class,
|
||||
Workflow.class
|
||||
});
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ public class ToStringTest extends ToStringVerifier {
|
|||
public static Collection<Class<?>> data() {
|
||||
return Arrays.asList(new Class<?>[]{
|
||||
Task.class,
|
||||
TaskAssignment.class,
|
||||
UserTask.class,
|
||||
Workflow.class
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue