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
ccm-docs
jensp 2017-03-03 18:22:45 +00:00
parent 059bffac49
commit 3383dfd28a
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.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<ContentItem> 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<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) {
itemManager.copy(item, target);
itemManager.copy(item, targetFolder);
}
for (final Folder subFolder : folder.getSubFolders()) {
for (final Folder subFolder : copiedFolder.getSubFolders()) {
copyFolder(subFolder, copy);
}
}