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 static org.libreccm.core.CoreConstants.*;
|
||||||
|
|
||||||
import org.hibernate.validator.constraints.NotBlank;
|
import org.hibernate.validator.constraints.NotBlank;
|
||||||
|
import org.libreccm.workflow.TaskAssignment;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -92,6 +93,9 @@ public class Role implements Serializable {
|
||||||
@XmlElement(name = "permission", namespace = CORE_XML_NS)
|
@XmlElement(name = "permission", namespace = CORE_XML_NS)
|
||||||
private List<Permission> permissions = new ArrayList<>();
|
private List<Permission> permissions = new ArrayList<>();
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "role")
|
||||||
|
private List<TaskAssignment> assignedTasks;
|
||||||
|
|
||||||
protected Role() {
|
protected Role() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
@ -152,6 +156,26 @@ public class Role implements Serializable {
|
||||||
permissions.remove(permission);
|
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
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
int hash = 7;
|
int hash = 7;
|
||||||
|
|
|
||||||
|
|
@ -137,8 +137,8 @@ public class RoleMembership implements Serializable {
|
||||||
return String.format("%s{ "
|
return String.format("%s{ "
|
||||||
+ "membershipId = %d, "
|
+ "membershipId = %d, "
|
||||||
+ "user = %s, "
|
+ "user = %s, "
|
||||||
+ "role = %s, "
|
+ "role = %s "
|
||||||
+ " },",
|
+ " }",
|
||||||
super.toString(),
|
super.toString(),
|
||||||
membershipId,
|
membershipId,
|
||||||
Objects.toString(member),
|
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 static org.libreccm.core.CoreConstants.*;
|
||||||
|
|
||||||
import org.libreccm.security.Group;
|
import org.libreccm.security.Group;
|
||||||
|
import org.libreccm.security.Role;
|
||||||
import org.libreccm.security.User;
|
import org.libreccm.security.User;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
@ -34,6 +35,7 @@ import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.JoinTable;
|
import javax.persistence.JoinTable;
|
||||||
|
import javax.persistence.ManyToMany;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
import javax.persistence.OneToOne;
|
import javax.persistence.OneToOne;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
@ -77,28 +79,12 @@ public class UserTask extends Task implements Serializable {
|
||||||
@SuppressWarnings("PMD.LongVariable") //Shorter name would not be descriptive
|
@SuppressWarnings("PMD.LongVariable") //Shorter name would not be descriptive
|
||||||
private User notificationSender;
|
private User notificationSender;
|
||||||
|
|
||||||
@OneToMany
|
@OneToMany(mappedBy = "task")
|
||||||
@JoinTable(name = "WORKFLOW_USER_TASK_ASSIGNED_USERS",
|
private List<TaskAssignment> assignments;
|
||||||
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;
|
|
||||||
|
|
||||||
public UserTask() {
|
public UserTask() {
|
||||||
super();
|
super();
|
||||||
assignedUsers = new ArrayList<>();
|
assignments = new ArrayList<>();
|
||||||
assignedGroups = new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLocked() {
|
public boolean isLocked() {
|
||||||
|
|
@ -166,44 +152,24 @@ public class UserTask extends Task implements Serializable {
|
||||||
this.notificationSender = notificationSender;
|
this.notificationSender = notificationSender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> getAssignedUsers() {
|
public List<TaskAssignment> getAssignments() {
|
||||||
if (assignedUsers == null) {
|
if (assignments == null) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return Collections.unmodifiableList(assignedUsers);
|
return Collections.unmodifiableList(assignments);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setAssignedUsers(final List<User> assignedUsers) {
|
protected void setAssignments(final List<TaskAssignment> assignments) {
|
||||||
this.assignedUsers = assignedUsers;
|
this.assignments = assignments;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addAssignedUser(final User user) {
|
protected void addAssignment(final TaskAssignment assignment) {
|
||||||
assignedUsers.add(user);
|
assignments.add(assignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void removeAssignedUser(final User user) {
|
protected void removeAssignment(final TaskAssignment assignment) {
|
||||||
assignedUsers.remove(user);
|
assignments.remove(assignment);
|
||||||
}
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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() {
|
public static Collection<Class<?>> data() {
|
||||||
return Arrays.asList(new Class<?>[]{
|
return Arrays.asList(new Class<?>[]{
|
||||||
Task.class,
|
Task.class,
|
||||||
|
TaskAssignment.class,
|
||||||
UserTask.class,
|
UserTask.class,
|
||||||
Workflow.class
|
Workflow.class
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ public class ToStringTest extends ToStringVerifier {
|
||||||
public static Collection<Class<?>> data() {
|
public static Collection<Class<?>> data() {
|
||||||
return Arrays.asList(new Class<?>[]{
|
return Arrays.asList(new Class<?>[]{
|
||||||
Task.class,
|
Task.class,
|
||||||
|
TaskAssignment.class,
|
||||||
UserTask.class,
|
UserTask.class,
|
||||||
Workflow.class
|
Workflow.class
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue