📄 i_cmsresourcetype.java
字号:
/*
* File : $Source: /usr/local/cvs/opencms/src/org/opencms/file/types/I_CmsResourceType.java,v $
* Date : $Date: 2006/03/27 14:52:48 $
* Version: $Revision: 1.29 $
*
* This library is part of OpenCms -
* the Open Source Content Mananagement System
*
* Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.file.types;
import org.opencms.configuration.CmsConfigurationException;
import org.opencms.configuration.I_CmsConfigurationParameterHandler;
import org.opencms.db.CmsSecurityManager;
import org.opencms.file.CmsFile;
import org.opencms.file.CmsObject;
import org.opencms.file.CmsProperty;
import org.opencms.file.CmsResource;
import org.opencms.main.CmsException;
import org.opencms.main.CmsIllegalArgumentException;
import java.util.List;
/**
* Defines resource type descriptors for all resources in the VFS.<p>
*
* Each file in the VFS must belong to an initialized resource type.
* The available resource type are read during system startup ftom the configuration
* file <code>opencms-vfs.xml</code>.<p>
*
* Certain resource types may require special handling for certain operations.
* This is usually required for write operations, or other operations that
* modify the VFS database.
* Therefore, the {@link org.opencms.file.CmsObject} defers handling of this
* operations to implementations of this interface.<p>
*
* If you implement a new resource type, it's a good idea to extend the
* abstract class {@link org.opencms.file.types.A_CmsResourceType}.<p>
*
* Important: The {@link org.opencms.file.CmsObject} passes the {@link org.opencms.db.CmsSecurityManager}
* object to implementations of this class. Using this object correctly is key to the
* resource type operations. Mistakes made in the implementation of a resource type
* can screw up the system security and the database structure, and make you unhappy. <p>
*
* @author Alexander Kandzior
* @author Thomas Weckert
* @author Michael Emmerich
*
* @version $Revision: 1.29 $
*
* @since 6.0.0
*/
public interface I_CmsResourceType extends I_CmsConfigurationParameterHandler {
/** The name of the addMapping() method. */
String ADD_MAPPING_METHOD = "addMappingType";
/** Name of the addResourceType() method to add a resource type from the configuration. */
String ADD_RESOURCE_TYPE_METHOD = "addResourceType";
/** Configuration key prefix for properties that are attached when creating a new resource. */
String CONFIGURATION_PROPERTY_CREATE = "property.create.";
/** Configuration key for the resource type id. */
String CONFIGURATION_RESOURCE_TYPE_ID = "resource.type.id";
/** Configuration key for the resource type name. */
String CONFIGURATION_RESOURCE_TYPE_NAME = "resource.type.name";
/** Store the property on resource record. */
String PROPERTY_ON_RESOURCE = "resource";
/** Store the property on structure record. */
String PROPERTY_ON_STRUCTURE = "structure";
/**
* Maps a file extension to a resource type.<p>
*
* When uploading files into OpenCms, they must be mapped to the different
* OpenCms resource types. The configuration, to map which extension to which
* resouce type is done in the OpenCms VFS configuration.
*
* @param mapping the file extension mapped to the resource type
*/
void addMappingType(String mapping);
/**
* Changes the project id of the resource to the current project, indicating that
* the resource was last modified in this project.<p>
*
* This information is used while publishing. Only resources inside the
* project folders that are new/modified/changed <i>and</i> that "belong"
* to the project (i.e. have the id of the project set) are published
* with the project.<p>
*
* @param cms the initialized CmsObject
* @param securityManager the initialized OpenCms security manager
* @param resource the resource to apply this operation to
*
* @throws CmsException if something goes wrong
*
* @see CmsObject#changeLastModifiedProjectId(String)
* @see CmsSecurityManager#changeLastModifiedProjectId(org.opencms.file.CmsRequestContext, CmsResource)
*/
void changeLastModifiedProjectId(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource)
throws CmsException;
/**
* Changes the lock of a resource to the current user,
* that is "steals" the lock from another user.<p>
*
* @param cms the current cms context
* @param securityManager the initialized OpenCms security manager
* @param resource the name of the resource to change the lock with complete path
*
* @throws CmsException if something goes wrong
*
* @see CmsObject#changeLock(String)
* @see CmsSecurityManager#changeLock(org.opencms.file.CmsRequestContext, CmsResource)
*/
void changeLock(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource) throws CmsException;
/**
* Changes the resource flags of a resource.<p>
*
* The resource flags are used to indicate various "special" conditions
* for a resource. Most notably, the "internal only" setting which signals
* that a resource can not be directly requested with it's URL.<p>
*
* @param cms the initialized CmsObject
* @param securityManager the initialized OpenCms security manager
* @param resource the resource to change the flags for
* @param flags the new resource flags for this resource
*
* @throws CmsException if something goes wrong
*
* @see CmsObject#chflags(String, int)
* @see CmsSecurityManager#chflags(org.opencms.file.CmsRequestContext, CmsResource, int)
*/
void chflags(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource, int flags)
throws CmsException;
/**
* Changes the resource type of a resource.<p>
*
* OpenCms handles resources according to the resource type,
* not the file suffix. This is e.g. why a JSP in OpenCms can have the
* suffix ".html" instead of ".jsp" only. Changing the resource type
* makes sense e.g. if you want to make a plain text file a JSP resource,
* or a binary file an image, etc.<p>
*
* @param cms the initialized CmsObject
* @param securityManager the initialized OpenCms security manager
* @param resource the resource to change the type for
* @param type the new resource type for this resource
*
* @throws CmsException if something goes wrong
*
* @see CmsObject#chtype(String, int)
* @see CmsSecurityManager#chtype(org.opencms.file.CmsRequestContext, CmsResource, int)
*/
void chtype(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource, int type) throws CmsException;
/**
* Copies a resource.<p>
*
* You must ensure that the destination path is an absolute, valid and
* existing VFS path. Relative paths from the source are currently not supported.<p>
*
* The copied resource will always be locked to the current user
* after the copy operation.<p>
*
* In case the target resource already exists, it is overwritten with the
* source resource.<p>
*
* The <code>siblingMode</code> parameter controls how to handle siblings
* during the copy operation.<br>
* Possible values for this parameter are: <br>
* <ul>
* <li><code>{@link org.opencms.file.CmsResource#COPY_AS_NEW}</code></li>
* <li><code>{@link org.opencms.file.CmsResource#COPY_AS_SIBLING}</code></li>
* <li><code>{@link org.opencms.file.CmsResource#COPY_PRESERVE_SIBLING}</code></li>
* </ul><p>
*
* @param cms the initialized CmsObject
* @param securityManager the initialized OpenCms security manager
* @param source the resource to copy
* @param destination the name of the copy destination with complete path
* @param siblingMode indicates how to handle siblings during copy
*
* @throws CmsIllegalArgumentException if the <code>destination</code> argument is null or of length 0
* @throws CmsException if something goes wrong
*
* @see CmsObject#copyResource(String, String, int)
* @see CmsSecurityManager#copyResource(org.opencms.file.CmsRequestContext, CmsResource, String, int)
*/
void copyResource(
CmsObject cms,
CmsSecurityManager securityManager,
CmsResource source,
String destination,
int siblingMode) throws CmsException, CmsIllegalArgumentException;
/**
* Copies a resource to the current project of the user.<p>
*
* This is used to extend the current users project with the
* specified resource, in case that the resource is not yet part of the project.
* The resource is not really copied like in a regular copy operation,
* it is in fact only "enabled" in the current users project.<p>
*
* @param cms the initialized CmsObject
* @param securityManager the initialized OpenCms security manager
* @param resource the resource to apply this operation to
*
* @throws CmsException if something goes wrong
* @throws CmsIllegalArgumentException if the <code>resource</code> argument is null or of length 0
*
* @see CmsObject#copyResourceToProject(String)
* @see CmsSecurityManager#copyResourceToProject(org.opencms.file.CmsRequestContext, CmsResource)
*/
void copyResourceToProject(CmsObject cms, CmsSecurityManager securityManager, CmsResource resource)
throws CmsException, CmsIllegalArgumentException;
/**
* Creates a new resource of the given resource type
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -