org.opencms.db.generic
Class CmsVfsDriver

java.lang.Object
  extended byorg.opencms.db.generic.CmsVfsDriver
All Implemented Interfaces:
I_CmsDriver, I_CmsVfsDriver
Direct Known Subclasses:
CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver

public class CmsVfsDriver
extends java.lang.Object
implements I_CmsDriver, I_CmsVfsDriver

Generic (ANSI-SQL) database server implementation of the VFS driver methods.

Since:
6.0.0
Version:
$Revision: 1.261 $
Author:
Thomas Weckert, Michael Emmerich

Field Summary
protected static java.lang.String BEGIN_EXCLUDE_CONDITION
          Operator to concatenate exclude conditions.
protected static java.lang.String BEGIN_INCLUDE_CONDITION
          Operator to concatenate include conditions.
protected static java.lang.String END_CONDITION
          String to end a single condition.
protected  CmsDriverManager m_driverManager
          The driver manager.
protected  CmsSqlManager m_sqlManager
          The sql manager.
 
Fields inherited from interface org.opencms.db.I_CmsVfsDriver
DRIVER_TYPE_ID
 
Constructor Summary
CmsVfsDriver()
           
 
Method Summary
 void createContent(CmsDbContext dbc, CmsProject project, CmsUUID resourceId, byte[] content, int versionId)
          Creates a resource content with the specified id.
 CmsFile createFile(java.sql.ResultSet res, int projectId)
          Creates a CmsFile instance from a JDBC ResultSet.
 CmsFile createFile(java.sql.ResultSet res, int projectId, boolean hasFileContentInResultSet)
          Creates a CmsFile instance from a JDBC ResultSet.
 CmsFolder createFolder(java.sql.ResultSet res, int projectId, boolean hasProjectIdInResultSet)
          Creates a CmsFolder instance from a JDBC ResultSet.
 CmsPropertyDefinition createPropertyDefinition(CmsDbContext dbc, int projectId, java.lang.String name)
          Creates a new property defintion in the database.
 CmsResource createResource(CmsDbContext dbc, CmsProject project, CmsResource resource, byte[] content)
          Creates a new resource from a given CmsResource object.
 CmsResource createResource(java.sql.ResultSet res, int projectId)
          Creates a CmsResource instance from a JDBC ResultSet.
 void createSibling(CmsDbContext dbc, CmsProject project, CmsResource resource)
          Creates a new sibling for a specified resource.
 void deletePropertyDefinition(CmsDbContext dbc, CmsPropertyDefinition metadef)
          Deletes a property defintion.
 void deletePropertyObjects(CmsDbContext dbc, int projectId, CmsResource resource, int deleteOption)
          Deletes all property values of a file or folder.
 void destroy()
          Destroys this driver.
protected  java.lang.String escapeDbWildcard(java.lang.String path)
          Escapes the database wildcards within the resource path.
protected  void finalize()
           
 CmsSqlManager getSqlManager()
          Returns the SqlManager of this driver.
 void init(CmsDbContext dbc, CmsConfigurationManager configurationManager, java.util.List successiveDrivers, CmsDriverManager driverManager)
          Initializes the driver.
 CmsSqlManager initSqlManager(java.lang.String classname)
          Initializes the SQL manager for this driver.
protected  int internalCountProperties(CmsDbContext dbc, CmsPropertyDefinition propertyDefinition, int projectId)
          Returns the count of properties for a property definition.
protected  int internalCountSiblings(CmsDbContext dbc, int projectId, CmsUUID resourceId)
          Counts the number of siblings of a resource.
protected  java.lang.String internalReadParentId(CmsDbContext dbc, int projectId, java.lang.String resourcename)
          Returns the parent id of the given resource.
protected  void internalRemoveFolder(CmsDbContext dbc, CmsProject currentProject, CmsResource resource)
          Removes a resource physically in the database.
protected  void internalValidateResourceLength(CmsResource resource)
          Validates that the length setting of a resource is always correct.
 void publishResource(CmsDbContext dbc, CmsProject onlineProject, CmsResource onlineResource, CmsResource offlineResource, boolean writeFileContent)
          Publishes the structure and resource records of an offline resource into it's online counterpart.
 java.util.List readChildResources(CmsDbContext dbc, CmsProject currentProject, CmsResource resource, boolean getFolders, boolean getFiles)
          Reads all child-files and/or child-folders of a specified parent resource.
 CmsFile readFile(CmsDbContext dbc, int projectId, boolean includeDeleted, CmsUUID structureId)
          Reads a file specified by it's structure ID.
 CmsFolder readFolder(CmsDbContext dbc, int projectId, CmsUUID folderId)
          Reads a folder specified by it's structure ID.
 CmsFolder readFolder(CmsDbContext dbc, int projectId, java.lang.String folderPath)
          Reads a folder specified by it's resource name.
 CmsPropertyDefinition readPropertyDefinition(CmsDbContext dbc, java.lang.String name, int projectId)
          Reads a property definition for the soecified resource type.
 java.util.List readPropertyDefinitions(CmsDbContext dbc, int projectId)
          Reads all property definitions for the specified mapping type.
 CmsProperty readPropertyObject(CmsDbContext dbc, java.lang.String key, CmsProject project, CmsResource resource)
          Reads a property object from the database specified by it's key name mapped to a resource.
 java.util.List readPropertyObjects(CmsDbContext dbc, CmsProject project, CmsResource resource)
          Reads all property objects mapped to a specified resource from the database.
 CmsResource readResource(CmsDbContext dbc, int projectId, CmsUUID structureId, boolean includeDeleted)
          Reads a resource specified by it's structure ID.
 CmsResource readResource(CmsDbContext dbc, int projectId, java.lang.String path, boolean includeDeleted)
          Reads a resource specified by it's resource name.
 java.util.List readResources(CmsDbContext dbc, int projectId, int state, int mode)
          Reads all resources inside a given project and with a given state.
 java.util.List readResourcesForPrincipalACE(CmsDbContext dbc, CmsProject project, CmsUUID principalId)
          Returns all resources associated to a given principal via an ACE.
 java.util.List readResourcesForPrincipalAttr(CmsDbContext dbc, CmsProject project, CmsUUID principalId)
          Returns all resources associated to a given principal through some of following attributes.
 java.util.List readResourcesWithProperty(CmsDbContext dbc, int projectId, CmsUUID propertyDef, java.lang.String path)
          Reads all resources that have a value set for the specified property (definition), in the given path.
 java.util.List readResourcesWithProperty(CmsDbContext dbc, int projectId, CmsUUID propertyDef, java.lang.String path, java.lang.String value)
          Reads all resources that have a value (containing the specified value) set for the specified property (definition), in the given path.
 java.util.List readResourceTree(CmsDbContext dbc, int projectId, java.lang.String parentPath, int type, int state, long lastModifiedAfter, long lastModifiedBefore, long releasedAfter, long releasedBefore, long expiredAfter, long expiredBefore, int mode)
          Reads all resources inside a given project matching the criteria specified by parameter values.
 java.util.List readSiblings(CmsDbContext dbc, CmsProject currentProject, CmsResource resource, boolean includeDeleted)
          Reads all siblings that point to the resource record of a specified resource.
 void removeFile(CmsDbContext dbc, CmsProject currentProject, CmsResource resource, boolean removeFileContent)
          Removes a file physically in the database.
 void removeFolder(CmsDbContext dbc, CmsProject currentProject, CmsResource resource)
          Removes a folder physically in the database.
 void replaceResource(CmsDbContext dbc, CmsResource newResource, byte[] resContent, int newResourceType)
          Replaces the content and properties of an existing resource.
 void transferResource(CmsDbContext dbc, CmsProject project, CmsResource resource, CmsUUID createdUser, CmsUUID lastModifiedUser)
          Transfers the attributes of a resource from to the given users.
 boolean validateResourceIdExists(CmsDbContext dbc, int projectId, CmsUUID resourceId)
          Validates if the specified resource ID in the tables of the specified project {offline|online} exists.
 boolean validateStructureIdExists(CmsDbContext dbc, int projectId, CmsUUID structureId)
          Validates if the specified structure ID in the tables of the specified project {offline|online} exists.
 void writeContent(CmsDbContext dbc, CmsProject project, CmsUUID resourceId, byte[] content)
          Writes the resource content with the specified content id.
 void writeLastModifiedProjectId(CmsDbContext dbc, CmsProject project, int projectId, CmsResource resource)
          Writes the "last-modified-in-project" ID of a resource.
 void writePropertyObject(CmsDbContext dbc, CmsProject project, CmsResource resource, CmsProperty property)
          Writes a property object to the database mapped to a specified resource.
 void writePropertyObjects(CmsDbContext dbc, CmsProject project, CmsResource resource, java.util.List properties)
          Writes a list of property objects to the database mapped to a specified resource.
 void writeResource(CmsDbContext dbc, CmsProject project, CmsResource resource, int changed)
          Writes the structure and/or resource record(s) of an existing file.
 void writeResourceState(CmsDbContext dbc, CmsProject project, CmsResource resource, int changed)
          Writes file state in either the structure or resource record, or both of them.
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.opencms.db.I_CmsDriver
toString
 

Field Detail

BEGIN_EXCLUDE_CONDITION

protected static final java.lang.String BEGIN_EXCLUDE_CONDITION
Operator to concatenate exclude conditions.

See Also:
Constant Field Values

BEGIN_INCLUDE_CONDITION

protected static final java.lang.String BEGIN_INCLUDE_CONDITION
Operator to concatenate include conditions.

See Also:
Constant Field Values

END_CONDITION

protected static final java.lang.String END_CONDITION
String to end a single condition.

See Also:
Constant Field Values

m_driverManager

protected CmsDriverManager m_driverManager
The driver manager.


m_sqlManager

protected CmsSqlManager m_sqlManager
The sql manager.

Constructor Detail

CmsVfsDriver

public CmsVfsDriver()
Method Detail

createContent

public void createContent(CmsDbContext dbc,
                          CmsProject project,
                          CmsUUID resourceId,
                          byte[] content,
                          int versionId)
                   throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Creates a resource content with the specified id.

Specified by:
createContent in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resourceId - the resource id to create the content for
content - the content to write
versionId - for the content of a backup file you need to insert the versionId of the backup
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.createContent(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID, byte[], int)

createFile

public CmsFile createFile(java.sql.ResultSet res,
                          int projectId)
                   throws java.sql.SQLException
Description copied from interface: I_CmsVfsDriver
Creates a CmsFile instance from a JDBC ResultSet.

Specified by:
createFile in interface I_CmsVfsDriver
Parameters:
res - the JDBC ResultSet
projectId - the project id
Returns:
the created file
Throws:
java.sql.SQLException - in case the result set does not include a requested table attribute
See Also:
I_CmsVfsDriver.createFile(java.sql.ResultSet, int)

createFile

public CmsFile createFile(java.sql.ResultSet res,
                          int projectId,
                          boolean hasFileContentInResultSet)
                   throws java.sql.SQLException
Description copied from interface: I_CmsVfsDriver
Creates a CmsFile instance from a JDBC ResultSet.

Specified by:
createFile in interface I_CmsVfsDriver
Parameters:
res - the JDBC ResultSet
projectId - the project id
hasFileContentInResultSet - flag to include the file content
Returns:
the created file
Throws:
java.sql.SQLException - in case the result set does not include a requested table attribute
See Also:
I_CmsVfsDriver.createFile(java.sql.ResultSet, int, boolean)

createFolder

public CmsFolder createFolder(java.sql.ResultSet res,
                              int projectId,
                              boolean hasProjectIdInResultSet)
                       throws java.sql.SQLException
Description copied from interface: I_CmsVfsDriver
Creates a CmsFolder instance from a JDBC ResultSet.

Specified by:
createFolder in interface I_CmsVfsDriver
Parameters:
res - the JDBC ResultSet
projectId - the ID of the current project
hasProjectIdInResultSet - true if the SQL select query includes the PROJECT_ID table attribute
Returns:
the created folder
Throws:
java.sql.SQLException - in case the result set does not include a requested table attribute
See Also:
I_CmsVfsDriver.createFolder(java.sql.ResultSet, int, boolean)

createPropertyDefinition

public CmsPropertyDefinition createPropertyDefinition(CmsDbContext dbc,
                                                      int projectId,
                                                      java.lang.String name)
                                               throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Creates a new property defintion in the database.

Specified by:
createPropertyDefinition in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the project in which the propertydefinition is created
name - the name of the propertydefinitions to overwrite
Returns:
the new propertydefinition
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.createPropertyDefinition(org.opencms.db.CmsDbContext, int, java.lang.String)

createResource

public CmsResource createResource(CmsDbContext dbc,
                                  CmsProject project,
                                  CmsResource resource,
                                  byte[] content)
                           throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Creates a new resource from a given CmsResource object.

This method works for both files and folders. Existing resources get overwritten.

Specified by:
createResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource to be created
content - the file content, or null in case of a folder
Returns:
the created Cms resource
Throws:
CmsDataAccessException - if somethong goes wrong
See Also:
I_CmsVfsDriver.createResource(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, byte[])

createResource

public CmsResource createResource(java.sql.ResultSet res,
                                  int projectId)
                           throws java.sql.SQLException
Description copied from interface: I_CmsVfsDriver
Creates a CmsResource instance from a JDBC ResultSet.

Specified by:
createResource in interface I_CmsVfsDriver
Parameters:
res - the JDBC ResultSet
projectId - the ID of the current project to adjust the modification date in case the resource is a VFS link
Returns:
the created resource
Throws:
java.sql.SQLException - in case the result set does not include a requested table attribute
See Also:
I_CmsVfsDriver.createResource(java.sql.ResultSet, int)

createSibling

public void createSibling(CmsDbContext dbc,
                          CmsProject project,
                          CmsResource resource)
                   throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Creates a new sibling for a specified resource.

Specified by:
createSibling in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the project where to create the link
resource - the link prototype
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.createSibling(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource)

deletePropertyDefinition

public void deletePropertyDefinition(CmsDbContext dbc,
                                     CmsPropertyDefinition metadef)
                              throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Deletes a property defintion.

Specified by:
deletePropertyDefinition in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
metadef - the property definitions to be deleted
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.deletePropertyDefinition(org.opencms.db.CmsDbContext, org.opencms.file.CmsPropertyDefinition)

deletePropertyObjects

public void deletePropertyObjects(CmsDbContext dbc,
                                  int projectId,
                                  CmsResource resource,
                                  int deleteOption)
                           throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Deletes all property values of a file or folder.

You may specify which whether just structure or resource property values should be deleted, or both of them.

Specified by:
deletePropertyObjects in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the id of the project
resource - the resource
deleteOption - determines which property values should be deleted
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.deletePropertyObjects(org.opencms.db.CmsDbContext, int, org.opencms.file.CmsResource, int)

destroy

public void destroy()
             throws java.lang.Throwable
Description copied from interface: I_CmsVfsDriver
Destroys this driver.

Specified by:
destroy in interface I_CmsVfsDriver
Throws:
java.lang.Throwable - if something goes wrong
See Also:
I_CmsVfsDriver.destroy()

getSqlManager

public CmsSqlManager getSqlManager()
Description copied from interface: I_CmsVfsDriver
Returns the SqlManager of this driver.

Specified by:
getSqlManager in interface I_CmsVfsDriver
Returns:
the SqlManager of this driver
See Also:
I_CmsVfsDriver.getSqlManager()

init

public void init(CmsDbContext dbc,
                 CmsConfigurationManager configurationManager,
                 java.util.List successiveDrivers,
                 CmsDriverManager driverManager)
Description copied from interface: I_CmsDriver
Initializes the driver.

Specified by:
init in interface I_CmsDriver
Parameters:
dbc - the current database context
configurationManager - the configuration manager
successiveDrivers - a list of successive drivers to be initialized
driverManager - the initialized OpenCms driver manager
See Also:
I_CmsDriver.init(org.opencms.db.CmsDbContext, org.opencms.configuration.CmsConfigurationManager, java.util.List, org.opencms.db.CmsDriverManager)

initSqlManager

public CmsSqlManager initSqlManager(java.lang.String classname)
Description copied from interface: I_CmsVfsDriver
Initializes the SQL manager for this driver.

To obtain JDBC connections from different pools, further {online|offline|backup} pool Urls have to be specified.

Specified by:
initSqlManager in interface I_CmsVfsDriver
Parameters:
classname - the classname of the SQL manager
Returns:
the SQL manager for this driver
See Also:
I_CmsVfsDriver.initSqlManager(String)

publishResource

public void publishResource(CmsDbContext dbc,
                            CmsProject onlineProject,
                            CmsResource onlineResource,
                            CmsResource offlineResource,
                            boolean writeFileContent)
                     throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Publishes the structure and resource records of an offline resource into it's online counterpart.

Specified by:
publishResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
onlineProject - the online project
onlineResource - the online resource
offlineResource - the offline resource
writeFileContent - true, if also the content record of the specified offline resource should be written to the online table; false otherwise
Throws:
CmsDataAccessException - if somethong goes wrong
See Also:
I_CmsVfsDriver.publishResource(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, org.opencms.file.CmsResource, boolean)

readChildResources

public java.util.List readChildResources(CmsDbContext dbc,
                                         CmsProject currentProject,
                                         CmsResource resource,
                                         boolean getFolders,
                                         boolean getFiles)
                                  throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all child-files and/or child-folders of a specified parent resource.

Specified by:
readChildResources in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
currentProject - the current project
resource - the parent folder
getFolders - if true the child folders of the parent folder are returned in the result set
getFiles - if true the child files of the parent folder are returned in the result set
Returns:
a list of all sub folders or sub files
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readChildResources(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, boolean, boolean)

readFile

public CmsFile readFile(CmsDbContext dbc,
                        int projectId,
                        boolean includeDeleted,
                        CmsUUID structureId)
                 throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a file specified by it's structure ID.

Specified by:
readFile in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the ID of the current project
includeDeleted - true if should be read even if it's state is deleted
structureId - the id of the file
Returns:
the file that was read
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readFile(org.opencms.db.CmsDbContext, int, boolean, org.opencms.util.CmsUUID)

readFolder

public CmsFolder readFolder(CmsDbContext dbc,
                            int projectId,
                            CmsUUID folderId)
                     throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a folder specified by it's structure ID.

Specified by:
readFolder in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the project in which the resource will be used
folderId - the id of the folder to be read
Returns:
the read folder
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readFolder(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID)

readFolder

public CmsFolder readFolder(CmsDbContext dbc,
                            int projectId,
                            java.lang.String folderPath)
                     throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a folder specified by it's resource name.

Specified by:
readFolder in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the project in which the resource will be used
folderPath - the name of the folder to be read
Returns:
the read folder
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readFolder(org.opencms.db.CmsDbContext, int, java.lang.String)

readPropertyDefinition

public CmsPropertyDefinition readPropertyDefinition(CmsDbContext dbc,
                                                    java.lang.String name,
                                                    int projectId)
                                             throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a property definition for the soecified resource type.

If no property definition with the given name is found, null is returned.

Specified by:
readPropertyDefinition in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
name - the name of the propertydefinition to read
projectId - the id of the project
Returns:
the property definition that was read, or null if there is no property definition with the given name.
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readPropertyDefinition(org.opencms.db.CmsDbContext, java.lang.String, int)

readPropertyDefinitions

public java.util.List readPropertyDefinitions(CmsDbContext dbc,
                                              int projectId)
                                       throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all property definitions for the specified mapping type.

Specified by:
readPropertyDefinitions in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the id of the project
Returns:
a list with the CmsPropertyDefinition objects (may be empty)
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readPropertyDefinitions(org.opencms.db.CmsDbContext, int)

readPropertyObject

public CmsProperty readPropertyObject(CmsDbContext dbc,
                                      java.lang.String key,
                                      CmsProject project,
                                      CmsResource resource)
                               throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a property object from the database specified by it's key name mapped to a resource.

The implementation must return CmsProperty.getNullProperty() if the property is not found.

Specified by:
readPropertyObject in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
key - the key of the property
project - the current project
resource - the resource where the property is attached to
Returns:
a CmsProperty object containing both the structure and resource value of the property
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readPropertyObject(org.opencms.db.CmsDbContext, java.lang.String, org.opencms.file.CmsProject, org.opencms.file.CmsResource)

readPropertyObjects

public java.util.List readPropertyObjects(CmsDbContext dbc,
                                          CmsProject project,
                                          CmsResource resource)
                                   throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all property objects mapped to a specified resource from the database.

The implementation must return an empty list if no properties are found at all.

Specified by:
readPropertyObjects in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource where the property is attached to
Returns:
a list with CmsProperty objects containing both the structure and resource value of the property
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readPropertyObjects(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource)

readResource

public CmsResource readResource(CmsDbContext dbc,
                                int projectId,
                                CmsUUID structureId,
                                boolean includeDeleted)
                         throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a resource specified by it's structure ID.

Specified by:
readResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the Id of the project
structureId - the Id of the resource
includeDeleted - true if already deleted files are included
Returns:
the resource that was read
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResource(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID, boolean)

readResource

public CmsResource readResource(CmsDbContext dbc,
                                int projectId,
                                java.lang.String path,
                                boolean includeDeleted)
                         throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads a resource specified by it's resource name.

Specified by:
readResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the Id of the project in which the resource will be used
path - the name of the file
includeDeleted - true if already deleted files are included
Returns:
the resource that was read
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResource(org.opencms.db.CmsDbContext, int, java.lang.String, boolean)

readResources

public java.util.List readResources(CmsDbContext dbc,
                                    int projectId,
                                    int state,
                                    int mode)
                             throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all resources inside a given project and with a given state.

Specified by:
readResources in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the current project
state - the state to match
mode - flag signaling the read mode
Returns:
a list with all resources that where read
Throws:
CmsDataAccessException - if somethong goes wrong
See Also:
I_CmsVfsDriver.readResources(org.opencms.db.CmsDbContext, int, int, int)

readResourcesForPrincipalACE

public java.util.List readResourcesForPrincipalACE(CmsDbContext dbc,
                                                   CmsProject project,
                                                   CmsUUID principalId)
                                            throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Returns all resources associated to a given principal via an ACE.

Specified by:
readResourcesForPrincipalACE in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the to read the entries from
principalId - the id of the principal
Returns:
a list of CmsResource objects
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResourcesForPrincipalACE(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID)

readResourcesForPrincipalAttr

public java.util.List readResourcesForPrincipalAttr(CmsDbContext dbc,
                                                    CmsProject project,
                                                    CmsUUID principalId)
                                             throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Returns all resources associated to a given principal through some of following attributes.

Specified by:
readResourcesForPrincipalAttr in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the to read the entries from
principalId - the id of the principal
Returns:
a list of CmsResource objects
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResourcesForPrincipalAttr(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID)

readResourcesWithProperty

public java.util.List readResourcesWithProperty(CmsDbContext dbc,
                                                int projectId,
                                                CmsUUID propertyDef,
                                                java.lang.String path)
                                         throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all resources that have a value set for the specified property (definition), in the given path.

Both individual and shared properties of a resource are checked.

Specified by:
readResourcesWithProperty in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the id of the project
propertyDef - the id of the property definition
path - the folder to get the resources with the property from
Returns:
a list of all CmsResource objects that have a value set for the specified property.
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResourcesWithProperty(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID, String)

readResourcesWithProperty

public java.util.List readResourcesWithProperty(CmsDbContext dbc,
                                                int projectId,
                                                CmsUUID propertyDef,
                                                java.lang.String path,
                                                java.lang.String value)
                                         throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all resources that have a value (containing the specified value) set for the specified property (definition), in the given path.

Both individual and shared properties of a resource are checked.

Specified by:
readResourcesWithProperty in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the id of the project
propertyDef - the id of the property definition
path - the folder to get the resources with the property from
value - the string to search in the value of the property
Returns:
a list of all CmsResource objects that have a value set for the specified property.
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readResourcesWithProperty(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID, String, String)

readResourceTree

public java.util.List readResourceTree(CmsDbContext dbc,
                                       int projectId,
                                       java.lang.String parentPath,
                                       int type,
                                       int state,
                                       long lastModifiedAfter,
                                       long lastModifiedBefore,
                                       long releasedAfter,
                                       long releasedBefore,
                                       long expiredAfter,
                                       long expiredBefore,
                                       int mode)
                                throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all resources inside a given project matching the criteria specified by parameter values.

Important: If C_READMODE_EXCLUDE_TREE is true (or C_READMODE_INCLUDE_TREE is false), the provided parent String must be the UUID of the parent folder, NOT the parent folder path.

Specified by:
readResourceTree in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the project id for matching resources or C_READ_OFFLINE_PROJECTS
parentPath - the path to the resource used as root of the searched subtree or READ_IGNORE_PARENT (C_READMODE_EXCLUDE_TREE means to read immidiate children only)
type - the resource type of matching resources or C_READ_IGNORE_TYPES (meaning inverted by C_READMODE_EXCLUDE_TYPE)
state - the state of matching resources or READ_IGNORE_STATE (meaning inverted by C_READMODE_EXCLUDE_STATE)
lastModifiedAfter - the start of the time range for the last modification date of matching resources or READ_IGNORE_TIME
lastModifiedBefore - the end of the time range for the last modification date of matching resources or READ_IGNORE_TIME
releasedAfter - the start of the time range for the release date of matching resources
releasedBefore - the end of the time range for the release date of matching resources
expiredAfter - the start of the time range for the expire date of matching resources
expiredBefore - the end of the time range for the expire date of matching resources
mode - additional mode flags: C_READMODE_INCLUDE_TREE C_READMODE_EXCLUDE_TREE C_READMODE_INCLUDE_PROJECT C_READMODE_EXCLUDE_TYPE C_READMODE_EXCLUDE_STATE
Returns:
a list of CmsResource objects matching the given criteria
Throws:
CmsDataAccessException - if somethong goes wrong
See Also:
I_CmsVfsDriver.readResourceTree(org.opencms.db.CmsDbContext, int, java.lang.String, int, int, long, long, long, long, long, long, int)

readSiblings

public java.util.List readSiblings(CmsDbContext dbc,
                                   CmsProject currentProject,
                                   CmsResource resource,
                                   boolean includeDeleted)
                            throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Reads all siblings that point to the resource record of a specified resource.

Specified by:
readSiblings in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
currentProject - the current project
resource - the specified resource
includeDeleted - true if deleted siblings should be included in the result list
Returns:
a list of CmsResources that are siblings to the specified resource, including the specified resource itself.
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.readSiblings(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, boolean)

removeFile

public void removeFile(CmsDbContext dbc,
                       CmsProject currentProject,
                       CmsResource resource,
                       boolean removeFileContent)
                throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Removes a file physically in the database.

Specified by:
removeFile in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
currentProject - the current project
resource - the resource
removeFileContent - if true, the content record is also removed; if false, only the structure/resource records are removed
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.removeFile(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, boolean)

removeFolder

public void removeFolder(CmsDbContext dbc,
                         CmsProject currentProject,
                         CmsResource resource)
                  throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Removes a folder physically in the database.

Specified by:
removeFolder in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
currentProject - the current project
resource - the folder
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.removeFolder(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource)

replaceResource

public void replaceResource(CmsDbContext dbc,
                            CmsResource newResource,
                            byte[] resContent,
                            int newResourceType)
                     throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Replaces the content and properties of an existing resource.

Specified by:
replaceResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
newResource - the new resource
resContent - the new content
newResourceType - the resource type
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.replaceResource(org.opencms.db.CmsDbContext, org.opencms.file.CmsResource, byte[], int)

transferResource

public void transferResource(CmsDbContext dbc,
                             CmsProject project,
                             CmsResource resource,
                             CmsUUID createdUser,
                             CmsUUID lastModifiedUser)
                      throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Transfers the attributes of a resource from to the given users.

Specified by:
transferResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource to modify
createdUser - the id of the user to be set as the creator of the resource
lastModifiedUser - the id of the user to be set as the las modificator of the resource
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.transferResource(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, org.opencms.util.CmsUUID, org.opencms.util.CmsUUID)

validateResourceIdExists

public boolean validateResourceIdExists(CmsDbContext dbc,
                                        int projectId,
                                        CmsUUID resourceId)
                                 throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Validates if the specified resource ID in the tables of the specified project {offline|online} exists.

Specified by:
validateResourceIdExists in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the project id
resourceId - the resource id to test for
Returns:
true if a resource with the given id was found, false otherweise
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.validateResourceIdExists(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID)

validateStructureIdExists

public boolean validateStructureIdExists(CmsDbContext dbc,
                                         int projectId,
                                         CmsUUID structureId)
                                  throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Validates if the specified structure ID in the tables of the specified project {offline|online} exists.

Specified by:
validateStructureIdExists in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
projectId - the ID of current project
structureId - the structure id
Returns:
true, if the specified structure ID in the tables of the specified project {offline|online} exists
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.validateStructureIdExists(org.opencms.db.CmsDbContext, int, org.opencms.util.CmsUUID)

writeContent

public void writeContent(CmsDbContext dbc,
                         CmsProject project,
                         CmsUUID resourceId,
                         byte[] content)
                  throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes the resource content with the specified content id.

Specified by:
writeContent in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resourceId - the id of the resource used to identify the content to update
content - the new content of the file
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.writeContent(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.util.CmsUUID, byte[])

writeLastModifiedProjectId

public void writeLastModifiedProjectId(CmsDbContext dbc,
                                       CmsProject project,
                                       int projectId,
                                       CmsResource resource)
                                throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes the "last-modified-in-project" ID of a resource.

Specified by:
writeLastModifiedProjectId in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the resource record is updated with the ID of this project
projectId - the project id to write into the reource
resource - the resource that gets updated
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.writeLastModifiedProjectId(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, int, org.opencms.file.CmsResource)

writePropertyObject

public void writePropertyObject(CmsDbContext dbc,
                                CmsProject project,
                                CmsResource resource,
                                CmsProperty property)
                         throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes a property object to the database mapped to a specified resource.

Specified by:
writePropertyObject in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource where the property should be attached to
property - a CmsProperty object containing both the structure and resource value of the property
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.writePropertyObject(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, org.opencms.file.CmsProperty)

writePropertyObjects

public void writePropertyObjects(CmsDbContext dbc,
                                 CmsProject project,
                                 CmsResource resource,
                                 java.util.List properties)
                          throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes a list of property objects to the database mapped to a specified resource.

Specified by:
writePropertyObjects in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource where the property should be attached to
properties - a list of CmsProperty objects
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.writePropertyObjects(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, java.util.List)

writeResource

public void writeResource(CmsDbContext dbc,
                          CmsProject project,
                          CmsResource resource,
                          int changed)
                   throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes the structure and/or resource record(s) of an existing file.

Common usages of this method are saving the resource information after creating, importing or restoring complete files where all file header attribs are changed. Both the structure and resource records get written. Thus, using this method affects all siblings of a resource! Use I_CmsVfsDriver.writeResourceState(CmsDbContext, CmsProject, CmsResource, int) instead if you just want to update the file state, e.g. of a single sibling.

The file state is set to "changed", unless the current state is "new" or "deleted". The "changed" argument allows to choose whether the structure or resource state, or none of them, is set to "changed".

The rating of the file state values is as follows:
unchanged < changed < new < deleted

Second, the "state" of the resource is the structure state, if the structure state has a higher file state value than the resource state. Otherwise the file state is the resource state.

Specified by:
writeResource in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource to be updated
changed - determines whether the structure or resource state, or none of them, is set to "changed"
Throws:
CmsDataAccessException - if something goes wrong
See Also:
I_CmsVfsDriver.writeResource(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, int)

writeResourceState

public void writeResourceState(CmsDbContext dbc,
                               CmsProject project,
                               CmsResource resource,
                               int changed)
                        throws CmsDataAccessException
Description copied from interface: I_CmsVfsDriver
Writes file state in either the structure or resource record, or both of them.

This method allows to change the resource state to any state by setting the desired state value in the specified CmsResource instance.

This method is frequently used while resources are published to set the file state back to "unchanged".

Only file state attribs. get updated here. Use I_CmsVfsDriver.writeResource(CmsDbContext, CmsProject, CmsResource, int) instead to write the complete file header.

Please refer to the javadoc of I_CmsVfsDriver.writeResource(CmsDbContext, CmsProject, CmsResource, int) to read how setting resource state values affects the file state.

Specified by:
writeResourceState in interface I_CmsVfsDriver
Parameters:
dbc - the current database context
project - the current project
resource - the resource to be updated
changed - determines whether the structure or resource state, or none of them, is set to "changed"
Throws:
CmsDataAccessException - if somethong goes wrong
See Also:
I_CmsVfsDriver.writeResourceState(org.opencms.db.CmsDbContext, org.opencms.file.CmsProject, org.opencms.file.CmsResource, int)

escapeDbWildcard

protected java.lang.String escapeDbWildcard(java.lang.String path)
Escapes the database wildcards within the resource path.

This method is required to ensure chars in the resource path that have a special meaning in SQL (for example "_", which is the "any char" operator) are escaped.

It will escape the following chars:

Parameters:
path - the resource path
Returns:
the escaped resource path

finalize

protected void finalize()
                 throws java.lang.Throwable
Throws:
java.lang.Throwable
See Also:
Object.finalize()

internalCountProperties

protected int internalCountProperties(CmsDbContext dbc,
                                      CmsPropertyDefinition propertyDefinition,
                                      int projectId)
                               throws CmsDataAccessException
Returns the count of properties for a property definition.

Parameters:
dbc - the current database context
propertyDefinition - the propertydefinition to test
projectId - the ID of the current project
Returns:
the amount of properties for a propertydefinition
Throws:
CmsDataAccessException - if something goes wrong

internalCountSiblings

protected int internalCountSiblings(CmsDbContext dbc,
                                    int projectId,
                                    CmsUUID resourceId)
                             throws CmsDataAccessException
Counts the number of siblings of a resource.

Parameters:
dbc - the current database context
projectId - the current project id
resourceId - the resource id to count the number of siblings from
Returns:
number of siblings
Throws:
CmsDataAccessException - if something goes wrong

internalReadParentId

protected java.lang.String internalReadParentId(CmsDbContext dbc,
                                                int projectId,
                                                java.lang.String resourcename)
                                         throws CmsDataAccessException
Returns the parent id of the given resource.

Parameters:
dbc - the current database context
projectId - the current project id
resourcename - the resource name to read the parent id for
Returns:
the parent id of the given resource
Throws:
CmsDataAccessException - if something goes wrong

internalRemoveFolder

protected void internalRemoveFolder(CmsDbContext dbc,
                                    CmsProject currentProject,
                                    CmsResource resource)
                             throws CmsDataAccessException
Removes a resource physically in the database.

Parameters:
dbc - the current database context
currentProject - the current project
resource - the folder to remove
Throws:
CmsDataAccessException - if something goes wrong

internalValidateResourceLength

protected void internalValidateResourceLength(CmsResource resource)
                                       throws CmsDataAccessException
Validates that the length setting of a resource is always correct.

Files need to have a resource length of >= 0, while folders require a resource length of -1.

Parameters:
resource - the resource to check the length for
Throws:
CmsDataAccessException - if the resource length is not correct