diff --git a/ccm-core/src/com/arsdigita/portation/cmd/ExportHelper.java b/ccm-core/src/com/arsdigita/portation/cmd/CoreExporter.java similarity index 98% rename from ccm-core/src/com/arsdigita/portation/cmd/ExportHelper.java rename to ccm-core/src/com/arsdigita/portation/cmd/CoreExporter.java index ca5b03131..cb185f1a6 100644 --- a/ccm-core/src/com/arsdigita/portation/cmd/ExportHelper.java +++ b/ccm-core/src/com/arsdigita/portation/cmd/CoreExporter.java @@ -42,7 +42,7 @@ import java.util.ArrayList; * @author (NgCollection.permissions.values())); - System.out.printf("\t\tdone.\n"); + System.out.printf("\tdone.\n"); } } diff --git a/ccm-core/src/com/arsdigita/portation/cmd/ExportCliTool.java b/ccm-core/src/com/arsdigita/portation/cmd/ExportCliTool.java index eb39e3949..45fab707a 100644 --- a/ccm-core/src/com/arsdigita/portation/cmd/ExportCliTool.java +++ b/ccm-core/src/com/arsdigita/portation/cmd/ExportCliTool.java @@ -18,7 +18,7 @@ */ package com.arsdigita.portation.cmd; -import com.arsdigita.portation.conversion.MainConverter; +import com.arsdigita.portation.conversion.CoreConverter; import com.arsdigita.util.cmd.Program; import org.apache.commons.cli.CommandLine; import org.apache.log4j.Logger; @@ -87,6 +87,10 @@ public class ExportCliTool extends Program { export(args); break; + case "convert": + convert(); + break; + default: printUsage(); break; @@ -109,7 +113,7 @@ public class ExportCliTool extends Program { System.err.printf("module-class: %s\n", moduleClass); final String pathName = args[2]; System.err.printf("path: %s\n", pathName); - ExportHelper.setPath(pathName); + CoreExporter.setPath(pathName); System.err.printf("\n"); @@ -117,79 +121,79 @@ public class ExportCliTool extends Program { switch (moduleClass) { case "categories": convert(); - ExportHelper.exportCategories(); + CoreExporter.exportCategories(); break; case "categorizations": convert(); - ExportHelper.exportCategorizations(); + CoreExporter.exportCategorizations(); break; case "users": convert(); - ExportHelper.exportUsers(); + CoreExporter.exportUsers(); break; case "groups": convert(); - ExportHelper.exportGroups(); + CoreExporter.exportGroups(); break; case "groupMemberships": convert(); - ExportHelper.exportGroupMemberships(); + CoreExporter.exportGroupMemberships(); break; case "roles": convert(); - ExportHelper.exportRoles(); + CoreExporter.exportRoles(); break; case "roleMemberships": convert(); - ExportHelper.exportRoleMemberships(); + CoreExporter.exportRoleMemberships(); break; case "workflowTemplates": convert(); - ExportHelper.exportWorkflowTemplates(); + CoreExporter.exportWorkflowTemplates(); break; case "workflows": convert(); - ExportHelper.exportWorkflows(); + CoreExporter.exportWorkflows(); break; case "assignableTasks": convert(); - ExportHelper.exportAssignableTasks(); + CoreExporter.exportAssignableTasks(); break; case "taskAssignments": convert(); - ExportHelper.exportTaskAssignments(); + CoreExporter.exportTaskAssignments(); break; case "permissions": convert(); - ExportHelper.exportPermissions(); + CoreExporter.exportPermissions(); break; case "all_core": convert(); System.out.println("Started exporting all ng-objects..."); - ExportHelper.exportCategories(); - ExportHelper.exportCategorizations(); - ExportHelper.exportUsers(); - ExportHelper.exportGroups(); - ExportHelper.exportGroupMemberships(); - ExportHelper.exportRoles(); - ExportHelper.exportRoleMemberships(); - ExportHelper.exportWorkflows(); - ExportHelper.exportWorkflowTemplates(); - ExportHelper.exportAssignableTasks(); - ExportHelper.exportTaskAssignments(); - ExportHelper.exportPermissions(); + CoreExporter.exportCategories(); + CoreExporter.exportCategorizations(); + CoreExporter.exportUsers(); + CoreExporter.exportGroups(); + CoreExporter.exportGroupMemberships(); + CoreExporter.exportRoles(); + CoreExporter.exportRoleMemberships(); + CoreExporter.exportWorkflows(); + CoreExporter.exportWorkflowTemplates(); + CoreExporter.exportAssignableTasks(); + CoreExporter.exportTaskAssignments(); + CoreExporter.exportPermissions(); System.out.println("Finished exports."); System.out.printf("\n"); break; @@ -210,7 +214,7 @@ public class ExportCliTool extends Program { try { System.err.println("Started conversions of systems objects to " + "ng-objects..."); - MainConverter.startConversionToNg(); + CoreConverter.startConversionToNg(); System.err.println("Finished conversions."); System.out.printf("\n"); } catch (Exception e) { diff --git a/ccm-core/src/com/arsdigita/portation/conversion/MainConverter.java b/ccm-core/src/com/arsdigita/portation/conversion/CoreConverter.java similarity index 79% rename from ccm-core/src/com/arsdigita/portation/conversion/MainConverter.java rename to ccm-core/src/com/arsdigita/portation/conversion/CoreConverter.java index 04cf81705..8865cb262 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/MainConverter.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/CoreConverter.java @@ -25,11 +25,12 @@ import com.arsdigita.portation.conversion.core.security.RoleConversion; import com.arsdigita.portation.conversion.core.security.UserConversion; import com.arsdigita.portation.conversion.core.workflow.AssignableTaskConversion; import com.arsdigita.portation.conversion.core.workflow.WorkflowConversion; +import com.arsdigita.portation.modules.core.categorization.Category; import com.arsdigita.portation.modules.core.security.Permission; /** - * This main converter class calls all the conversions from trunk-objects + * This core converter class calls all the conversions from trunk-objects * to ng-objects in a specific order to guarantee a correct dependency * recreation in the ng-objects. All the created objects are going to be * stored in maps as -pairs in the {@link NgCollection}-class. @@ -37,7 +38,7 @@ import com.arsdigita.portation.modules.core.security.Permission; * @author permissions = new HashMap<>(); + // if lists need to be sorted in specific way to work with import + private static ArrayList unsortedCategories; + public static ArrayList sortedCategories; + /** * Private constructor to prevent the instantiation of this class. */ @@ -79,39 +82,47 @@ public class NgCollection { * to add them to the sorted list. After being added to sorted the * category will be removed from the unsorted list and therefore ignored * in this foreach run. - * - * @return a sorted array list of categories */ - public static ArrayList getSortedCategories() { - ArrayList unsorted = new ArrayList<>(categories.values()); - ArrayList sorted = new ArrayList<>(unsorted.size()); + static void sortCategories() { + unsortedCategories = new ArrayList<>(categories.values()); + sortedCategories = new ArrayList<>(unsortedCategories.size()); - for (Category anUnsorted : unsorted) { - addTree(unsorted, sorted, anUnsorted); + System.err.printf("\tSorting categorizes...\n"); + int count = 1; + for (Category anUnsorted : unsortedCategories) { + System.err.printf("\t\tNumber: %d\n", count++); + System.err.printf("\t\tCategory: %s\n", anUnsorted.getName()); + add(anUnsorted, "\t\t"); + //System.err.println(""); } - - Assert.assertEquals(unsorted.size(), sorted.size()); - - return sorted; - + System.err.printf("\tdone. Count: %d\n", sortedCategories.size()); } /** * Helper method to recursively add all parent categories before their * childs. * - * @param unsorted the unsorted list of categories - * @param sorted the sorted list of categories * @param category the current category in the unsorted list */ - private static void addTree(ArrayList unsorted, - ArrayList sorted, - Category category) { - if (category.getParentCategory() != null - && unsorted.contains(category.getParentCategory())) { - addTree(unsorted, sorted, category.getParentCategory()); + private static void add(Category category, String indent) { + Category parent = category.getParentCategory(); + + System.err.printf("%s\tHas missing parent?...", indent); + if (parent != null && !sortedCategories.contains(parent)) { + System.err.println("YES."); + System.err.printf("%s\tParent: %s\n", indent, parent.getName()); + + add(parent, String.format("%s\t", indent)); + } else { + System.err.println("NO."); + } + + System.err.printf("%sAdded to sorted list?...", indent); + if (!sortedCategories.contains(category)) { + sortedCategories.add(category); + System.err.println("YES."); + } else { + System.err.println("NO."); } - sorted.add(category); - unsorted.remove(category); } } 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 d1da6343c..153bd992a 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 @@ -45,14 +45,15 @@ public class CategoryConversion { * associations in tact. */ public static void convertAll() { + System.err.printf("\tFetching categories from database..."); List trunkCategories = com .arsdigita.categorization.Category.getAllObjectCategories(); + System.err.println("done."); - System.err.printf("\tConverting categorizes and categorizations...\n"); + System.err.printf("\tConverting categories and categorizations...\n"); createCategoryAndCategorizations(trunkCategories); setRingAssociations(trunkCategories); System.err.printf("\tdone.\n"); - } /** 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 c2906d0c5..785b82924 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 @@ -45,9 +45,11 @@ public class GroupConversion { * focusing on keeping all the associations in tact. */ public static void convertAll() { + System.err.printf("\tFetching groups from database..."); List trunkGroups, roleGroups = new ArrayList<>(); trunkGroups = com.arsdigita.kernel.Group.getAllObjectGroups(); + System.err.println("done."); System.err.printf("\tConverting groups and group memberships...\n"); createGroupsAndSetAssociations(trunkGroups); diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/security/PermissionConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/security/PermissionConversion.java index ce8b5f58b..b10c60f96 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/security/PermissionConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/security/PermissionConversion.java @@ -56,9 +56,11 @@ public class PermissionConversion { * grantee}-{@link Role} has to be recreated separately. */ public static void convertAll() { + System.err.printf("\tFetching permissions from database..."); List trunkPermissions = com.arsdigita.kernel.permissions.Permission .getAllObjectPermissions(); + System.err.println("done."); System.err.printf("\tConverting permissions...\n"); createPermissionsAndSetAssociations(trunkPermissions); diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/security/RoleConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/security/RoleConversion.java index ef722ab26..3fbece5ee 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/security/RoleConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/security/RoleConversion.java @@ -44,8 +44,10 @@ public class RoleConversion { * associations in tact. */ public static void convertAll() { + System.err.printf("\tFetching roles from database..."); List trunkRoles = com.arsdigita.kernel .Role.getAllObjectRoles(); + System.err.println("done."); System.err.printf("\tCreating roles and role memberships...\n"); createRolesAndSetAssociations(trunkRoles); 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 78e134ef2..b71551013 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 @@ -38,8 +38,10 @@ public class UserConversion { * creating the equivalent ng-{@link User}s. */ public static void convertAll() { + System.err.printf("\tFetching users from database..."); List trunkUsers = com.arsdigita.kernel .User.getAllObjectUsers(); + System.err.println("done."); System.err.printf("\tConverting users...\n"); // create users diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/AssignableTaskConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/AssignableTaskConversion.java index 80c0a64e5..508e7e2e7 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/AssignableTaskConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/AssignableTaskConversion.java @@ -52,8 +52,10 @@ public class AssignableTaskConversion { * to be recreated once all ng-{@link AssignableTask}s have been created. */ public static void convertAll() { + System.err.printf("\tFetching assignable tasks from database..."); List trunkUserTasks = com .arsdigita.workflow.simple.UserTask.getAllObjectUserTasks(); + System.err.println("done."); System.err.printf("\tConverting assignable tasks and task " + "assignments...\n"); 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 90c9ff2ae..93d9669d4 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 @@ -43,8 +43,10 @@ public class WorkflowConversion { * creating the equivalent ng-{@link Workflow}s. */ public static void convertAll() { + System.err.printf("\tFetching workflows from database..."); List trunkWorkflows = com.arsdigita.workflow.simple.Workflow.getAllObjectWorkflows(); + System.err.println("done."); System.err.printf("\tConverting workflows...\n"); createWorkflowAndSetAssociations(trunkWorkflows); diff --git a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowTemplateConversion.java b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowTemplateConversion.java index 8feb2c6bd..f8373a078 100644 --- a/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowTemplateConversion.java +++ b/ccm-core/src/com/arsdigita/portation/conversion/core/workflow/WorkflowTemplateConversion.java @@ -40,9 +40,11 @@ public class WorkflowTemplateConversion { * creating the equivalent ng-{@link WorkflowTemplate}s. */ public static void convertAll() { + System.err.printf("\tFetching workflow templates from database..."); List trunkWorkflowTemplates = com.arsdigita.workflow.simple .WorkflowTemplate.getAllObjectWorkflowTemplates(); + System.err.println("done."); System.err.printf("\tConverting workflow templates...\n"); trunkWorkflowTemplates.forEach(WorkflowTemplate::new);