📄 a_cmsresourcetypefolderbase.java
字号:
dest = dest.concat("/");
}
if (resource.getRootPath().equals(dest)) {
// move to target with same name is not allowed
throw new CmsVfsException(org.opencms.file.Messages.get().container(
org.opencms.file.Messages.ERR_MOVE_SAME_NAME_1,
destination));
}
if (dest.startsWith(resource.getRootPath())) {
// move of folder inside itself is not allowed
throw new CmsVfsException(org.opencms.file.Messages.get().container(
org.opencms.file.Messages.ERR_MOVE_SAME_FOLDER_2,
cms.getSitePath(resource),
destination));
}
// check if the user has write access and if resource is locked
// done here since copy is ok without lock, but delete is not
securityManager.checkPermissions(
cms.getRequestContext(),
resource,
CmsPermissionSet.ACCESS_WRITE,
true,
CmsResourceFilter.IGNORE_EXPIRATION);
copyResource(cms, securityManager, resource, destination, CmsResource.COPY_AS_SIBLING);
deleteResource(cms, securityManager, resource, CmsResource.DELETE_PRESERVE_SIBLINGS);
}
/**
* @see org.opencms.file.types.I_CmsResourceType#replaceResource(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, int, byte[], List)
*/
public void replaceResource(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource resource,
int type,
byte[] content,
List properties) throws CmsException, CmsDataNotImplementedException {
if (type != getTypeId()) {
// it is not possible to replace a folder with a different type
throw new CmsDataNotImplementedException(Messages.get().container(
Messages.ERR_REPLACE_RESOURCE_FOLDER_1,
cms.getSitePath(resource)));
}
// properties of a folder can be replaced, content is ignored
super.replaceResource(cms, securityManager, resource, getTypeId(), null, properties);
}
/**
* @see org.opencms.file.types.I_CmsResourceType#restoreResourceBackup(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, int)
*/
public void restoreResourceBackup(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource resourename,
int tag) throws CmsException {
// it is not possible to restore a folder from the backup
throw new CmsDataNotImplementedException(Messages.get().container(Messages.ERR_RESTORE_FOLDERS_0));
}
/**
* @see org.opencms.file.types.I_CmsResourceType#setDateExpired(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, long, boolean)
*/
public void setDateExpired(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource resource,
long dateLastModified,
boolean recursive) throws CmsException {
// handle the folder itself
super.setDateExpired(cms, securityManager, resource, dateLastModified, recursive);
if (recursive) {
// collect all resources in the folder (but exclude deleted ones)
List resources = securityManager.readChildResources(
cms.getRequestContext(),
resource,
CmsResourceFilter.IGNORE_EXPIRATION,
true,
true);
// now walk through all sub-resources in the folder
for (int i = 0; i < resources.size(); i++) {
CmsResource childResource = (CmsResource)resources.get(i);
if (childResource.isFolder()) {
// recurse into this method for subfolders
setDateExpired(cms, securityManager, childResource, dateLastModified, recursive);
} else {
// handle child resources
getResourceType(childResource.getTypeId()).setDateExpired(
cms,
securityManager,
childResource,
dateLastModified,
recursive);
}
}
}
}
/**
* @see org.opencms.file.types.I_CmsResourceType#setDateLastModified(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, long, boolean)
*/
public void setDateLastModified(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource resource,
long dateLastModified,
boolean recursive) throws CmsException {
// handle the folder itself
super.setDateLastModified(cms, securityManager, resource, dateLastModified, recursive);
if (recursive) {
// collect all resources in the folder (but exclude deleted ones)
List resources = securityManager.readChildResources(
cms.getRequestContext(),
resource,
CmsResourceFilter.IGNORE_EXPIRATION,
true,
true);
// now walk through all sub-resources in the folder
for (int i = 0; i < resources.size(); i++) {
CmsResource childResource = (CmsResource)resources.get(i);
if (childResource.isFolder()) {
// recurse into this method for subfolders
setDateLastModified(cms, securityManager, childResource, dateLastModified, recursive);
} else {
// handle child resources
getResourceType(childResource.getTypeId()).setDateLastModified(
cms,
securityManager,
childResource,
dateLastModified,
recursive);
}
}
}
}
/**
* @see org.opencms.file.types.I_CmsResourceType#setDateReleased(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, long, boolean)
*/
public void setDateReleased(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource resource,
long dateLastModified,
boolean recursive) throws CmsException {
// handle the folder itself
super.setDateReleased(cms, securityManager, resource, dateLastModified, recursive);
if (recursive) {
// collect all resources in the folder (but exclude deleted ones)
List resources = securityManager.readChildResources(
cms.getRequestContext(),
resource,
CmsResourceFilter.IGNORE_EXPIRATION,
true,
true);
// now walk through all sub-resources in the folder
for (int i = 0; i < resources.size(); i++) {
CmsResource childResource = (CmsResource)resources.get(i);
if (childResource.isFolder()) {
// recurse into this method for subfolders
setDateReleased(cms, securityManager, childResource, dateLastModified, recursive);
} else {
// handle child resources
getResourceType(childResource.getTypeId()).setDateReleased(
cms,
securityManager,
childResource,
dateLastModified,
recursive);
}
}
}
}
/**
* @see org.opencms.file.types.I_CmsResourceType#undoChanges(org.opencms.file.CmsObject, CmsSecurityManager, CmsResource, boolean)
*/
public void undoChanges(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource, boolean recursive)
throws CmsException {
// handle the folder itself
super.undoChanges(cms, securityManager, resource, recursive);
if (recursive) {
// collect all resources in the folder (but exclude deleted ones)
List resources = securityManager.readChildResources(
cms.getRequestContext(),
resource,
CmsResourceFilter.ALL,
true,
true);
// now walk through all sub-resources in the folder
for (int i = 0; i < resources.size(); i++) {
CmsResource childResource = (CmsResource)resources.get(i);
if (childResource.isFolder()) {
// recurse into this method for subfolders
undoChanges(cms, securityManager, childResource, recursive);
} else {
// handle child resources
getResourceType(childResource.getTypeId()).undoChanges(
cms,
securityManager,
childResource,
recursive);
}
}
}
}
/**
* Checks if there are at least one character in the folder name,
* also ensures that it starts and ends with a '/'.<p>
*
* @param resourcename folder name to check (complete path)
* @return the validated folder name
* @throws CmsIllegalArgumentException if the folder name is empty or null
*/
private String validateFoldername(String resourcename) throws CmsIllegalArgumentException {
if (CmsStringUtil.isEmpty(resourcename)) {
throw new CmsIllegalArgumentException(org.opencms.db.Messages.get().container(
org.opencms.db.Messages.ERR_BAD_RESOURCENAME_1,
resourcename));
}
if (!CmsResource.isFolder(resourcename)) {
resourcename = resourcename.concat("/");
}
if (resourcename.charAt(0) != '/') {
resourcename = "/".concat(resourcename);
}
return resourcename;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -