From 3383dfd28a0e39f666bd0712369657dbf2c6233e Mon Sep 17 00:00:00 2001 From: jensp Date: Fri, 3 Mar 2017 18:22:45 +0000 Subject: [PATCH] CCM NG/ccm-cms: Copying folders (including subfolders and items) git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4621 8810af33-2d31-482b-a856-94f89814c4df --- .../contentsection/FolderManager.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/FolderManager.java b/ccm-cms/src/main/java/org/librecms/contentsection/FolderManager.java index 395a21e7d..ab3c368a4 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/FolderManager.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/FolderManager.java @@ -32,6 +32,7 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import javax.batch.api.chunk.ItemReader; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.persistence.EntityManager; @@ -59,6 +60,9 @@ public class FolderManager { @Inject private CategoryManager categoryManager; + @Inject + private ContentItemRepository itemRepo; + @Inject private ContentItemManager itemManager; @@ -373,18 +377,31 @@ public class FolderManager { Objects.requireNonNull(folder, "Can't move null to a folder."); Objects.requireNonNull(target, "Can't move a folder to null."); - final Folder copy = createFolder(folder.getName(), target); - final List items = folder.getObjects() - .stream() - .map(categorization -> categorization.getCategorizedObject()) - .filter(object -> object instanceof ContentItem) - .map(object -> (ContentItem) object) - .collect(Collectors.toList()); + final Folder copiedFolder = folderRepo.findById( + folder.getObjectId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No folder with ID %d in the database. Where did that ID come from?", + folder.getObjectId()))); + final Folder targetFolder = folderRepo.findById( + target.getObjectId()) + .orElseThrow(() -> new IllegalArgumentException(String.format( + "No folder with ID %d in the database. Where did that ID come from?", + target.getObjectId()))); + + final Folder copy = createFolder(copiedFolder.getName(), targetFolder); + + final List items = itemRepo.findByFolder(copiedFolder); +// final List items = copiedFolder.getObjects() +// .stream() +// .map(categorization -> categorization.getCategorizedObject()) +// .filter(object -> object instanceof ContentItem) +// .map(object -> (ContentItem) object) +// .collect(Collectors.toList()); for (final ContentItem item : items) { - itemManager.copy(item, target); + itemManager.copy(item, targetFolder); } - for (final Folder subFolder : folder.getSubFolders()) { + for (final Folder subFolder : copiedFolder.getSubFolders()) { copyFolder(subFolder, copy); } }