adds converter methods for converting workflow, category and task objects from trunk-POJOs into NG-POJOs; adds retrieveAll method for workflow objects

git-svn-id: https://svn.libreccm.org/ccm/trunk@4178 8810af33-2d31-482b-a856-94f89814c4df
master
tosmers 2016-06-29 17:31:17 +00:00
parent 676b3be133
commit aa0a3f8838
10 changed files with 213 additions and 316 deletions

View File

@ -1,74 +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.cmd;
import com.arsdigita.portation.Format;
import com.arsdigita.portation.modules.core.security.Group;
import com.arsdigita.portation.modules.core.security.GroupMarshaller;
import com.arsdigita.portation.modules.core.security.Party;
import com.arsdigita.portation.modules.core.security.PartyMarshaller;
import com.arsdigita.portation.modules.core.security.User;
import com.arsdigita.portation.modules.core.security.UserMarshaller;
import com.arsdigita.portation.modules.utils.CollectionConverter;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created the 25.05.16
*/
class CoreExport {
private final static Logger logger = Logger.getLogger(CoreExport.class);
private static List<Party> parties = new ArrayList<>();
private static List<User> users = new ArrayList<>();
private static List<Group> groups = new ArrayList<>();
static void retrieveParties() {
System.out.println("\n...0...\n");
parties = CollectionConverter.convertParties(com.arsdigita.kernel.Party.retrieveAllParties());
}
static void exportParties() {
PartyMarshaller partyMarshaller = new PartyMarshaller();
partyMarshaller.prepare(Format.XML, "PortationTestFiles", "partyExport_test01", true);
partyMarshaller.exportList(parties);
}
static void retrieveUsers() {
System.out.println("\n...1...\n");
users = CollectionConverter.convertUsers(com.arsdigita.kernel.User.retrieveAll());
}
static void exportUsers() {
UserMarshaller userMarshaller = new UserMarshaller();
userMarshaller.prepare(Format.XML, "PortationTestFiles", "userExport_test01", true);
userMarshaller.exportList(users);
}
static void retrieveGroups() {
System.out.println("\n...2...\n");
groups = CollectionConverter.convertGroups(com.arsdigita.kernel.Group.retrieveAll());
}
static void exportGroups() {
GroupMarshaller groupMarshaller = new GroupMarshaller();
groupMarshaller.prepare(Format.XML, "PortationTestFiles", "groupExport_test01", true);
groupMarshaller.exportList(groups);
}
}

View File

@ -50,6 +50,7 @@ public class ExportCliTool extends Program {
printUsage();
System.exit(-1);
}
final String command = args[0];
System.out.printf("\nCommand is %s\n", command);
@ -57,9 +58,11 @@ public class ExportCliTool extends Program {
case "help":
printUsage();
break;
case "export":
export(args);
break;
default:
printUsage();
break;
@ -71,31 +74,12 @@ public class ExportCliTool extends Program {
printUsage();
System.exit(-1);
}
final String category = args[1];
System.out.printf("\nCategory is %s\n", category);
try {
switch (category) {
case "parties":
System.out.printf("\nStarting export of all parties...\n\n");
CoreExport.retrieveParties();
CoreExport.exportParties();
System.out.printf("\n...done!\n\n");
break;
case "users":
System.out.printf("\nStarting export of all users...\n\n");
CoreExport.retrieveUsers();
CoreExport.exportUsers();
System.out.printf("\n...done!\n\n");
break;
case "groups":
System.out.printf("\nStarting export of all groups...\n\n");
CoreExport.retrieveGroups();
CoreExport.exportGroups();
System.out.printf("\n...done!\n\n");
break;
default:
printUsage();

View File

@ -18,9 +18,9 @@
*/
package com.arsdigita.portation.modules.core.categorization;
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.portation.AbstractMarshaller;
import com.arsdigita.portation.Identifiable;
import com.arsdigita.portation.conversion.NgCollection;
import com.arsdigita.portation.modules.core.core.CcmObject;
/**
@ -41,7 +41,17 @@ public class Categorization implements Identifiable {
private long objectOrder;
public Categorization(final ACSObject acsObject) {
public Categorization(Category category, CcmObject categorizedObject) {
this.categorizationId = NgCollection.categorizations.size() + 1;
this.category = category;
this.categorizedObject = categorizedObject;
this.index = false;
this.categoryOrder = categorizedObject.getCategories().size() + 1;
this.objectOrder = category.getObjects().size() + 1;
NgCollection.categorizations.put(this.categorizationId, this);
}

View File

@ -18,12 +18,16 @@
*/
package com.arsdigita.portation.modules.core.categorization;
import com.arsdigita.categorization.CategoryLocalization;
import com.arsdigita.portation.AbstractMarshaller;
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.l10n.LocalizedString;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* The category entity represents a single category. Each category is part of a
@ -50,14 +54,37 @@ public class Category extends CcmObject {
private boolean abstractCategory;
private List<Categorization> objects;
private List<Category> subCategories;
private Category parentCategory;
private long categoryOrder;
public Category(final com.arsdigita.categorization.Category trunkCategory) {
super(trunkCategory);
this.uniqueId = trunkCategory.getID().toString();
this.name = trunkCategory.getName();
CategoryLocalization categoryLocalization = trunkCategory
.getCategoryLocalizationCollection().getCategoryLocalization();
Locale locale = new Locale(categoryLocalization.getLocale());
this.title.addValue(locale, categoryLocalization.getName());
this.description.addValue(locale, categoryLocalization.getDescription());
this.enabled = trunkCategory.isEnabled();
this.visible = trunkCategory.isVisible();
this.abstractCategory = trunkCategory.isAbstract();
this.objects = new ArrayList<>();
this.subCategories = new ArrayList<>();
//this.parentCategory
this.categoryOrder = trunkCategory.getDefaultParentCategory()
.getNumberOfChildCategories() + 1;
NgCollection.categories.put(this.getObjectId(), this);
}
@ -70,7 +97,7 @@ public class Category extends CcmObject {
return uniqueId;
}
public void setUniqueId(String uniqueId) {
public void setUniqueId(final String uniqueId) {
this.uniqueId = uniqueId;
}
@ -78,7 +105,7 @@ public class Category extends CcmObject {
return name;
}
public void setName(String name) {
public void setName(final String name) {
this.name = name;
}
@ -86,7 +113,7 @@ public class Category extends CcmObject {
return this.title;
}
public void setTitle(LocalizedString title) {
public void setTitle(final LocalizedString title) {
this.title = title;
}
@ -94,7 +121,7 @@ public class Category extends CcmObject {
return this.description;
}
public void setDescription(LocalizedString description) {
public void setDescription(final LocalizedString description) {
this.description = description;
}
@ -102,7 +129,7 @@ public class Category extends CcmObject {
return enabled;
}
public void setEnabled(boolean enabled) {
public void setEnabled(final boolean enabled) {
this.enabled = enabled;
}
@ -110,7 +137,7 @@ public class Category extends CcmObject {
return visible;
}
public void setVisible(boolean visible) {
public void setVisible(final boolean visible) {
this.visible = visible;
}
@ -118,7 +145,7 @@ public class Category extends CcmObject {
return abstractCategory;
}
public void setAbstractCategory(boolean abstractCategory) {
public void setAbstractCategory(final boolean abstractCategory) {
this.abstractCategory = abstractCategory;
}
@ -126,23 +153,39 @@ public class Category extends CcmObject {
return objects;
}
public void setObjects(List<Categorization> objects) {
public void setObjects(final List<Categorization> objects) {
this.objects = objects;
}
public void addObject(final Categorization object) {
this.objects.add(object);
}
public void removeObject(final Categorization object) {
this.objects.remove(object);
}
public List<Category> getSubCategories() {
return subCategories;
}
public void setSubCategories(List<Category> subCategories) {
public void setSubCategories(final List<Category> subCategories) {
this.subCategories = subCategories;
}
public void addSubCategory(final Category subCategory) {
this.subCategories.add(subCategory);
}
public void removeSubCategory(final Category subCategory) {
this.subCategories.remove(subCategory);
}
public Category getParentCategory() {
return parentCategory;
}
public void setParentCategory(Category parentCategory) {
public void setParentCategory(final Category parentCategory) {
this.parentCategory = parentCategory;
}
@ -150,7 +193,7 @@ public class Category extends CcmObject {
return categoryOrder;
}
public void setCategoryOrder(long categoryOrder) {
public void setCategoryOrder(final long categoryOrder) {
this.categoryOrder = categoryOrder;
}
}

View File

@ -1,81 +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.modules.core.categorization.utils;
import com.arsdigita.categorization.CategorizedCollection;
import com.arsdigita.categorization.CategoryCollection;
import com.arsdigita.portation.modules.core.categorization.Categorization;
import com.arsdigita.portation.modules.core.categorization.Category;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers</a>
* @version created the 6/22/16
*/
public class CollectionConverter {
public static final Logger logger = Logger.getLogger(CollectionConverter.class);
/**
* Converts CategorizationCollection of Trunk into a list of
* Categorizations of CCM_NG.
*
* @param categorizedCollection
* @param category
* @return
*/
public static List<Categorization> convertCategorizations
(CategorizedCollection categorizedCollection, Category category) {
List<Categorization> categorizations = new ArrayList<>();
if (categorizedCollection != null) {
while (categorizedCollection.next()) {
//categorizations.add();
}
categorizedCollection.close();
} else {
logger.error("Failed to convertCategories, cause " +
"categoryCollection is null.");
}
return categorizations;
}
/**
* Converts CategoryCollection of Trunk into list of Categories of CCM_NG.
*
* @param categoryCollection
* @return
*/
public static List<Category> convertCategories(CategoryCollection
categoryCollection) {
List<Category> categories = new ArrayList<>();
if (categoryCollection != null) {
while (categoryCollection.next()) {
//.add(new Category());
}
categoryCollection.close();
} else {
logger.error("Failed to convertCategories, cause " +
"categoryCollection is null.");
}
return categories;
}
}

View File

@ -25,7 +25,9 @@ import com.arsdigita.portation.modules.core.categorization.Categorization;
import com.arsdigita.portation.modules.core.categorization.Category;
import com.arsdigita.portation.modules.core.security.Permission;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* Root class of all entities in LibreCCM which need categorisation and
@ -54,7 +56,13 @@ public class CcmObject implements Identifiable {
public CcmObject(final ACSObject trunkObject) {
this.objectId = trunkObject.getID().longValue();
this.uuid = UUID.randomUUID().toString();
this.displayName = trunkObject.getDisplayName();
this.permissions = new ArrayList<>();
this.categories = new ArrayList<>();
//NgCollection.ccmObjects.put(this.objectId, this);
}
@Override
@ -66,7 +74,7 @@ public class CcmObject implements Identifiable {
return objectId;
}
public void setObjectId(long objectId) {
public void setObjectId(final long objectId) {
this.objectId = objectId;
}
@ -74,7 +82,7 @@ public class CcmObject implements Identifiable {
return uuid;
}
public void setUuid(String uuid) {
public void setUuid(final String uuid) {
this.uuid = uuid;
}
@ -82,7 +90,7 @@ public class CcmObject implements Identifiable {
return displayName;
}
public void setDisplayName(String displayName) {
public void setDisplayName(final String displayName) {
this.displayName = displayName;
}
@ -90,15 +98,31 @@ public class CcmObject implements Identifiable {
return permissions;
}
public void setPermissions(List<Permission> permissions) {
public void setPermissions(final List<Permission> permissions) {
this.permissions = permissions;
}
public void addPermission(final Permission permission) {
permissions.add(permission);
}
public void removePermission(final Permission permission) {
permissions.remove(permission);
}
public List<Categorization> getCategories() {
return categories;
}
public void setCategories(List<Categorization> categories) {
public void setCategories(final List<Categorization> categories) {
this.categories = categories;
}
public void addCategory(final Categorization category) {
categories.add(category);
}
public void removeCategory(final Categorization category) {
categories.remove(category);
}
}

View File

@ -20,9 +20,13 @@ 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.l10n.LocalizedString;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
@ -33,15 +37,35 @@ public class Task implements Identifiable {
private long taskId;
private LocalizedString label;
private LocalizedString description;
private boolean active;
private String taskState;
private Workflow workflow;
private List<Task> dependentTasks;
private List<Task> dependsOn;
private List<String> comments;
public Task(final com.arsdigita.workflow.simple.Task trunkTask) {
this.taskId = trunkTask.getID().longValue();
label.addValue(Locale.ENGLISH, trunkTask.getLabel());
description.addValue(Locale.ENGLISH, trunkTask.getDescription());
this.active = trunkTask.isActive();
this.taskState = trunkTask.getStateString();
//this.workflow
this.dependentTasks = new ArrayList<>();
this.dependsOn = new ArrayList<>();
this.comments = new ArrayList<>();
Iterator commentsIt = trunkTask.getComments();
while (commentsIt.hasNext()) {
addComment(commentsIt.next().toString());
}
NgCollection.tasks.put(this.getTaskId(), this);
}
@Override
@ -53,7 +77,7 @@ public class Task implements Identifiable {
return taskId;
}
public void setTaskId(long taskId) {
public void setTaskId(final long taskId) {
this.taskId = taskId;
}
@ -61,7 +85,7 @@ public class Task implements Identifiable {
return label;
}
public void setLabel(LocalizedString label) {
public void setLabel(final LocalizedString label) {
this.label = label;
}
@ -69,7 +93,7 @@ public class Task implements Identifiable {
return description;
}
public void setDescription(LocalizedString description) {
public void setDescription(final LocalizedString description) {
this.description = description;
}
@ -77,7 +101,7 @@ public class Task implements Identifiable {
return active;
}
public void setActive(boolean active) {
public void setActive(final boolean active) {
this.active = active;
}
@ -85,7 +109,7 @@ public class Task implements Identifiable {
return taskState;
}
public void setTaskState(String taskState) {
public void setTaskState(final String taskState) {
this.taskState = taskState;
}
@ -93,7 +117,7 @@ public class Task implements Identifiable {
return workflow;
}
public void setWorkflow(Workflow workflow) {
public void setWorkflow(final Workflow workflow) {
this.workflow = workflow;
}
@ -101,23 +125,48 @@ public class Task implements Identifiable {
return dependentTasks;
}
public void setDependentTasks(List<Task> dependentTasks) {
public void setDependentTasks(final List<Task> dependentTasks) {
this.dependentTasks = dependentTasks;
}
public void addDependentTask(final Task task) {
dependentTasks.add(task);
}
public void removeDependentTask(final Task task) {
dependentTasks.remove(task);
}
public List<Task> getDependsOn() {
return dependsOn;
}
public void setDependsOn(List<Task> dependsOn) {
public void setDependsOn(final List<Task> dependsOn) {
this.dependsOn = dependsOn;
}
public void addDependsOn(final Task task) {
dependsOn.add(task);
}
public void removeDependsOn(final Task task) {
dependsOn.remove(task);
}
public List<String> getComments() {
return comments;
}
public void setComments(List<String> comments) {
public void setComments(final List<String> comments) {
this.comments = comments;
}
public void addComment(final String comment) {
comments.add(comment);
}
public void removeComment(final String comment) {
comments.remove(comment);
}
}

View File

@ -20,9 +20,12 @@ 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.l10n.LocalizedString;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
@ -35,9 +38,13 @@ public class Workflow implements Identifiable {
private LocalizedString description;
private List<Task> tasks;
public Workflow(final com.arsdigita.workflow.simple.Workflow
trunkWorkFlow) {
public Workflow(final com.arsdigita.workflow.simple.Workflow trunkWorkFlow) {
this.workflowId = trunkWorkFlow.getID().longValue();
this.name.addValue(Locale.ENGLISH, trunkWorkFlow.getDisplayName());
this.description.addValue(Locale.ENGLISH, trunkWorkFlow.getDescription());
this.tasks = new ArrayList<>();
NgCollection.workflows.put(this.workflowId, this);
}
@Override
@ -49,7 +56,7 @@ public class Workflow implements Identifiable {
return workflowId;
}
public void setWorkflowId(long workflowId) {
public void setWorkflowId(final long workflowId) {
this.workflowId = workflowId;
}
@ -57,7 +64,7 @@ public class Workflow implements Identifiable {
return name;
}
public void setName(LocalizedString name) {
public void setName(final LocalizedString name) {
this.name = name;
}
@ -65,7 +72,7 @@ public class Workflow implements Identifiable {
return description;
}
public void setDescription(LocalizedString description) {
public void setDescription(final LocalizedString description) {
this.description = description;
}
@ -73,7 +80,15 @@ public class Workflow implements Identifiable {
return tasks;
}
public void setTasks(List<Task> tasks) {
public void setTasks(final List<Task> tasks) {
this.tasks = tasks;
}
public void addTask(final Task task) {
tasks.add(task);
}
public void removeTask(final Task task) {
tasks.remove(task);
}
}

View File

@ -1,95 +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.modules.utils;
import com.arsdigita.kernel.EmailAddress;
import com.arsdigita.kernel.GroupCollection;
import com.arsdigita.kernel.PartyCollection;
import com.arsdigita.kernel.UserCollection;
import com.arsdigita.portation.modules.core.security.Group;
import com.arsdigita.portation.modules.core.security.Party;
import com.arsdigita.portation.modules.core.security.User;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author <a href="mailto:tosmers@uni-bremen.de>Tobias Osmers<\a>
* @version created the 01.06.16
*/
public class CollectionConverter {
private static final Logger logger = Logger.getLogger(CollectionConverter.class);
public static List<Party> convertParties(PartyCollection partyCollection) {
List<Party> parties = new ArrayList<>();
if (partyCollection != null) {
while (partyCollection.next()) {
parties.add(new Party());
}
partyCollection.close();
} else {
logger.error("A Failed to exportUsers, cause party collection is null.");
}
return parties;
}
public static List<User> convertUsers(UserCollection userCollection) {
List<User> users = new ArrayList<>();
if (userCollection != null) {
while (userCollection.next()) {
users.add(new User());
}
userCollection.close();
} else {
logger.error("A Failed to exportUsers, cause user collection is null.");
}
return users;
}
public static List<Group> convertGroups(GroupCollection groupCollection) {
List<Group> groups = new ArrayList<>();
if (groupCollection != null) {
while (groupCollection.next()) {
groups.add(new Group());
}
groupCollection.close();
} else {
logger.error("A Failed to exportUsers, cause group collection is null.");
}
return groups;
}
public static List<String> convertMailAddresses(Iterator it) {
List<String> mailAddresses = new ArrayList<>();
if (it != null) {
while (it.hasNext()) {
mailAddresses.add(((EmailAddress) it.next()).getEmailAddress());
}
} else {
logger.error("A Failed to exportUsers, cause mail collection is null.");
}
return mailAddresses;
}
}

View File

@ -34,14 +34,17 @@ import com.arsdigita.persistence.Session;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.persistence.metadata.ObjectType;
import com.arsdigita.util.UncheckedWrapperException;
import org.apache.log4j.Logger;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
/**
* Represents a process instance that is assigned to a particular process that
@ -856,4 +859,23 @@ public class Workflow extends Task {
public static Workflow getObjectWorkflow(ACSObject o) {
return getObjectWorkflow(o.getID());
}
public static List<Workflow> getObjectWorkflows() {
List<Workflow> workflowList = new ArrayList<>();
final Session session = SessionManager.getSession();
final DataQuery query = session.retrieveQuery("com.arsdigita.workflow.simple.getProcesses");
BigDecimal workflowID = null;
while (query.next()) {
workflowID = (BigDecimal) query.get("processID");
if (workflowID != null) {
workflowList.add(new Workflow(workflowID));
}
}
query.close();
return workflowList;
}
}