diff --git a/ccm-core/src/com/arsdigita/domain/DomainObject.java b/ccm-core/src/com/arsdigita/domain/DomainObject.java index e39f3ca80..24d4b99ad 100755 --- a/ccm-core/src/com/arsdigita/domain/DomainObject.java +++ b/ccm-core/src/com/arsdigita/domain/DomainObject.java @@ -438,7 +438,7 @@ public abstract class DomainObject { * * @see com.arsdigita.persistence.DataObject#get(String) **/ - protected Object get(String attr) { + public Object get(String attr) { return m_dataObject.get(attr); } 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 e8fec9fa3..a94a3f034 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 @@ -66,7 +66,7 @@ public class CategoryConversion { */ private static void createCategoryAndCategorizations( List trunkCategories) { - long pCategories = 0, pCategorizations = 0; + long processedCategories = 0, processedCategorizations = 0; for (com.arsdigita.categorization.Category @@ -75,17 +75,17 @@ public class CategoryConversion { // create categories Category category = new Category(trunkCategory); - // categorizations only for category typed objects + // create categorizations only for category typed objects CategorizedCollection categorizedCollection = trunkCategory - .getObjects(com.arsdigita.categorization.Category - .BASE_DATA_OBJECT_TYPE); - pCategorizations += createCategorizations(category, + .getObjects(com.arsdigita.categorization + .Category.BASE_DATA_OBJECT_TYPE); + processedCategorizations += createCategorizations(category, categorizedCollection); - pCategories++; + processedCategories++; } System.err.printf("\t\tCreated %d categories and %d categorizations." + - "\n", pCategories, pCategorizations); + "\n", processedCategories, processedCategorizations); } /** @@ -96,6 +96,8 @@ public class CategoryConversion { * @param category The {@link Category} * @param categorizedObjects A collection of the {@code Categorization}s * as they are represented in this trunk-system + * + * @return Number of how many {@link Categorization}s have been processed. */ private static long createCategorizations(Category category, CategorizedCollection @@ -103,8 +105,12 @@ public class CategoryConversion { long processed = 0; while (categorizedObjects.next()) { - CcmObject categorizedObject = NgCoreCollection.ccmObjects.get(((ACSObject) - categorizedObjects.getDomainObject()).getID().longValue()); + CcmObject categorizedObject = NgCoreCollection + .ccmObjects + .get(((ACSObject) categorizedObjects + .getDomainObject()) + .getID() + .longValue()); if (category != null && categorizedObject != null) { // create categorizations @@ -114,11 +120,10 @@ public class CategoryConversion { // set opposed associations category.addObject(categorization); categorizedObject.addCategory(categorization); + + processed++; } - - processed++; } - return processed; } 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 ed4c128cb..bf8915b8f 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 @@ -104,9 +104,10 @@ public class GroupConversion { // set opposed associations group.addMembership(groupMembership); member.addGroupMembership(groupMembership); + + processed++; } - processed++; } return processed; 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 5f19280bf..bca8a7def 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 @@ -104,8 +104,9 @@ public class RoleConversion { // set opposed associations role.addMembership(roleMembership); member.addRoleMembership(roleMembership); + + processed++; } - processed++; } return processed; 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 f4927a84b..8d582fb96 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 @@ -170,9 +170,10 @@ public class AssignableTaskConversion { // set opposed associations assignableTask.addAssignment(taskAssignment); role.addAssignedTask(taskAssignment); + + processed++; } } - processed++; } return processed; diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/LdnTermsConverter.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/LdnTermsConverter.java index 122e365ef..b4f410c24 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/LdnTermsConverter.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/LdnTermsConverter.java @@ -47,9 +47,9 @@ public class LdnTermsConverter extends AbstractConverter { */ @Override public void startConversionToNg() { - DomainConversion.convertAll(); ResourceTypeConversion.convertAll(); CcmApplicationConversion.convertAll(); + DomainConversion.convertAll(); } /** diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/NgCoreCollection.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/NgCoreCollection.java index 128367ff3..9f41ea260 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/NgCoreCollection.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/NgCoreCollection.java @@ -19,6 +19,7 @@ package com.arsdigita.london.terms.portation.conversion; import com.arsdigita.london.terms.portation.modules.core.categorization.Domain; +import com.arsdigita.london.terms.portation.modules.core.categorization.DomainOwnership; import com.arsdigita.london.terms.portation.modules.core.core.Resource; import com.arsdigita.london.terms.portation.modules.core.core.ResourceType; import com.arsdigita.london.terms.portation.modules.core.web.CcmApplication; @@ -31,12 +32,13 @@ import java.util.Map; * @version created the 7/28/17 */ public class NgCoreCollection { - public static Map domains = new HashMap<>(); - public static Map resourceTypes = new HashMap<>(); public static Map resources = new HashMap<>(); public static Map ccmApplications = new HashMap<>(); + public static Map domains = new HashMap<>(); + public static Map domainOwnerships = new HashMap<>(); + /** * Private constructor to prevent the instantiation of this class. */ diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/categorization/DomainConversion.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/categorization/DomainConversion.java index 17da6cbd8..a07308621 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/categorization/DomainConversion.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/categorization/DomainConversion.java @@ -18,9 +18,16 @@ */ package com.arsdigita.london.terms.portation.conversion.core.categorization; +import com.arsdigita.domain.DomainCollection; +import com.arsdigita.domain.DomainObject; +import com.arsdigita.domain.DomainObjectFactory; +import com.arsdigita.london.terms.portation.conversion.NgCoreCollection; import com.arsdigita.london.terms.portation.modules.core.categorization.Domain; -import com.arsdigita.portation.conversion.NgCoreCollection; +import com.arsdigita.london.terms.portation.modules.core.categorization.DomainOwnership; +import com.arsdigita.london.terms.portation.modules.core.web.CcmApplication; +import com.arsdigita.persistence.DataObject; import com.arsdigita.portation.modules.core.categorization.Category; +import com.arsdigita.web.Application; import java.util.List; @@ -46,7 +53,7 @@ public class DomainConversion { .arsdigita.london.terms.Domain.getAllObjectDomains(); System.err.println("done."); - System.err.printf("\tConverting domains...\n"); + System.err.printf("\tConverting domains and domain ownerships...\n"); createDomainsAndSetAssociations(trunkDomains); System.err.printf("\tdone.\n"); } @@ -60,26 +67,78 @@ public class DomainConversion { */ private static void createDomainsAndSetAssociations( List trunkDomains) { - long processed = 0; + long processedDomains = 0, processedDomainOwnerships = 0; for(com.arsdigita.london.terms.Domain trunkDomain : trunkDomains) { // create domains Domain domain = new Domain(trunkDomain); // set root (category) association - com.arsdigita.categorization.Category model = trunkDomain + com.arsdigita.categorization.Category trunkModel = trunkDomain .getModel(); - if (model != null) { - Category root = NgCoreCollection + if (trunkModel != null) { + Category root = com.arsdigita.portation.conversion + .NgCoreCollection .categories - .get(model.getID().longValue()); + .get(trunkModel.getID().longValue()); domain.setRoot(root); } - processed++; - } + // create domain ownerships + DomainCollection useContexts = trunkDomain.getUseContexts(); + processedDomainOwnerships += createDomainOwnerships(domain, + useContexts); - System.err.printf("\t\tCreated %d domains.\n", processed); + processedDomains++; + } + System.err.printf("\t\tCreated %d domains and %d domain ownerships.\n", + processedDomains, processedDomainOwnerships); + } + + /** + * Method for creating {@link DomainOwnership}s between {@link Domain}s + * and {@link CcmApplication}s which is an association-class and has not + * been existent in this old system. + * + * @param domain The {@link Domain} + * @param useContexts A collection containing the {@code owner}s of the + * {@link Domain} and its {@code context} + * + * @return Number of how many {@link DomainOwnership}s have been processed. + */ + private static long createDomainOwnerships(Domain domain, + DomainCollection useContexts) { + long processed = 0; + + while (useContexts.next()) { + final DomainObject obj = DomainObjectFactory + .newInstance((DataObject) useContexts + .getDomainObject() + .get("categoryOwner")); + if (obj instanceof Application) { + CcmApplication owner = NgCoreCollection + .ccmApplications + .get(((Application) obj) + .getID() + .longValue()); + String context = (String) useContexts + .getDomainObject() + .get("useContext"); + + if (domain != null && owner != null) { + // create domain ownerships + DomainOwnership domainOwnership = new DomainOwnership(domain, + owner, context); + + // set opposed associations + domain.addOwner(domainOwnership); + owner.addDomain(domainOwnership); + + processed++; + } + } + } + return processed; } diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/core/ResourceTypeConversion.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/core/ResourceTypeConversion.java index efcf28566..60f58613f 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/core/ResourceTypeConversion.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/conversion/core/core/ResourceTypeConversion.java @@ -23,6 +23,10 @@ import com.arsdigita.london.terms.portation.modules.core.core.ResourceType; import java.util.List; /** + * Class for converting all trunk-{@link com.arsdigita.kernel.ResourceType}s + * into ng-{@link ResourceType}s as preparation for a successful export of + * all trunk classes into the new ng-system. + * * @author Tobias Osmers<\a> * @version created the 8/2/17 */ diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/LdnTermsExporter.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/LdnTermsExporter.java index b7f89cde0..1b760e9e9 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/LdnTermsExporter.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/LdnTermsExporter.java @@ -19,6 +19,7 @@ package com.arsdigita.london.terms.portation.modules; import com.arsdigita.london.terms.portation.conversion.NgCoreCollection; +import com.arsdigita.london.terms.portation.modules.core.categorization.DomainOwnershipMarshaller; import com.arsdigita.london.terms.portation.modules.core.core.ResourceTypeMarshaller; import com.arsdigita.london.terms.portation.modules.core.categorization.DomainMarshaller; import com.arsdigita.london.terms.portation.modules.core.web.CcmApplicationMarshaller; @@ -43,6 +44,7 @@ public class LdnTermsExporter extends AbstractExporter { exportDomains(); exportResourceTypes(); exportCcmApplications(); + exportDomainOwnerships(); } private static void exportDomains() { @@ -76,4 +78,15 @@ public class LdnTermsExporter extends AbstractExporter { new ArrayList<>(NgCoreCollection.ccmApplications.values())); System.out.printf("\tdone.\n"); } + + private static void exportDomainOwnerships() { + System.out.printf("\tExporting domain ownerships..."); + DomainOwnershipMarshaller domainOwnershipMarshaller = new + DomainOwnershipMarshaller(); + domainOwnershipMarshaller.prepare( + Format.XML, pathName, "domainOwnerships", indentation); + domainOwnershipMarshaller.exportList( + new ArrayList<>(NgCoreCollection.domainOwnerships.values())); + System.out.printf("\tdone.\n"); + } } diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/Domain.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/Domain.java index 2a3811c64..0ce4c1e7d 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/Domain.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/Domain.java @@ -150,4 +150,12 @@ public class Domain extends CcmObject implements Portable { public void setOwners(final List owners) { this.owners = owners; } + + public void addOwner(final DomainOwnership owner) { + this.owners.add(owner); + } + + public void removeOwner(final DomainOwnership owner) { + this.owners.remove(owner); + } } diff --git a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/DomainOwnership.java b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/DomainOwnership.java index ea76ed9a7..f1d7b701f 100644 --- a/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/DomainOwnership.java +++ b/ccm-ldn-terms/src/com/arsdigita/london/terms/portation/modules/core/categorization/DomainOwnership.java @@ -18,9 +18,14 @@ */ package com.arsdigita.london.terms.portation.modules.core.categorization; +import com.arsdigita.kernel.ACSObject; +import com.arsdigita.london.terms.portation.conversion.NgCoreCollection; import com.arsdigita.london.terms.portation.modules.core.web.CcmApplication; +import com.arsdigita.portation.Portable; import com.arsdigita.portation.modules.core.core.CcmObject; import com.arsdigita.web.Application; +import com.fasterxml.jackson.annotation.JsonIdentityInfo; +import com.fasterxml.jackson.annotation.JsonIdentityReference; /** * Association class for the association between a {@link Domain} and a @@ -31,22 +36,34 @@ import com.arsdigita.web.Application; * @author