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
jensp 2017-03-03 18:22:45 +00:00
parent 1f8e40d392
commit a4d96a60b8
1 changed files with 26 additions and 9 deletions

View File

@ -32,6 +32,7 @@ import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.batch.api.chunk.ItemReader;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
@ -59,6 +60,9 @@ public class FolderManager {
@Inject @Inject
private CategoryManager categoryManager; private CategoryManager categoryManager;
@Inject
private ContentItemRepository itemRepo;
@Inject @Inject
private ContentItemManager itemManager; private ContentItemManager itemManager;
@ -373,18 +377,31 @@ public class FolderManager {
Objects.requireNonNull(folder, "Can't move null to a folder."); Objects.requireNonNull(folder, "Can't move null to a folder.");
Objects.requireNonNull(target, "Can't move a folder to null."); Objects.requireNonNull(target, "Can't move a folder to null.");
final Folder copy = createFolder(folder.getName(), target); final Folder copiedFolder = folderRepo.findById(
final List<ContentItem> items = folder.getObjects() folder.getObjectId())
.stream() .orElseThrow(() -> new IllegalArgumentException(String.format(
.map(categorization -> categorization.getCategorizedObject()) "No folder with ID %d in the database. Where did that ID come from?",
.filter(object -> object instanceof ContentItem) folder.getObjectId())));
.map(object -> (ContentItem) object) final Folder targetFolder = folderRepo.findById(
.collect(Collectors.toList()); 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<ContentItem> items = itemRepo.findByFolder(copiedFolder);
// final List<ContentItem> 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) { 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); copyFolder(subFolder, copy);
} }
} }