diff --git a/ccm-core/src/com/arsdigita/portation/conversion/NgCollection.java b/ccm-core/src/com/arsdigita/portation/conversion/NgCollection.java index c69459cd2..36ffbb2a7 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/NgCollection.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/NgCollection.java @@ -26,6 +26,7 @@ import com.arsdigita.portation.modules.core.security.GroupMembership; import com.arsdigita.portation.modules.core.security.Party; import com.arsdigita.portation.modules.core.security.User; import com.arsdigita.portation.modules.core.workflow.Task; +import com.arsdigita.portation.modules.core.workflow.UserTask; import com.arsdigita.portation.modules.core.workflow.Workflow; import java.util.HashMap; @@ -38,14 +39,17 @@ import java.util.Map; public class NgCollection { public static Map ccmObjects = new HashMap<>(); - public static Map workflows = new HashMap<>(); - public static Map tasks = new HashMap<>(); public static Map categories = new HashMap<>(); public static Map categorizations = new HashMap<>(); + public static Map parties = new HashMap<>(); public static Map users = new HashMap<>(); public static Map groups = new HashMap<>(); public static Map groupMemberships = new HashMap<>(); + public static Map workflows = new HashMap<>(); + public static Map tasks = new HashMap<>(); + public static Map userTasks = new HashMap<>(); + private NgCollection() {} } diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/categorization/CategoryConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/categorization/CategoryConversion.java index 2a2f39238..bb5b2e75e 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/categorization/CategoryConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/categorization/CategoryConversion.java @@ -37,6 +37,7 @@ public class CategoryConversion { List trunkCategories = com .arsdigita.categorization.Category.getAllObjectCategories(); + // create categories trunkCategories.forEach(Category::new); setAssociations(trunkCategories); @@ -73,6 +74,7 @@ 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); } @@ -81,15 +83,16 @@ public class CategoryConversion { private static void createCategorizations(Category category, CategorizedCollection categorizedObjects) { + CcmObject categorizedObject; Categorization categorization; + while (categorizedObjects.next()) { - CcmObject categorizedObject = NgCollection.ccmObjects.get(( - (ACSObject) categorizedObjects.getDomainObject()) - .getID().longValue()); + categorizedObject = NgCollection.ccmObjects.get(((ACSObject) + categorizedObjects.getDomainObject()).getID().longValue()); // create categorizations - Categorization categorization = new Categorization(category, + categorization = new Categorization(category, categorizedObject); - // set adverse associations + // set opposed associations category.addObject(categorization); categorizedObject.addCategory(categorization); } diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/security/GroupConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/security/GroupConversion.java index 596d4bc3a..2e6c87e81 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/security/GroupConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/security/GroupConversion.java @@ -36,6 +36,7 @@ public class GroupConversion { List trunkGroups = com.arsdigita.kernel .Group.getAllObjectGroups(); + // create groups trunkGroups.forEach(Group::new); setAssociations(trunkGroups); diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/security/UserConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/security/UserConversion.java index cd8d8dbb1..1d419863f 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/security/UserConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/security/UserConversion.java @@ -32,6 +32,7 @@ public class UserConversion { List trunkUsers = com.arsdigita.kernel .User.getAllObjectUsers(); + // create users trunkUsers.forEach(User::new); } } diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/TaskConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/TaskConversion.java deleted file mode 100644 index 1b7623ca6..000000000 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/TaskConversion.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * 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.workflow; - - -import com.arsdigita.portation.conversion.NgCollection; -import com.arsdigita.portation.modules.core.workflow.Task; -import com.arsdigita.portation.modules.core.workflow.Workflow; - -import java.util.List; - -/** - * @author Tobias Osmers + * @version created the 6/29/16 + */ +public class UserTaskConversion { + + public static void convertAll() { + List trunkUserTasks = com + .arsdigita.workflow.simple.UserTask.getAllObjectUserTasks(); + + createUserTaskSetAssociations(trunkUserTasks); + + setTaskDependencies(trunkUserTasks); + } + + private static void createUserTaskSetAssociations(List trunkUserTasks) { + UserTask userTask; Workflow workflow; + User lockingUser, notificationSender; + + for (com.arsdigita.workflow.simple.UserTask trunkUserTask : + trunkUserTasks) { + + // create userTask + userTask = new UserTask(trunkUserTask); + + // set workflow and opposed associations + workflow = NgCollection.workflows.get( + trunkUserTask.getWorkflow().getID().longValue()); + if (workflow != null) { + userTask.setWorkflow(workflow); + workflow.addTask(userTask); + } + + // set lockingUser and notificationSender + lockingUser = NgCollection.users.get(trunkUserTask.getLockedUser() + .getID().longValue()); + notificationSender = NgCollection.users.get(trunkUserTask + .getNotificationSender().getID().longValue()); + if (lockingUser != null) + userTask.setLockingUser(lockingUser); + if (notificationSender != null) + userTask.setNotificationSender(notificationSender); + } + } + + private static void setTaskDependencies(List trunkUserTasks) { + UserTask userTask, dependency; + + for (com.arsdigita.workflow.simple.UserTask trunkUserTask : + trunkUserTasks) { + userTask = NgCollection.userTasks.get(trunkUserTask.getID() + .longValue()); + + Iterator it = trunkUserTask.getDependencies(); + while (it.hasNext()) { + dependency = NgCollection.userTasks.get(((Task) it.next()) + .getID().longValue()); + // set dependencies and opposed + userTask.addDependsOn(dependency); + dependency.addDependentTask(userTask); + } + + } + } +} diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowConversion.java index bc86f8ce3..5715a1c99 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowConversion.java @@ -32,6 +32,7 @@ public class WorkflowConversion { List trunkWorkflows = com.arsdigita.workflow.simple.Workflow.getAllObjectWorkflows(); + // create workflows trunkWorkflows.forEach(Workflow::new); } } diff --git a/ccm-core/src/com/arsdigita/portation/modules/core/workflow/UserTask.java b/ccm-core/src/com/arsdigita/portation/modules/core/workflow/UserTask.java index 34d04246d..9fd956139 100644 --- a/ccm-core/src/com/arsdigita/portation/modules/core/workflow/UserTask.java +++ b/ccm-core/src/com/arsdigita/portation/modules/core/workflow/UserTask.java @@ -20,8 +20,10 @@ package com.arsdigita.portation.modules.core.workflow; import com.arsdigita.portation.AbstractMarshaller; import com.arsdigita.portation.Identifiable; +import com.arsdigita.portation.conversion.NgCollection; import com.arsdigita.portation.modules.core.security.User; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -33,16 +35,31 @@ public class UserTask extends Task { private boolean locked; private User lockingUser; + private Date startDate; private Date dueDate; private long durationMinutes; + private User notificationSender; + private List assignments; public UserTask(final com.arsdigita.workflow.simple.UserTask trunkUserTask) { super(trunkUserTask); + this.locked = trunkUserTask.isLocked(); + //this.lockingUser + + this.startDate = trunkUserTask.getStartDate(); + this.dueDate = trunkUserTask.getDueDate(); + this.durationMinutes = trunkUserTask.getDuration().getDuration(); + + //this.notificationSender + + this.assignments = new ArrayList<>(); + + NgCollection.userTasks.put(this.getTaskId(), this); } @Override diff --git a/ccm-core/src/com/arsdigita/workflow/simple/Task.java b/ccm-core/src/com/arsdigita/workflow/simple/Task.java index 6565ebd37..63d73377a 100755 --- a/ccm-core/src/com/arsdigita/workflow/simple/Task.java +++ b/ccm-core/src/com/arsdigita/workflow/simple/Task.java @@ -1189,27 +1189,4 @@ public class Task extends AuditedACSObject implements Cloneable { protected void finishEvt() { }; - /** - * 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 tasks - */ - public static List getAllObjectTasks() { - List taskList = new ArrayList<>(); - - final Session session = SessionManager.getSession(); - DomainCollection collection = new DomainCollection(session.retrieve( - Task.BASE_DATA_OBJECT_TYPE)); - - while (collection.next()) { - Task task = (Task) collection.getDomainObject(); - if (task != null) { - taskList.add(task); - } - } - - collection.close(); - return taskList; - } } diff --git a/ccm-core/src/com/arsdigita/workflow/simple/UserTask.java b/ccm-core/src/com/arsdigita/workflow/simple/UserTask.java index 3cca70a35..2afa03300 100755 --- a/ccm-core/src/com/arsdigita/workflow/simple/UserTask.java +++ b/ccm-core/src/com/arsdigita/workflow/simple/UserTask.java @@ -19,6 +19,7 @@ package com.arsdigita.workflow.simple; import com.arsdigita.domain.DataObjectNotFoundException; +import com.arsdigita.domain.DomainCollection; import com.arsdigita.domain.DomainObjectFactory; import com.arsdigita.kernel.Group; import com.arsdigita.kernel.GroupCollection; @@ -32,17 +33,20 @@ import com.arsdigita.notification.Notification; import com.arsdigita.persistence.DataAssociation; import com.arsdigita.persistence.DataObject; import com.arsdigita.persistence.OID; +import com.arsdigita.persistence.Session; +import com.arsdigita.persistence.SessionManager; import com.arsdigita.persistence.metadata.ObjectType; import com.arsdigita.util.Assert; import com.arsdigita.util.UncheckedWrapperException; +import org.apache.log4j.Logger; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.Iterator; - -import org.apache.log4j.Logger; +import java.util.List; /** * User task that is associated with an interface for performing some manual @@ -1006,4 +1010,28 @@ public class UserTask extends Task implements Assignable { protected boolean sendAlerts(String operation) { return s_conf.isAlertsEnabled(); } + + /** + * 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 userTasks + */ + public static List getAllObjectUserTasks() { + List userTaskList = new ArrayList<>(); + + final Session session = SessionManager.getSession(); + DomainCollection collection = new DomainCollection(session.retrieve( + UserTask.BASE_DATA_OBJECT_TYPE)); + + while (collection.next()) { + UserTask userTask = (UserTask) collection.getDomainObject(); + if (userTask != null) { + userTaskList.add(userTask); + } + } + + collection.close(); + return userTaskList; + } }