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-94f89814c4dfccm-docs
parent
059bffac49
commit
3383dfd28a
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue