CCM NG/ccm-cms: Moving folders
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4620 8810af33-2d31-482b-a856-94f89814c4df
Former-commit-id: 1f8e40d392
pull/2/head
parent
39d695730c
commit
7742b16afc
|
|
@ -670,13 +670,15 @@ public class FolderBrowserController {
|
||||||
"No folder with ID %d found in database. "
|
"No folder with ID %d found in database. "
|
||||||
+ "Where did that ID come form?",
|
+ "Where did that ID come form?",
|
||||||
objectId)));
|
objectId)));
|
||||||
if (folder.getParentFolder() == null) {
|
final Optional<Folder> parentFolder = folderManager.getParentFolder(
|
||||||
|
folder);
|
||||||
|
if (parentFolder.isPresent()) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
} else {
|
} else {
|
||||||
return Optional.ofNullable(String.format(
|
return Optional.ofNullable(String.format(
|
||||||
"%s%d",
|
"%s%d",
|
||||||
FOLDER_BROWSER_KEY_PREFIX_FOLDER,
|
FOLDER_BROWSER_KEY_PREFIX_FOLDER,
|
||||||
folder.getParentFolder().getObjectId()));
|
parentFolder.get().getObjectId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ import org.libreccm.categorization.Category;
|
||||||
import org.libreccm.categorization.CategoryManager;
|
import org.libreccm.categorization.CategoryManager;
|
||||||
import org.libreccm.cdi.utils.CdiUtil;
|
import org.libreccm.cdi.utils.CdiUtil;
|
||||||
import org.libreccm.core.CcmObject;
|
import org.libreccm.core.CcmObject;
|
||||||
|
import org.libreccm.core.UnexpectedErrorException;
|
||||||
import org.libreccm.security.PermissionChecker;
|
import org.libreccm.security.PermissionChecker;
|
||||||
import org.libreccm.security.Shiro;
|
import org.libreccm.security.Shiro;
|
||||||
import org.librecms.CmsConstants;
|
import org.librecms.CmsConstants;
|
||||||
|
|
@ -549,6 +550,8 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
ContentItemManager.class);
|
ContentItemManager.class);
|
||||||
final FolderBrowserController controller = cdiUtil.findBean(
|
final FolderBrowserController controller = cdiUtil.findBean(
|
||||||
FolderBrowserController.class);
|
FolderBrowserController.class);
|
||||||
|
final FolderManager folderManager = cdiUtil.findBean(
|
||||||
|
FolderManager.class);
|
||||||
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
final PermissionChecker permissionChecker = cdiUtil.findBean(
|
||||||
PermissionChecker.class);
|
PermissionChecker.class);
|
||||||
|
|
||||||
|
|
@ -564,8 +567,44 @@ public class FolderManipulator extends SimpleContainer implements
|
||||||
name = folder.getName();
|
name = folder.getName();
|
||||||
|
|
||||||
//Check if folder or subfolder contains live items
|
//Check if folder or subfolder contains live items
|
||||||
if (isMove(state) && controller.hasLiveItems(folder)) {
|
if (isMove(state)) {
|
||||||
addErrorMessage(data, "cms.ui.folder.item_is_live", name);
|
final FolderManager.FolderIsMovable movable = folderManager
|
||||||
|
.folderIsMovable(folder, target);
|
||||||
|
switch (movable) {
|
||||||
|
case DIFFERENT_SECTIONS:
|
||||||
|
addErrorMessage(data,
|
||||||
|
"cms.ui.folder.different_sections",
|
||||||
|
name);
|
||||||
|
break;
|
||||||
|
case HAS_LIVE_ITEMS:
|
||||||
|
addErrorMessage(data,
|
||||||
|
"cms.ui.folder.item_is_live",
|
||||||
|
name);
|
||||||
|
break;
|
||||||
|
case DIFFERENT_TYPES:
|
||||||
|
addErrorMessage(data,
|
||||||
|
"cms.ui.folder.different_folder_types",
|
||||||
|
name);
|
||||||
|
break;
|
||||||
|
case IS_ROOT_FOLDER:
|
||||||
|
addErrorMessage(data,
|
||||||
|
"cms.ui.folder.is_root_folder",
|
||||||
|
name);
|
||||||
|
break;
|
||||||
|
case SAME_FOLDER:
|
||||||
|
addErrorMessage(data,
|
||||||
|
"cms.ui.folder.same_folder",
|
||||||
|
name);
|
||||||
|
break;
|
||||||
|
case YES:
|
||||||
|
//Nothing
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new UnexpectedErrorException(String.format(
|
||||||
|
"Unknown state '%s' for '%s'.",
|
||||||
|
movable,
|
||||||
|
FolderManager.FolderIsMovable.class.getName()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object = folder;
|
object = folder;
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,14 @@ import static org.librecms.CmsConstants.*;
|
||||||
// + "AND (LOWER(c.categorizedObject.displayName) LIKE :term "
|
// + "AND (LOWER(c.categorizedObject.displayName) LIKE :term "
|
||||||
// + "OR LOWER(c.categorizedObject.name.value) LIKE :term)")
|
// + "OR LOWER(c.categorizedObject.name.value) LIKE :term)")
|
||||||
// ,
|
// ,
|
||||||
|
@NamedQuery(
|
||||||
|
name = "Folder.hasLiveItems",
|
||||||
|
query = "SELECT (CASE WHEN COUNT(i) > 0 THEN true ELSE false END) "
|
||||||
|
+ "FROM ContentItem i JOIN i.categories c "
|
||||||
|
+ "WHERE c.category = :folder "
|
||||||
|
+ "AND i.version = org.librecms.contentsection.ContentItemVersion.LIVE"
|
||||||
|
)
|
||||||
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Folder.findObjects",
|
name = "Folder.findObjects",
|
||||||
query = "SELECT o FROM CcmObject o "
|
query = "SELECT o FROM CcmObject o "
|
||||||
|
|
@ -109,7 +117,7 @@ import static org.librecms.CmsConstants.*;
|
||||||
+ "AND i.version = "
|
+ "AND i.version = "
|
||||||
+ "org.librecms.contentsection.ContentItemVersion.DRAFT "
|
+ "org.librecms.contentsection.ContentItemVersion.DRAFT "
|
||||||
+ "AND (LOWER(i.displayName) LIKE LOWER(:term) "
|
+ "AND (LOWER(i.displayName) LIKE LOWER(:term) "
|
||||||
// + "OR LOWER(i.name.values) LIKE LOWER(:term)"
|
// + "OR LOWER(i.name.values) LIKE LOWER(:term)"
|
||||||
+ ")) "
|
+ ")) "
|
||||||
+ "ORDER BY o.displayName"
|
+ "ORDER BY o.displayName"
|
||||||
// query = "SELECT o FROM CcmObject o "
|
// query = "SELECT o FROM CcmObject o "
|
||||||
|
|
@ -140,7 +148,7 @@ import static org.librecms.CmsConstants.*;
|
||||||
+ "AND i.version = "
|
+ "AND i.version = "
|
||||||
+ "org.librecms.contentsection.ContentItemVersion.DRAFT "
|
+ "org.librecms.contentsection.ContentItemVersion.DRAFT "
|
||||||
+ "AND (LOWER(i.displayName) LIKE LOWER(:term) "
|
+ "AND (LOWER(i.displayName) LIKE LOWER(:term) "
|
||||||
// + "OR LOWER(i.name.values) LIKE LOWER(:term)"
|
// + "OR LOWER(i.name.values) LIKE LOWER(:term)"
|
||||||
+ "))"
|
+ "))"
|
||||||
// query = "SELECT COUNT(o) FROM CcmObject o "
|
// query = "SELECT COUNT(o) FROM CcmObject o "
|
||||||
// + "WHERE o IN (SELECT f FROM Folder f "
|
// + "WHERE o IN (SELECT f FROM Folder f "
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
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.NoResultException;
|
||||||
|
import javax.persistence.TypedQuery;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -44,6 +47,9 @@ import javax.transaction.Transactional;
|
||||||
@RequestScoped
|
@RequestScoped
|
||||||
public class FolderManager {
|
public class FolderManager {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private ConfigurationManager confManager;
|
private ConfigurationManager confManager;
|
||||||
|
|
||||||
|
|
@ -113,19 +119,30 @@ public class FolderManager {
|
||||||
|
|
||||||
@Transactional(Transactional.TxType.REQUIRED)
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
public Optional<Folder> getParentFolder(final Folder folder) {
|
public Optional<Folder> getParentFolder(final Folder folder) {
|
||||||
Objects.requireNonNull(folder);
|
// Objects.requireNonNull(folder);
|
||||||
final Optional<Folder> theFolder = folderRepo.findById(folder.
|
// final Optional<Folder> theFolder = folderRepo.findById(folder.
|
||||||
getObjectId());
|
// getObjectId());
|
||||||
if (!theFolder.isPresent()) {
|
// if (!theFolder.isPresent()) {
|
||||||
throw new UnexpectedErrorException(String.format(
|
// throw new UnexpectedErrorException(String.format(
|
||||||
"The folder %s should be in the database but is not.",
|
// "The folder %s should be in the database but is not.",
|
||||||
Objects.toString(folder)));
|
// Objects.toString(folder)));
|
||||||
}
|
// }
|
||||||
final Category parentCategory = theFolder.get().getParentCategory();
|
// final Category parentCategory = theFolder.get().getParentCategory();
|
||||||
if (parentCategory == null) {
|
// if (parentCategory == null) {
|
||||||
return Optional.empty();
|
// return Optional.empty();
|
||||||
} else {
|
// } else {
|
||||||
|
// return folderRepo.findById(parentCategory.getObjectId());
|
||||||
|
// }
|
||||||
|
|
||||||
|
final TypedQuery<Category> query = entityManager.createNamedQuery(
|
||||||
|
"Category.findParentCategory", Category.class);
|
||||||
|
query.setParameter("category", folder);
|
||||||
|
|
||||||
|
try {
|
||||||
|
final Category parentCategory = query.getSingleResult();
|
||||||
return folderRepo.findById(parentCategory.getObjectId());
|
return folderRepo.findById(parentCategory.getObjectId());
|
||||||
|
} catch (NoResultException ex) {
|
||||||
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,148 +255,112 @@ public class FolderManager {
|
||||||
Objects.requireNonNull(folder, "Can't move folder null");
|
Objects.requireNonNull(folder, "Can't move folder null");
|
||||||
Objects.requireNonNull(target, "Can't move a folder to folder null");
|
Objects.requireNonNull(target, "Can't move a folder to folder null");
|
||||||
|
|
||||||
final FolderIsMovable status = folderIsMovable(folder, target);
|
final Folder movingFolder = 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 FolderIsMovable status = folderIsMovable(movingFolder,
|
||||||
|
targetFolder);
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case YES: {
|
case YES: {
|
||||||
final Folder source = getParentFolder(folder).get();
|
final Folder source = getParentFolder(movingFolder).get();
|
||||||
categoryManager.removeSubCategoryFromCategory(folder, source);
|
categoryManager.removeSubCategoryFromCategory(movingFolder,
|
||||||
final boolean sameName = target.getSubCategories()
|
source);
|
||||||
|
final boolean sameName = targetFolder.getSubCategories()
|
||||||
.stream()
|
.stream()
|
||||||
.anyMatch(subCategory -> folder.getName().equals(
|
.anyMatch(subCategory -> movingFolder.getName().equals(
|
||||||
subCategory.getName()));
|
subCategory.getName()));
|
||||||
if (sameName) {
|
if (sameName) {
|
||||||
final String name = String.format("%s_1", folder.getName());
|
final String name = String.format("%s_1", movingFolder
|
||||||
folder.setName(name);
|
.getName());
|
||||||
folder.setDisplayName(name);
|
movingFolder.setName(name);
|
||||||
|
movingFolder.setDisplayName(name);
|
||||||
|
|
||||||
final KernelConfig kernelConfig = confManager.
|
final KernelConfig kernelConfig = confManager.
|
||||||
findConfiguration(
|
findConfiguration(
|
||||||
KernelConfig.class);
|
KernelConfig.class);
|
||||||
folder.getTitle().addValue(kernelConfig.getDefaultLocale(),
|
movingFolder.getTitle().addValue(
|
||||||
name);
|
kernelConfig.getDefaultLocale(), name);
|
||||||
}
|
}
|
||||||
categoryManager.addSubCategoryToCategory(folder, target);
|
categoryManager.addSubCategoryToCategory(movingFolder,
|
||||||
|
targetFolder);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IS_ROOT_FOLDER:
|
case IS_ROOT_FOLDER:
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"The folder \"%s\" to move is a root folder can can't "
|
"The movingFolder \"%s\" to move is a root movingFolder can can't "
|
||||||
+ "be moved.",
|
+ "be moved.",
|
||||||
getFolderPath(folder)));
|
getFolderPath(movingFolder)));
|
||||||
case SAME_FOLDER:
|
case SAME_FOLDER:
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"The folder to move and the target folder are the same "
|
"The movingFolder to move and the targetFolder movingFolder are the same "
|
||||||
+ "folder.");
|
+ "movingFolder.");
|
||||||
case DIFFERENT_SECTIONS:
|
case DIFFERENT_SECTIONS:
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"Folders can't be moved between content section. The "
|
"Folders can't be moved between content section. The "
|
||||||
+ "folder \"%s\" to move belongs to section "
|
+ "movingFolder \"%s\" to move belongs to section "
|
||||||
+ "\"%s\", the target folder \"%s\" belongs to "
|
+ "\"%s\", the targetFolder movingFolder \"%s\" belongs to "
|
||||||
+ "section \"%s\".",
|
+ "section \"%s\".",
|
||||||
getFolderPath(folder),
|
getFolderPath(movingFolder),
|
||||||
folder.getSection().getDisplayName(),
|
movingFolder.getSection().getDisplayName(),
|
||||||
getFolderPath(target),
|
getFolderPath(targetFolder),
|
||||||
target.getSection().getDisplayName()));
|
targetFolder.getSection().getDisplayName()));
|
||||||
case DIFFERENT_TYPES:
|
case DIFFERENT_TYPES:
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"The folder to move is a \"%s\","
|
"The movingFolder to move is a \"%s\","
|
||||||
+ "but the target folder is a \"%s\" folder.");
|
+ "but the targetFolder movingFolder is a \"%s\" movingFolder.");
|
||||||
case HAS_LIVE_ITEMS:
|
case HAS_LIVE_ITEMS:
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"Can't move folder \"%s\" because some items in the "
|
"Can't move movingFolder \"%s\" because some items in the "
|
||||||
+ "folder or its sub folder are live.",
|
+ "movingFolder or its sub movingFolder are live.",
|
||||||
getFolderPath(folder, true)));
|
getFolderPath(movingFolder, true)));
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException(String.format(
|
throw new IllegalArgumentException(String.format(
|
||||||
"Unexpected return value from #folderIsMovable: %s",
|
"Unexpected return value from #movingFolderIsMovable: %s",
|
||||||
status.toString()));
|
status.toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (folder.getParentFolder()
|
|
||||||
// == null) {
|
|
||||||
// throw new IllegalArgumentException(String.format(
|
|
||||||
// "The folder \"%s\" to move is a root folder can can't be moved.",
|
|
||||||
// getFolderPath(folder)));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (folder.equals(target)) {
|
|
||||||
// throw new IllegalArgumentException(
|
|
||||||
// "The folder to move and the target folder are the same folder.");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!folder.getSection()
|
|
||||||
// .equals(target.getSection())) {
|
|
||||||
// throw new IllegalArgumentException(String.format(
|
|
||||||
// "Folders can't be moved between content section. The "
|
|
||||||
// + "folder \"%s\" to move belongs to section \"%s\", "
|
|
||||||
// + "the target folder \"%s\" belongs to section \"%s\".",
|
|
||||||
// getFolderPath(folder),
|
|
||||||
// folder.getSection().getDisplayName(),
|
|
||||||
// getFolderPath(target),
|
|
||||||
// target.getSection().getDisplayName()));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (folder.getType()
|
|
||||||
// != target.getType()) {
|
|
||||||
// throw new IllegalArgumentException("The folder to move is a \"%s\","
|
|
||||||
// + "but the target folder is a \"%s\" folder.");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (liveItemsInFolder(folder)) {
|
|
||||||
// throw new IllegalArgumentException(String.format(
|
|
||||||
// "Can't move folder \"%s\" because some items in the folder or"
|
|
||||||
// + "its sub folder are live.",
|
|
||||||
// getFolderPath(folder, true)));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// final Folder source = folder.getParentFolder();
|
|
||||||
//
|
|
||||||
// categoryManager.removeSubCategoryFromCategory(folder, source);
|
|
||||||
// final boolean sameName = target.getSubCategories()
|
|
||||||
// .stream()
|
|
||||||
// .anyMatch(subCategory -> folder.getName().equals(subCategory
|
|
||||||
// .getName()));
|
|
||||||
// if (sameName) {
|
|
||||||
// final String name = String.format("%s_1", folder.getName());
|
|
||||||
// folder.setName(name);
|
|
||||||
// folder.setDisplayName(name);
|
|
||||||
//
|
|
||||||
// final KernelConfig kernelConfig = confManager.findConfiguration(
|
|
||||||
// KernelConfig.class);
|
|
||||||
// folder.getTitle().addValue(kernelConfig.getDefaultLocale(), name);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// categoryManager.addSubCategoryToCategory(folder, target);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
public FolderIsMovable folderIsMovable(final Folder folder,
|
public FolderIsMovable folderIsMovable(final Folder folder,
|
||||||
final Folder target) {
|
final Folder target) {
|
||||||
if (folder == null) {
|
|
||||||
throw new IllegalArgumentException("Can't check if null is movable.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target == null) {
|
Objects.requireNonNull(folder,
|
||||||
throw new IllegalArgumentException(
|
"Can't check if null is movable.");
|
||||||
|
Objects.requireNonNull(target,
|
||||||
"Can't check if a server can be moved to null.");
|
"Can't check if a server can be moved to null.");
|
||||||
}
|
|
||||||
|
|
||||||
if (!getParentFolder(folder).isPresent()) {
|
final Folder movingFolder = folderRepo.findById(folder.getObjectId())
|
||||||
|
.orElseThrow(() -> new IllegalArgumentException(String.format(
|
||||||
|
"No folder with ID %d in the datbase. 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 datbase. Where did that ID come from?",
|
||||||
|
target.getObjectId())));
|
||||||
|
|
||||||
|
if (!getParentFolder(movingFolder).isPresent()) {
|
||||||
return FolderIsMovable.IS_ROOT_FOLDER;
|
return FolderIsMovable.IS_ROOT_FOLDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folder.equals(target)) {
|
if (movingFolder.equals(targetFolder)) {
|
||||||
return FolderIsMovable.SAME_FOLDER;
|
return FolderIsMovable.SAME_FOLDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!folder.getSection().equals(target.getSection())) {
|
if (!movingFolder.getSection().equals(targetFolder.getSection())) {
|
||||||
return FolderIsMovable.DIFFERENT_SECTIONS;
|
return FolderIsMovable.DIFFERENT_SECTIONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (folder.getType() != target.getType()) {
|
if (movingFolder.getType() != targetFolder.getType()) {
|
||||||
return FolderIsMovable.DIFFERENT_TYPES;
|
return FolderIsMovable.DIFFERENT_TYPES;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (liveItemsInFolder(folder)) {
|
if (liveItemsInFolder(movingFolder)) {
|
||||||
return FolderIsMovable.HAS_LIVE_ITEMS;
|
return FolderIsMovable.HAS_LIVE_ITEMS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -403,7 +384,7 @@ public class FolderManager {
|
||||||
itemManager.copy(item, target);
|
itemManager.copy(item, target);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(final Folder subFolder : folder.getSubFolders()) {
|
for (final Folder subFolder : folder.getSubFolders()) {
|
||||||
copyFolder(subFolder, copy);
|
copyFolder(subFolder, copy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -418,12 +399,16 @@ public class FolderManager {
|
||||||
* folders, {@code false} if not.
|
* folders, {@code false} if not.
|
||||||
*/
|
*/
|
||||||
private boolean liveItemsInFolder(final Folder folder) {
|
private boolean liveItemsInFolder(final Folder folder) {
|
||||||
final boolean liveItemsInFolder = folder.getObjects()
|
// final boolean liveItemsInFolder = folder.getObjects()
|
||||||
.stream()
|
// .stream()
|
||||||
.map(categorization -> categorization.getCategorizedObject())
|
// .map(categorization -> categorization.getCategorizedObject())
|
||||||
.filter(object -> object instanceof ContentItem)
|
// .filter(object -> object instanceof ContentItem)
|
||||||
.map(object -> (ContentItem) object)
|
// .map(object -> (ContentItem) object)
|
||||||
.anyMatch(item -> itemManager.isLive(item));
|
// .anyMatch(item -> itemManager.isLive(item));
|
||||||
|
final TypedQuery<Boolean> query = entityManager.createNamedQuery(
|
||||||
|
"Folder.hasLiveItems", Boolean.class);
|
||||||
|
query.setParameter("folder", folder);
|
||||||
|
final boolean liveItemsInFolder = query.getSingleResult();
|
||||||
|
|
||||||
final boolean liveItemsInSubFolders = folder.getSubFolders()
|
final boolean liveItemsInSubFolders = folder.getSubFolders()
|
||||||
.stream()
|
.stream()
|
||||||
|
|
|
||||||
|
|
@ -77,3 +77,4 @@ cms.ui.folder.move.action=Move
|
||||||
cms.ui.folder.copy.action=Copy
|
cms.ui.folder.copy.action=Copy
|
||||||
cms.ui.folder.publish.action=(Re-)publish
|
cms.ui.folder.publish.action=(Re-)publish
|
||||||
cms.ui.folder.unpublish.action=Unpublish
|
cms.ui.folder.unpublish.action=Unpublish
|
||||||
|
cms.ui.folder.same_folder=Folders are equal
|
||||||
|
|
|
||||||
|
|
@ -77,3 +77,4 @@ cms.ui.folder.move.action=Verschieben
|
||||||
cms.ui.folder.copy.action=Kopieren
|
cms.ui.folder.copy.action=Kopieren
|
||||||
cms.ui.folder.publish.action=(Re-)Publizieren
|
cms.ui.folder.publish.action=(Re-)Publizieren
|
||||||
cms.ui.folder.unpublish.action=Depublizieren
|
cms.ui.folder.unpublish.action=Depublizieren
|
||||||
|
cms.ui.folder.same_folder=Folders are equal
|
||||||
|
|
|
||||||
|
|
@ -72,3 +72,4 @@ cms.ui.folder.move.action=
|
||||||
cms.ui.folder.copy.action=
|
cms.ui.folder.copy.action=
|
||||||
cms.ui.folder.publish.action=
|
cms.ui.folder.publish.action=
|
||||||
cms.ui.folder.unpublish.action=
|
cms.ui.folder.unpublish.action=
|
||||||
|
cms.ui.folder.same_folder=Der als Ziel gew\u00e4hlte Ordner ist der gleiche Ordner wie der zu verschiebene Ordner.
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,10 @@ import javax.xml.bind.annotation.XmlRootElement;
|
||||||
name = "Category.findByName",
|
name = "Category.findByName",
|
||||||
query = "SELECT c FROM Category c WHERE c.name = :name")
|
query = "SELECT c FROM Category c WHERE c.name = :name")
|
||||||
,
|
,
|
||||||
|
@NamedQuery(
|
||||||
|
name = "Category.findParentCategory",
|
||||||
|
query = "SELECT c.parentCategory FROM Category c WHERE c = :category")
|
||||||
|
,
|
||||||
@NamedQuery(
|
@NamedQuery(
|
||||||
name = "Category.countAssignedCategories",
|
name = "Category.countAssignedCategories",
|
||||||
query = "SELECT COUNT(c) FROM Categorization c "
|
query = "SELECT COUNT(c) FROM Categorization c "
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue