adds converter for trunk class role and permission

git-svn-id: https://svn.libreccm.org/ccm/trunk@4197 8810af33-2d31-482b-a856-94f89814c4df
master
tosmers 2016-07-14 16:18:56 +00:00
parent 35a47857e0
commit d8c9a0eda8
14 changed files with 365 additions and 71 deletions

View File

@ -20,6 +20,7 @@ package com.arsdigita.kernel;
import com.arsdigita.db.Sequences; import com.arsdigita.db.Sequences;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
import com.arsdigita.kernel.permissions.PermissionDescriptor; import com.arsdigita.kernel.permissions.PermissionDescriptor;
import com.arsdigita.kernel.permissions.PermissionService; import com.arsdigita.kernel.permissions.PermissionService;
@ -27,9 +28,13 @@ import com.arsdigita.kernel.permissions.PrivilegeDescriptor;
import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID; import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.PersistenceException; import com.arsdigita.persistence.PersistenceException;
import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/** /**
* *
@ -497,4 +502,28 @@ public class Role extends DomainObject {
return m_roleGroup; return m_roleGroup;
} }
/**
* Retrieves all objects of this type stored in the database. Very
* necessary for exporting all entities of the current work environment.
*
* @return List of all roles
*/
public static List<Role> getAllObjectRoles() {
List<Role> roleList = new ArrayList<>();
final Session session = SessionManager.getSession();
DomainCollection collection = new DomainCollection(session.retrieve(
Role.BASE_DATA_OBJECT_TYPE));
while (collection.next()) {
Role role = (Role) collection.getDomainObject();
if (role != null) {
roleList.add(role);
}
}
collection.close();
return roleList;
}
} }

View File

@ -19,6 +19,10 @@
package com.arsdigita.kernel.permissions; package com.arsdigita.kernel.permissions;
import com.arsdigita.domain.DomainCollection;
import com.arsdigita.kernel.Group;
import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.web.Web; import com.arsdigita.web.Web;
import com.arsdigita.kernel.ACSObject; import com.arsdigita.kernel.ACSObject;
@ -36,7 +40,9 @@ import com.arsdigita.persistence.OID;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -59,6 +65,7 @@ public class Permission extends DomainObject {
// The names of the attributes we use when creating permission // The names of the attributes we use when creating permission
// objects // objects
static final String OBJECT_ID = "objectId"; static final String OBJECT_ID = "objectId";
static final String ID = "id";
static final String PARTY_ID = "partyId"; static final String PARTY_ID = "partyId";
static final String PRIVILEGE = "privilege"; static final String PRIVILEGE = "privilege";
@ -69,7 +76,7 @@ public class Permission extends DomainObject {
* *
*/ */
@Override @Override
protected String getBaseDataObjectType() { public String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE; return BASE_DATA_OBJECT_TYPE;
} }
@ -111,6 +118,19 @@ public class Permission extends DomainObject {
super(oid); super(oid);
} }
/**
* Gets the value of the ID property.
*
* This is a convenience method that is roughly equivalent
* to getOID().get("id"). In general, it should be used
* instead of the getOID method to get any ACSObject's ID.
*
* @return the value of the ID property.
*/
public BigDecimal getID() {
return (BigDecimal) get(ID);
}
/** /**
* Returns the <code>OID</code> of the <code>Party</code> that is * Returns the <code>OID</code> of the <code>Party</code> that is
* the grantee of the privilege associated with this * the grantee of the privilege associated with this
@ -123,7 +143,7 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
OID getPartyOID() { public OID getPartyOID() {
return new OID(Party.BASE_DATA_OBJECT_TYPE, get(PARTY_ID)); return new OID(Party.BASE_DATA_OBJECT_TYPE, get(PARTY_ID));
} }
@ -141,7 +161,7 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
void setPartyOID(OID partyOID) { public void setPartyOID(OID partyOID) {
set(PARTY_ID, partyOID.get("id")); set(PARTY_ID, partyOID.get("id"));
} }
@ -156,7 +176,7 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
OID getACSObject() { public OID getACSObject() {
return new OID("com.arsdigita.kernel.ACSObject", get(OBJECT_ID)); return new OID("com.arsdigita.kernel.ACSObject", get(OBJECT_ID));
} }
@ -173,7 +193,7 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
void setACSObjectOID(OID acsObjectOID) { public void setACSObjectOID(OID acsObjectOID) {
set(OBJECT_ID, acsObjectOID.get("id")); set(OBJECT_ID, acsObjectOID.get("id"));
} }
@ -187,7 +207,7 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
PrivilegeDescriptor getPrivilege() { public PrivilegeDescriptor getPrivilege() {
return PrivilegeDescriptor.get((String) get(PRIVILEGE)); return PrivilegeDescriptor.get((String) get(PRIVILEGE));
} }
@ -203,14 +223,14 @@ public class Permission extends DomainObject {
* @see com.arsdigita.kernel.permissions.PrivilegeDescriptor * @see com.arsdigita.kernel.permissions.PrivilegeDescriptor
* @see com.arsdigita.persistence.OID * @see com.arsdigita.persistence.OID
*/ */
void setPrivilege(PrivilegeDescriptor privilege) { public void setPrivilege(PrivilegeDescriptor privilege) {
set(PRIVILEGE, privilege.getName()); set(PRIVILEGE, privilege.getName());
} }
/** /**
* Get the user who created the object (may be null) * Get the user who created the object (may be null)
*/ */
User getCreationUser() { public User getCreationUser() {
Object o = get("creationUser"); Object o = get("creationUser");
if (o == null) { if (o == null) {
return null; return null;
@ -221,14 +241,14 @@ public class Permission extends DomainObject {
/** /**
* Get the creation date * Get the creation date
*/ */
Date getCreationDate() { public Date getCreationDate() {
return (Date) get("creationDate"); return (Date) get("creationDate");
} }
/** /**
* Get the creation IP address (may be null) * Get the creation IP address (may be null)
*/ */
String getCreationIP() { public String getCreationIP() {
return (String) get("creationIP"); return (String) get("creationIP");
} }
@ -298,4 +318,28 @@ public class Permission extends DomainObject {
set("creationDate", date); set("creationDate", date);
set("creationIP", ip); set("creationIP", ip);
} }
/**
* Retrieves all objects of this type stored in the database. Very
* necessary for exporting all entities of the current work environment.
*
* @return List of all permissions
*/
public static List<Permission> getAllObjectPermissions() {
List<Permission> permissionList = new ArrayList<>();
final Session session = SessionManager.getSession();
DomainCollection collection = new DomainCollection(session.retrieve(
Group.BASE_DATA_OBJECT_TYPE));
while (collection.next()) {
Permission permission = (Permission) collection.getDomainObject();
if (permission != null) {
permissionList.add(permission);
}
}
collection.close();
return permissionList;
}
} }

View File

@ -24,8 +24,12 @@ import com.arsdigita.portation.modules.core.core.CcmObject;
import com.arsdigita.portation.modules.core.security.Group; import com.arsdigita.portation.modules.core.security.Group;
import com.arsdigita.portation.modules.core.security.GroupMembership; import com.arsdigita.portation.modules.core.security.GroupMembership;
import com.arsdigita.portation.modules.core.security.Party; import com.arsdigita.portation.modules.core.security.Party;
import com.arsdigita.portation.modules.core.security.Permission;
import com.arsdigita.portation.modules.core.security.Role;
import com.arsdigita.portation.modules.core.security.RoleMembership;
import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.security.User;
import com.arsdigita.portation.modules.core.workflow.Task; import com.arsdigita.portation.modules.core.workflow.Task;
import com.arsdigita.portation.modules.core.workflow.TaskAssignment;
import com.arsdigita.portation.modules.core.workflow.UserTask; import com.arsdigita.portation.modules.core.workflow.UserTask;
import com.arsdigita.portation.modules.core.workflow.Workflow; import com.arsdigita.portation.modules.core.workflow.Workflow;
@ -51,5 +55,13 @@ public class NgCollection {
public static Map<Long, Task> tasks = new HashMap<>(); public static Map<Long, Task> tasks = new HashMap<>();
public static Map<Long, UserTask> userTasks = new HashMap<>(); public static Map<Long, UserTask> userTasks = new HashMap<>();
public static Map<Long, Role> roles = new HashMap<>();
public static Map<Long, RoleMembership> roleMemberships = new HashMap<>();
public static Map<Long, TaskAssignment> taskAssignments = new HashMap<>();
public static Map<Long, Permission> permissions = new HashMap<>();
private NgCollection() {} private NgCollection() {}
} }

View File

@ -51,17 +51,20 @@ public class CategoryConversion {
*/ */
private static void setAssociations( private static void setAssociations(
List<com.arsdigita.categorization.Category> trunkCategories) { List<com.arsdigita.categorization.Category> trunkCategories) {
Category category, parentCategory;
for (com.arsdigita.categorization.Category for (com.arsdigita.categorization.Category
trunkCategory : trunkCategories) { trunkCategory : trunkCategories) {
category = NgCollection.categories.get(trunkCategory.getID() Category category = NgCollection.categories.get(trunkCategory
.getID()
.longValue()); .longValue());
// set parent associations // set parent associations
parentCategory = NgCollection.categories.get(trunkCategory Category parentCategory = NgCollection.categories.get(trunkCategory
.getDefaultParentCategory().getID().longValue()); .getDefaultParentCategory().getID().longValue());
setParentCategory(category, parentCategory); if (category != null && parentCategory != null) {
// set parent and opposed association
category.setParentCategory(parentCategory);
parentCategory.addSubCategory(category);
}
// create categorizations only for category typed objects // create categorizations only for category typed objects
CategorizedCollection categorizedCollection = trunkCategory CategorizedCollection categorizedCollection = trunkCategory
@ -71,30 +74,22 @@ public class CategoryConversion {
} }
} }
private static void setParentCategory(Category category, Category
parentCategory) {
if (category != null && parentCategory != null) {
// set parent and opposed association
category.setParentCategory(parentCategory);
parentCategory.addSubCategory(category);
}
}
private static void createCategorizations(Category category, private static void createCategorizations(Category category,
CategorizedCollection CategorizedCollection
categorizedObjects) { categorizedObjects) {
CcmObject categorizedObject; Categorization categorization;
while (categorizedObjects.next()) { while (categorizedObjects.next()) {
categorizedObject = NgCollection.ccmObjects.get(((ACSObject) CcmObject categorizedObject = NgCollection.ccmObjects.get(((ACSObject)
categorizedObjects.getDomainObject()).getID().longValue()); categorizedObjects.getDomainObject()).getID().longValue());
// create categorizations
categorization = new Categorization(category,
categorizedObject);
// set opposed associations if (category != null && categorizedObject != null) {
category.addObject(categorization); // create categorizations
categorizedObject.addCategory(categorization); Categorization categorization = new Categorization(category,
categorizedObject);
// set opposed associations
category.addObject(categorization);
categorizedObject.addCategory(categorization);
}
} }
} }
} }

View File

@ -24,6 +24,7 @@ import com.arsdigita.portation.modules.core.security.Group;
import com.arsdigita.portation.modules.core.security.GroupMembership; import com.arsdigita.portation.modules.core.security.GroupMembership;
import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.security.User;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -33,8 +34,16 @@ import java.util.List;
public class GroupConversion { public class GroupConversion {
public static void convertAll() { public static void convertAll() {
List<com.arsdigita.kernel.Group> trunkGroups = com.arsdigita.kernel List<com.arsdigita.kernel.Group> trunkGroups,
.Group.getAllObjectGroups(); roleGroups = new ArrayList<>();
trunkGroups = com.arsdigita.kernel.Group.getAllObjectGroups();
List<com.arsdigita.kernel.Role> trunkRoles = com.arsdigita.kernel
.Role.getAllObjectRoles();
trunkRoles.forEach(role -> roleGroups.add(role.getGroup()));
// remove subgroups representing roles
trunkGroups.removeAll(roleGroups);
// create groups // create groups
trunkGroups.forEach(Group::new); trunkGroups.forEach(Group::new);
@ -44,10 +53,9 @@ public class GroupConversion {
private static void setAssociations( private static void setAssociations(
List<com.arsdigita.kernel.Group> trunkGroups) { List<com.arsdigita.kernel.Group> trunkGroups) {
Group group;
for (com.arsdigita.kernel.Group trunkGroup : trunkGroups) { for (com.arsdigita.kernel.Group trunkGroup : trunkGroups) {
group = NgCollection.groups.get(trunkGroup.getID().longValue()); Group group = NgCollection.groups.get(trunkGroup.getID()
.longValue());
// create groupMemberships // create groupMemberships
UserCollection userCollection = trunkGroup.getMemberUsers(); UserCollection userCollection = trunkGroup.getMemberUsers();
@ -61,12 +69,14 @@ public class GroupConversion {
User member = NgCollection.users.get(userCollection.getUser() User member = NgCollection.users.get(userCollection.getUser()
.getID().longValue()); .getID().longValue());
// create groupMemeberships if (group != null && member != null) {
GroupMembership groupMembership = new GroupMembership(group, member); // create groupMemeberships
GroupMembership groupMembership = new GroupMembership(group, member);
// set adverse associations // set adverse associations
group.addMembership(groupMembership); group.addMembership(groupMembership);
member.addGroupMembership(groupMembership); member.addGroupMembership(groupMembership);
}
} }
} }

View File

@ -0,0 +1,74 @@
/*
* 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 com.arsdigita.portation.conversion.core.security;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
import com.arsdigita.portation.modules.core.security.Permission;
import com.arsdigita.portation.modules.core.security.Role;
import com.arsdigita.portation.modules.core.security.User;
import java.math.BigDecimal;
import java.util.List;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created the 7/14/16
*/
public class PermissionConversion {
public static void convertAll() {
List<com.arsdigita.kernel.permissions.Permission> trunkPermissions =
com.arsdigita.kernel.permissions.Permission
.getAllObjectPermissions();
createPermissionsAndSetAssociations(trunkPermissions);
}
private static void createPermissionsAndSetAssociations(List<com
.arsdigita.kernel.permissions.Permission> trunkPermissions) {
for (com.arsdigita.kernel.permissions.Permission trunkPermission :
trunkPermissions) {
// create Permissions
Permission permission = new Permission(trunkPermission);
// set object and opposed associations
CcmObject object = NgCollection.ccmObjects.get(((BigDecimal)
trunkPermission.getACSObject().get("id")).longValue());
if (object != null) {
permission.setObject(object);
object.addPermission(permission);
}
// set grantee and opposed associations
Role role = NgCollection.roles.get(0); //Todo: fix "0"
if (role != null) {
permission.setGrantee(role);
role.addPermission(permission);
}
// set creationUser
User creationUser = NgCollection.users.get(trunkPermission
.getCreationUser().getID().longValue());
if (creationUser != null)
permission.setCreationUser(creationUser);
}
}
}

View File

@ -0,0 +1,74 @@
/*
* 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 com.arsdigita.portation.conversion.core.security;
import com.arsdigita.kernel.PartyCollection;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.Party;
import com.arsdigita.portation.modules.core.security.Role;
import com.arsdigita.portation.modules.core.security.RoleMembership;
import java.util.List;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created the 7/4/16
*/
public class RoleConversion {
public static void convertAll() {
List<com.arsdigita.kernel.Role> trunkRoles = com.arsdigita.kernel
.Role.getAllObjectRoles();
// create roles
trunkRoles.forEach(Role::new);
// set associations
setAssociations(trunkRoles);
}
private static void setAssociations(List<com.arsdigita.kernel.Role>
trunkRoles) {
for (com.arsdigita.kernel.Role trunkRole : trunkRoles) {
Role role = NgCollection.roles.get(trunkRole.getID().longValue());
// create roleMemberships
PartyCollection partyCollection = trunkRole.getContainedParties();
createRoleMemberships(role, partyCollection);
}
}
private static void createRoleMemberships(Role role, PartyCollection
partyCollection) {
while (partyCollection.next()) {
Party member = NgCollection.parties.get(partyCollection.getParty()
.getID().longValue());
if (role != null && member != null) {
// create roleMemberships
RoleMembership roleMembership = new RoleMembership(role, member);
// set adverse associations
role.addMembership(roleMembership);
member.addRoleMembership(roleMembership);
}
}
}
}

View File

@ -19,6 +19,7 @@
package com.arsdigita.portation.conversion.core.workflow; package com.arsdigita.portation.conversion.core.workflow;
import com.arsdigita.kernel.UserCollection;
import com.arsdigita.portation.conversion.NgCollection; import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.security.User;
import com.arsdigita.portation.modules.core.workflow.UserTask; import com.arsdigita.portation.modules.core.workflow.UserTask;
@ -38,24 +39,21 @@ public class UserTaskConversion {
List<com.arsdigita.workflow.simple.UserTask> trunkUserTasks = com List<com.arsdigita.workflow.simple.UserTask> trunkUserTasks = com
.arsdigita.workflow.simple.UserTask.getAllObjectUserTasks(); .arsdigita.workflow.simple.UserTask.getAllObjectUserTasks();
createUserTaskSetAssociations(trunkUserTasks); createUserTasksAndSetAssociations(trunkUserTasks);
setTaskDependencies(trunkUserTasks); setTaskRingDependencies(trunkUserTasks);
} }
private static void createUserTaskSetAssociations(List<com.arsdigita private static void createUserTasksAndSetAssociations(List<com.arsdigita
.workflow.simple.UserTask> trunkUserTasks) { .workflow.simple.UserTask> trunkUserTasks) {
UserTask userTask; Workflow workflow;
User lockingUser, notificationSender;
for (com.arsdigita.workflow.simple.UserTask trunkUserTask : for (com.arsdigita.workflow.simple.UserTask trunkUserTask :
trunkUserTasks) { trunkUserTasks) {
// create userTask // create userTask
userTask = new UserTask(trunkUserTask); UserTask userTask = new UserTask(trunkUserTask);
// set workflow and opposed associations // set workflow and opposed associations
workflow = NgCollection.workflows.get( Workflow workflow = NgCollection.workflows.get(
trunkUserTask.getWorkflow().getID().longValue()); trunkUserTask.getWorkflow().getID().longValue());
if (workflow != null) { if (workflow != null) {
userTask.setWorkflow(workflow); userTask.setWorkflow(workflow);
@ -63,18 +61,32 @@ public class UserTaskConversion {
} }
// set lockingUser and notificationSender // set lockingUser and notificationSender
lockingUser = NgCollection.users.get(trunkUserTask.getLockedUser() User lockingUser = NgCollection.users.get(trunkUserTask
.getLockedUser()
.getID().longValue()); .getID().longValue());
notificationSender = NgCollection.users.get(trunkUserTask User notificationSender = NgCollection.users.get(trunkUserTask
.getNotificationSender().getID().longValue()); .getNotificationSender().getID().longValue());
if (lockingUser != null) if (lockingUser != null)
userTask.setLockingUser(lockingUser); userTask.setLockingUser(lockingUser);
if (notificationSender != null) if (notificationSender != null)
userTask.setNotificationSender(notificationSender); userTask.setNotificationSender(notificationSender);
// create taskAssignments
UserCollection userCollection = trunkUserTask
.getAssignedUserCollection();
createTaskAssignments(userTask, userCollection);
} }
} }
private static void setTaskDependencies(List<com.arsdigita.workflow private static void createTaskAssignments(UserTask userTask,
UserCollection userCollection) {
while (userCollection.next()) {
// Role role = NgCollection.users.get(userCollection.getUser().getID
// ().longValue()).getRoleMemberships().;
}
}
private static void setTaskRingDependencies(List<com.arsdigita.workflow
.simple.UserTask> trunkUserTasks) { .simple.UserTask> trunkUserTasks) {
UserTask userTask, dependency; UserTask userTask, dependency;
@ -87,9 +99,12 @@ public class UserTaskConversion {
while (it.hasNext()) { while (it.hasNext()) {
dependency = NgCollection.userTasks.get(((Task) it.next()) dependency = NgCollection.userTasks.get(((Task) it.next())
.getID().longValue()); .getID().longValue());
// set dependencies and opposed
userTask.addDependsOn(dependency); if (userTask != null && dependency != null) {
dependency.addDependentTask(userTask); // set dependencies and opposed
userTask.addDependsOn(dependency);
dependency.addDependentTask(userTask);
}
} }
} }

View File

@ -42,7 +42,8 @@ public class Categorization implements Identifiable {
private long categoryOrder; private long categoryOrder;
private long objectOrder; private long objectOrder;
public Categorization(Category category, CcmObject categorizedObject) { public Categorization(final Category category, final CcmObject
categorizedObject) {
this.categorizationId = NgCollection.categorizations.size() + 1; this.categorizationId = NgCollection.categorizations.size() + 1;
this.category = category; this.category = category;

View File

@ -29,11 +29,13 @@ import com.arsdigita.portation.conversion.NgCollection;
public class GroupMembership implements Identifiable { public class GroupMembership implements Identifiable {
private long membershipId; private long membershipId;
private Group group; private Group group;
private User member; private User member;
public GroupMembership(Group group, User member) { public GroupMembership(final Group group, final User member) {
this.membershipId = NgCollection.groupMemberships.size() + 1; this.membershipId = NgCollection.groupMemberships.size() + 1;
this.group = group; this.group = group;
this.member = member; this.member = member;

View File

@ -20,6 +20,7 @@ package com.arsdigita.portation.modules.core.security;
import com.arsdigita.portation.AbstractMarshaller; import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Identifiable; import com.arsdigita.portation.Identifiable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject; import com.arsdigita.portation.modules.core.core.CcmObject;
import java.util.Date; import java.util.Date;
@ -32,14 +33,26 @@ public class Permission implements Identifiable {
private long permissionId; private long permissionId;
private String grantedPrivilege; private String grantedPrivilege;
private CcmObject object; private CcmObject object;
private Role grantee; private Role grantee;
private User creationUser; private User creationUser;
private Date creationDate; private Date creationDate;
private String creationIp; private String creationIp;
public Permission(final com.arsdigita.kernel.permissions.Permission permission) { public Permission(final com.arsdigita.kernel.permissions.Permission trunkPermission) {
this.permissionId = trunkPermission.getID().longValue();
this.grantedPrivilege = trunkPermission.getPrivilege().getName();
//this.object;
//this.grantee;
//this.creationUser
this.creationDate = trunkPermission.getCreationDate();
this.creationIp = trunkPermission.getCreationIP();
NgCollection.permissions.put(this.permissionId, this);
} }
@Override @Override

View File

@ -20,6 +20,7 @@ package com.arsdigita.portation.modules.core.security;
import com.arsdigita.portation.AbstractMarshaller; import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Identifiable; import com.arsdigita.portation.Identifiable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.workflow.TaskAssignment; import com.arsdigita.portation.modules.core.workflow.TaskAssignment;
import java.util.ArrayList; import java.util.ArrayList;
@ -35,12 +36,22 @@ public class Role implements Identifiable {
private long roleId; private long roleId;
private String name; private String name;
private Set<RoleMembership> memberships = new HashSet<>();
private List<Permission> permissions = new ArrayList<>(); private Set<RoleMembership> memberships;
private List<Permission> permissions;
private List<TaskAssignment> assignedTasks; private List<TaskAssignment> assignedTasks;
public Role() { public Role(com.arsdigita.kernel.Role trunkRole) {
this.roleId = trunkRole.getID().longValue();
this.name = trunkRole.getName();
this.memberships = new HashSet<>();
this.permissions = new ArrayList<>();
this.assignedTasks = new ArrayList<>();
NgCollection.roles.put(this.roleId, this);
} }
@Override @Override
@ -72,11 +83,11 @@ public class Role implements Identifiable {
this.memberships = memberships; this.memberships = memberships;
} }
protected void addMembership(final RoleMembership membership) { public void addMembership(final RoleMembership membership) {
memberships.add(membership); memberships.add(membership);
} }
protected void removeMembership(final RoleMembership membership) { public void removeMembership(final RoleMembership membership) {
memberships.remove(membership); memberships.remove(membership);
} }
@ -88,11 +99,11 @@ public class Role implements Identifiable {
this.permissions = permissions; this.permissions = permissions;
} }
protected void addPermission(final Permission permission) { public void addPermission(final Permission permission) {
permissions.add(permission); permissions.add(permission);
} }
protected void removePermission(final Permission permission) { public void removePermission(final Permission permission) {
permissions.remove(permission); permissions.remove(permission);
} }
@ -104,11 +115,11 @@ public class Role implements Identifiable {
this.assignedTasks = assignedTasks; this.assignedTasks = assignedTasks;
} }
protected void addAssignedTask(final TaskAssignment taskAssignment) { public void addAssignedTask(final TaskAssignment taskAssignment) {
assignedTasks.add(taskAssignment); assignedTasks.add(taskAssignment);
} }
protected void removeAssignedTask(final TaskAssignment taskAssignment) { public void removeAssignedTask(final TaskAssignment taskAssignment) {
assignedTasks.remove(taskAssignment); assignedTasks.remove(taskAssignment);
} }
} }

View File

@ -20,6 +20,7 @@ package com.arsdigita.portation.modules.core.security;
import com.arsdigita.portation.AbstractMarshaller; import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Identifiable; import com.arsdigita.portation.Identifiable;
import com.arsdigita.portation.conversion.NgCollection;
/** /**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a> * @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
@ -28,11 +29,17 @@ import com.arsdigita.portation.Identifiable;
public class RoleMembership implements Identifiable { public class RoleMembership implements Identifiable {
private long membershipId; private long membershipId;
private Role role; private Role role;
private Party member; private Party member;
public RoleMembership() { public RoleMembership(final Role role, final Party member) {
this.membershipId = NgCollection.roleMemberships.size() + 1;
this.role = role;
this.member = member;
NgCollection.roleMemberships.put(this.membershipId, this);
} }
@Override @Override

View File

@ -20,6 +20,7 @@ package com.arsdigita.portation.modules.core.workflow;
import com.arsdigita.portation.AbstractMarshaller; import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Identifiable; import com.arsdigita.portation.Identifiable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.security.Role; import com.arsdigita.portation.modules.core.security.Role;
/** /**
@ -29,11 +30,17 @@ import com.arsdigita.portation.modules.core.security.Role;
public class TaskAssignment implements Identifiable { public class TaskAssignment implements Identifiable {
private long taskAssignmentId; private long taskAssignmentId;
private UserTask task; private UserTask task;
private Role role; private Role role;
public TaskAssignment() { public TaskAssignment(final UserTask task, final Role role) {
this.taskAssignmentId = NgCollection.taskAssignments.size() + 1;
this.task = task;
this.role = role;
NgCollection.taskAssignments.put(this.taskAssignmentId, this);
} }
@Override @Override