org.opencms.db
Interface I_CmsVfsDriver

All Known Implementing Classes:
CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver, CmsVfsDriver

public interface I_CmsVfsDriver

Definitions of all required VFS driver methods.

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

Field Summary
static int DRIVER_TYPE_ID
          The type ID to identify user driver implementations.
static java.lang.String REQ_ATTR_CHECK_PERMISSIONS
          The internal request attribute to indicate that the permissions have to be checked.
static java.lang.String REQ_ATTR_RESOURCE_OUS
          The internal request attribute to indicate that resource organizational units have to be retrieved.
static int todo
          Add the methods that use these constants to the interface as soon as possible.
 
Method Summary
 int countSiblings(CmsDbContext dbc, CmsUUID projectId, CmsUUID resourceId)
          Counts the number of siblings of a resource.
 void createContent(CmsDbContext dbc, CmsUUID projectId, CmsUUID resourceId, byte[] content)
          Creates a content entry for the resource identified by the specified resource id.
 CmsFile createFile(java.sql.ResultSet res, CmsUUID projectId)
          Creates a CmsFile instance from a JDBC ResultSet.
 CmsFile createFile(java.sql.ResultSet res, CmsUUID projectId, boolean hasFileContentInResultSet)
          Creates a CmsFile instance from a JDBC ResultSet.
 CmsFolder createFolder(java.sql.ResultSet res, CmsUUID projectId, boolean hasProjectIdInResultSet)
          Creates a CmsFolder instance from a JDBC ResultSet.
 void createOnlineContent(CmsDbContext dbc, CmsUUID resourceId, byte[] contents, int publishTag, boolean keepOnline, boolean needToUpdateContent)
          Creates a new content in the offline project.
 CmsPropertyDefinition createPropertyDefinition(CmsDbContext dbc, CmsUUID projectId, java.lang.String name, CmsPropertyDefinition.CmsPropertyType type)
          Creates a new property definition in the database.
 void createRelation(CmsDbContext dbc, CmsUUID projectId, CmsRelation relation)
          Creates a new CmsRelation object in the database.
 CmsResource createResource(CmsDbContext dbc, CmsUUID projectId, CmsResource resource, byte[] content)
          Creates a new resource from a given CmsResource object.
 CmsResource createResource(java.sql.ResultSet res, CmsUUID 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 name)
          Deletes a property definition.
 void deletePropertyObjects(CmsDbContext dbc, CmsUUID projectId, CmsResource resource, int deleteOption)
          Deletes all property values of a file or folder.
 void deleteRelations(CmsDbContext dbc, CmsUUID projectId, CmsResource resource, CmsRelationFilter filter)
          Deletes all relations with the given filter for the given resource.
 void destroy()
          Destroys this driver.
 CmsSqlManager getSqlManager()
          Returns the SqlManager of this driver.
 CmsSqlManager initSqlManager(java.lang.String classname)
          Initializes the SQL manager for this driver.
 void moveResource(CmsDbContext dbc, CmsUUID projectId, CmsResource source, java.lang.String destinationPath)
          Moves the given resource to the specified destination path.
 void publishResource(CmsDbContext dbc, CmsProject onlineProject, CmsResource onlineResource, CmsResource offlineResource)
          Publishes the structure and resource records of an offline resource into it's online counterpart.
 void publishVersions(CmsDbContext dbc, CmsResource resource, boolean firstSibling)
          Copies the version number from the offline resource to the online resource, this has to be done during publishing, direct after copying the resource itself.
 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.
 byte[] readContent(CmsDbContext dbc, CmsUUID projectId, CmsUUID resourceId)
          Reads the content of a file specified by it's resource ID.
 CmsFolder readFolder(CmsDbContext dbc, CmsUUID projectId, CmsUUID folderId)
          Reads a folder specified by it's structure ID.
 CmsFolder readFolder(CmsDbContext dbc, CmsUUID projectId, java.lang.String foldername)
          Reads a folder specified by it's resource name.
 CmsFolder readParentFolder(CmsDbContext dbc, CmsUUID projectId, CmsUUID structureId)
          Reads the parent folder of a resource specified by it's structure ID.
 CmsPropertyDefinition readPropertyDefinition(CmsDbContext dbc, java.lang.String name, CmsUUID projectId)
          Reads a property definition for the specified resource type.
 java.util.List readPropertyDefinitions(CmsDbContext dbc, CmsUUID 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.
 java.util.List readRelations(CmsDbContext dbc, CmsUUID projectId, CmsResource resource, CmsRelationFilter filter)
          Reads all relations with the given filter for the given resource.
 CmsResource readResource(CmsDbContext dbc, CmsUUID projectId, CmsUUID structureId, boolean includeDeleted)
          Reads a resource specified by it's structure ID.
 CmsResource readResource(CmsDbContext dbc, CmsUUID projectId, java.lang.String filename, boolean includeDeleted)
          Reads a resource specified by it's resource name.
 java.util.List readResources(CmsDbContext dbc, CmsUUID currentProject, CmsResourceState 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, CmsUUID projectId, CmsUUID propertyDefinition, 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, CmsUUID projectId, java.lang.String parent, int type, CmsResourceState state, long startTime, long endTime, 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, CmsUUID projectId, CmsResource resource, boolean includeDeleted)
          Reads all siblings that point to the resource record of a specified resource.
 java.util.Map readVersions(CmsDbContext dbc, CmsUUID projectId, CmsUUID resourceId, CmsUUID structureId)
          Reads a resource version numbers.
 void removeFile(CmsDbContext dbc, CmsUUID projectId, CmsResource resource)
          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[] newResourceContent, 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.
 void updateRelations(CmsDbContext dbc, CmsProject onlineProject, CmsResource offlineResource)
          Updates the relations on the online project copying the relations from the offline project.
 boolean validateResourceIdExists(CmsDbContext dbc, CmsUUID projectId, CmsUUID resourceId)
          Validates if the specified resource ID in the tables of the specified project {offline|online} exists.
 boolean validateStructureIdExists(CmsDbContext dbc, CmsUUID projectId, CmsUUID structureId)
          Validates if the specified structure ID in the tables of the specified project {offline|online} exists.
 void writeContent(CmsDbContext dbc, CmsUUID resourceId, byte[] content)
          Writes the resource content with the specified resource id.
 void writeLastModifiedProjectId(CmsDbContext dbc, CmsProject project, CmsUUID 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, CmsUUID projectId, 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, boolean isPublishing)
          Writes file state in either the structure or resource record, or both of them.
 

Field Detail

DRIVER_TYPE_ID

static final int DRIVER_TYPE_ID
The type ID to identify user driver implementations.

See Also:
Constant Field Values

REQ_ATTR_CHECK_PERMISSIONS

static final java.lang.String REQ_ATTR_CHECK_PERMISSIONS
The internal request attribute to indicate that the permissions have to be checked.

See Also:
Constant Field Values

REQ_ATTR_RESOURCE_OUS

static final java.lang.String REQ_ATTR_RESOURCE_OUS
The internal request attribute to indicate that resource organizational units have to be retrieved.

See Also:
Constant Field Values

todo

static final int todo
Add the methods that use these constants to the interface as soon as possible.

See Also:
Constant Field Values
Method Detail

countSiblings

int countSiblings(CmsDbContext dbc,
                  CmsUUID 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

createContent

void createContent(CmsDbContext dbc,
                   CmsUUID projectId,
                   CmsUUID resourceId,
                   byte[] content)
                   throws CmsDataAccessException
Creates a content entry for the resource identified by the specified resource id.

Parameters:
dbc - the current database context
projectId - the id of the current project
resourceId - the resource id of the resource to create the content for
content - the content to write
Throws:
CmsDataAccessException - if something goes wrong

createFile

CmsFile createFile(java.sql.ResultSet res,
                   CmsUUID projectId)
                   throws java.sql.SQLException
Creates a CmsFile instance from a JDBC ResultSet.

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

createFile

CmsFile createFile(java.sql.ResultSet res,
                   CmsUUID projectId,
                   boolean hasFileContentInResultSet)
                   throws java.sql.SQLException
Creates a CmsFile instance from a JDBC ResultSet.

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

createFolder

CmsFolder createFolder(java.sql.ResultSet res,
                       CmsUUID projectId,
                       boolean hasProjectIdInResultSet)
                       throws java.sql.SQLException
Creates a CmsFolder instance from a JDBC ResultSet.

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

createOnlineContent

void createOnlineContent(CmsDbContext dbc,
                         CmsUUID resourceId,
                         byte[] contents,
                         int publishTag,
                         boolean keepOnline,
                         boolean needToUpdateContent)
                         throws CmsDataAccessException
Creates a new content in the offline project.

Parameters:
dbc - the current database context
resourceId - the resource id of the content to write
contents - the content to publish
publishTag - the publish tag
keepOnline - if the content is online or has to be put in the history
needToUpdateContent - if the content blob has to be updated
Throws:
CmsDataAccessException - if something goes wrong

createPropertyDefinition

CmsPropertyDefinition createPropertyDefinition(CmsDbContext dbc,
                                               CmsUUID projectId,
                                               java.lang.String name,
                                               CmsPropertyDefinition.CmsPropertyType type)
                                               throws CmsDataAccessException
Creates a new property definition in the database.

Parameters:
dbc - the current database context
projectId - the project in which the property definition is created
name - the name of the property definition
type - the type of the property definition
Returns:
the new property definition
Throws:
CmsDataAccessException - if something goes wrong

createRelation

void createRelation(CmsDbContext dbc,
                    CmsUUID projectId,
                    CmsRelation relation)
                    throws CmsDataAccessException
Creates a new CmsRelation object in the database.

Parameters:
dbc - the current database context
projectId - the id of the project to execute the query in
relation - the relation to create
Throws:
CmsDataAccessException - if something goes wrong

createResource

CmsResource createResource(CmsDbContext dbc,
                           CmsUUID projectId,
                           CmsResource resource,
                           byte[] content)
                           throws CmsDataAccessException
Creates a new resource from a given CmsResource object.

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

Parameters:
dbc - the current database context
projectId - the id of 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 something goes wrong
See Also:
I_CmsResourceType.createResource(org.opencms.file.CmsObject, CmsSecurityManager, String, byte[], List), I_CmsResourceType.importResource(org.opencms.file.CmsObject, CmsSecurityManager, String, CmsResource, byte[], List), CmsObject.createResource(String, int, byte[], List), CmsObject.importResource(String, CmsResource, byte[], List)

createResource

CmsResource createResource(java.sql.ResultSet res,
                           CmsUUID projectId)
                           throws java.sql.SQLException
Creates a CmsResource instance from a JDBC ResultSet.

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

createSibling

void createSibling(CmsDbContext dbc,
                   CmsProject project,
                   CmsResource resource)
                   throws CmsDataAccessException
Creates a new sibling for a specified resource.

Parameters:
dbc - the current database context
project - the project where to create the link
resource - the link prototype
Throws:
CmsDataAccessException - if something goes wrong

deletePropertyDefinition

void deletePropertyDefinition(CmsDbContext dbc,
                              CmsPropertyDefinition name)
                              throws CmsDataAccessException
Deletes a property definition.

Parameters:
dbc - the current database context
name - the property definitions to be deleted
Throws:
CmsDataAccessException - if something goes wrong

deletePropertyObjects

void deletePropertyObjects(CmsDbContext dbc,
                           CmsUUID projectId,
                           CmsResource resource,
                           int deleteOption)
                           throws CmsDataAccessException
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.

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:
CmsProperty.DELETE_OPTION_DELETE_STRUCTURE_AND_RESOURCE_VALUES, CmsProperty.DELETE_OPTION_DELETE_STRUCTURE_VALUES, CmsProperty.DELETE_OPTION_DELETE_RESOURCE_VALUES

deleteRelations

void deleteRelations(CmsDbContext dbc,
                     CmsUUID projectId,
                     CmsResource resource,
                     CmsRelationFilter filter)
                     throws CmsDataAccessException
Deletes all relations with the given filter for the given resource.

Parameters:
dbc - the current database context
projectId - the id of the project to execute the query in
resource - the base resource. May be null for all
filter - the filter to restrict the relations to remove
Throws:
CmsDataAccessException - if something goes wrong

destroy

void destroy()
             throws java.lang.Throwable
Destroys this driver.

Throws:
java.lang.Throwable - if something goes wrong

getSqlManager

CmsSqlManager getSqlManager()
Returns the SqlManager of this driver.

Returns:
the SqlManager of this driver

initSqlManager

CmsSqlManager initSqlManager(java.lang.String classname)
Initializes the SQL manager for this driver.

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

Parameters:
classname - the class name of the SQL manager
Returns:
the SQL manager for this driver

moveResource

void moveResource(CmsDbContext dbc,
                  CmsUUID projectId,
                  CmsResource source,
                  java.lang.String destinationPath)
                  throws CmsDataAccessException
Moves the given resource to the specified destination path.

Parameters:
dbc - the current database context
projectId - the Id of the project
source - the resource to move
destinationPath - the root path of the destination resource
Throws:
CmsDataAccessException - if something goes wrong

publishResource

void publishResource(CmsDbContext dbc,
                     CmsProject onlineProject,
                     CmsResource onlineResource,
                     CmsResource offlineResource)
                     throws CmsDataAccessException
Publishes the structure and resource records of an offline resource into it's online counterpart.

Parameters:
dbc - the current database context
onlineProject - the online project
onlineResource - the online resource
offlineResource - the offline resource
Throws:
CmsDataAccessException - if something goes wrong

publishVersions

void publishVersions(CmsDbContext dbc,
                     CmsResource resource,
                     boolean firstSibling)
                     throws CmsDataAccessException
Copies the version number from the offline resource to the online resource, this has to be done during publishing, direct after copying the resource itself.

Parameters:
dbc - the current database context
resource - the resource that has been publish
firstSibling - if this is the first sibling to be publish
Throws:
CmsDataAccessException - if something goes wrong

readChildResources

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

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

readContent

byte[] readContent(CmsDbContext dbc,
                   CmsUUID projectId,
                   CmsUUID resourceId)
                   throws CmsDataAccessException
Reads the content of a file specified by it's resource ID.

Parameters:
dbc - the current database context
projectId - the ID of the current project
resourceId - the id of the resource
Returns:
the file content
Throws:
CmsDataAccessException - if something goes wrong

readFolder

CmsFolder readFolder(CmsDbContext dbc,
                     CmsUUID projectId,
                     CmsUUID folderId)
                     throws CmsDataAccessException
Reads a folder specified by it's structure ID.

Parameters:
dbc - the current database context
projectId - the project in which the resource will be used
folderId - the structure id of the folder to be read
Returns:
the read folder
Throws:
CmsDataAccessException - if something goes wrong

readFolder

CmsFolder readFolder(CmsDbContext dbc,
                     CmsUUID projectId,
                     java.lang.String foldername)
                     throws CmsDataAccessException
Reads a folder specified by it's resource name.

Parameters:
dbc - the current database context
projectId - the project in which the resource will be used
foldername - the name of the folder to be read
Returns:
the read folder
Throws:
CmsDataAccessException - if something goes wrong

readParentFolder

CmsFolder readParentFolder(CmsDbContext dbc,
                           CmsUUID projectId,
                           CmsUUID structureId)
                           throws CmsDataAccessException
Reads the parent folder of a resource specified by it's structure ID.

The parent folder for the root '/' is defined as null.

Parameters:
dbc - the current database context
projectId - the project in which the resource will be used
structureId - the id of the resource to read the parent folder for
Returns:
the read folder, or null
Throws:
CmsDataAccessException - if something goes wrong

readPropertyDefinition

CmsPropertyDefinition readPropertyDefinition(CmsDbContext dbc,
                                             java.lang.String name,
                                             CmsUUID projectId)
                                             throws CmsDataAccessException
Reads a property definition for the specified resource type.

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

Parameters:
dbc - the current database context
name - the name of the property definition to read
projectId - the id of the project
Returns:
the property definition that was read
Throws:
CmsDataAccessException - a CmsDbEntryNotFoundException is thrown if the property definition does not exist

readPropertyDefinitions

java.util.List readPropertyDefinitions(CmsDbContext dbc,
                                       CmsUUID projectId)
                                       throws CmsDataAccessException
Reads all property definitions for the specified mapping type.

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

readPropertyObject

CmsProperty readPropertyObject(CmsDbContext dbc,
                               java.lang.String key,
                               CmsProject project,
                               CmsResource resource)
                               throws CmsDataAccessException
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.

TODO: change project parameter to project id

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

readPropertyObjects

java.util.List readPropertyObjects(CmsDbContext dbc,
                                   CmsProject project,
                                   CmsResource resource)
                                   throws CmsDataAccessException
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.

TODO: change project parameter to project id

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

readRelations

java.util.List readRelations(CmsDbContext dbc,
                             CmsUUID projectId,
                             CmsResource resource,
                             CmsRelationFilter filter)
                             throws CmsDataAccessException
Reads all relations with the given filter for the given resource.

Parameters:
dbc - the current database context
projectId - the id of the project to execute the query in
resource - the resource to read the relations for, may be null for all
filter - the filter to restrict the relations to retrieve
Returns:
the read relations
Throws:
CmsDataAccessException - if something goes wrong

readResource

CmsResource readResource(CmsDbContext dbc,
                         CmsUUID projectId,
                         CmsUUID structureId,
                         boolean includeDeleted)
                         throws CmsDataAccessException
Reads a resource specified by it's structure ID.

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

readResource

CmsResource readResource(CmsDbContext dbc,
                         CmsUUID projectId,
                         java.lang.String filename,
                         boolean includeDeleted)
                         throws CmsDataAccessException
Reads a resource specified by it's resource name.

Parameters:
dbc - the current database context
projectId - the Id of the project in which the resource will be used
filename - 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

readResources

java.util.List readResources(CmsDbContext dbc,
                             CmsUUID currentProject,
                             CmsResourceState state,
                             int mode)
                             throws CmsDataAccessException
Reads all resources inside a given project and with a given state.

Parameters:
dbc - the current database context
currentProject - 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 something goes wrong

readResourcesForPrincipalACE

java.util.List readResourcesForPrincipalACE(CmsDbContext dbc,
                                            CmsProject project,
                                            CmsUUID principalId)
                                            throws CmsDataAccessException
Returns all resources associated to a given principal via an ACE.

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

readResourcesForPrincipalAttr

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

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

readResourcesWithProperty

java.util.List readResourcesWithProperty(CmsDbContext dbc,
                                         CmsUUID projectId,
                                         CmsUUID propertyDefinition,
                                         java.lang.String path,
                                         java.lang.String value)
                                         throws CmsDataAccessException
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.

If the value parameter is null, all resources having the given property set are returned.

Parameters:
dbc - the current database context
projectId - the id of the project
propertyDefinition - 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

readResourceTree

java.util.List readResourceTree(CmsDbContext dbc,
                                CmsUUID projectId,
                                java.lang.String parent,
                                int type,
                                CmsResourceState state,
                                long startTime,
                                long endTime,
                                long releasedAfter,
                                long releasedBefore,
                                long expiredAfter,
                                long expiredBefore,
                                int mode)
                                throws CmsDataAccessException
Reads all resources inside a given project matching the criteria specified by parameter values.

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

Parameters:
dbc - the current database context
projectId - the project id for matching resources
parent - the path to the resource used as root of the searched subtree or CmsDriverManager.READ_IGNORE_PARENT, CmsDriverManager.READMODE_EXCLUDE_TREE means to read immediate children only
type - the resource type of matching resources or CmsDriverManager.READ_IGNORE_TYPE (meaning inverted by CmsDriverManager.READMODE_EXCLUDE_TYPE
state - the state of matching resources (meaning inverted by CmsDriverManager.READMODE_EXCLUDE_STATE or null to ignore
startTime - the start of the time range for the last modification date of matching resources or READ_IGNORE_TIME
endTime - 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:
Returns:
a list of CmsResource objects matching the given criteria
Throws:
CmsDataAccessException - if something goes wrong

readSiblings

java.util.List readSiblings(CmsDbContext dbc,
                            CmsUUID projectId,
                            CmsResource resource,
                            boolean includeDeleted)
                            throws CmsDataAccessException
Reads all siblings that point to the resource record of a specified resource.

Parameters:
dbc - the current database context
projectId - the id of 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

readVersions

java.util.Map readVersions(CmsDbContext dbc,
                           CmsUUID projectId,
                           CmsUUID resourceId,
                           CmsUUID structureId)
                           throws CmsDataAccessException
Reads a resource version numbers.

Parameters:
dbc - the current database context
projectId - the project to read the versions from
resourceId - the resource id of the resource to read the versions from
structureId - the structure id of the resource to read the versions from
Returns:
a map with two entries with keys "structure" and "resource" for the structure and resource version number respectively, the values are Integer objects and may be -1 if an entry could be found
Throws:
CmsDataAccessException - if something goes wrong

removeFile

void removeFile(CmsDbContext dbc,
                CmsUUID projectId,
                CmsResource resource)
                throws CmsDataAccessException
Removes a file physically in the database.

Parameters:
dbc - the current database context
projectId - the id of the current project
resource - the resource
Throws:
CmsDataAccessException - if something goes wrong

removeFolder

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

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

replaceResource

void replaceResource(CmsDbContext dbc,
                     CmsResource newResource,
                     byte[] newResourceContent,
                     int newResourceType)
                     throws CmsDataAccessException
Replaces the content and properties of an existing resource.

Parameters:
dbc - the current database context
newResource - the new resource
newResourceContent - the new content
newResourceType - the resource type
Throws:
CmsDataAccessException - if something goes wrong

transferResource

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

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 last modificator of the resource
Throws:
CmsDataAccessException - if something goes wrong

updateRelations

void updateRelations(CmsDbContext dbc,
                     CmsProject onlineProject,
                     CmsResource offlineResource)
                     throws CmsDataAccessException
Updates the relations on the online project copying the relations from the offline project.

TODO: add offlineProject parameter

Parameters:
dbc - the current database context
onlineProject - the online project
offlineResource - the resource to update the relations for
Throws:
CmsDataAccessException - is something goes wrong

validateResourceIdExists

boolean validateResourceIdExists(CmsDbContext dbc,
                                 CmsUUID projectId,
                                 CmsUUID resourceId)
                                 throws CmsDataAccessException
Validates if the specified resource ID in the tables of the specified project {offline|online} exists.

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 otherwise
Throws:
CmsDataAccessException - if something goes wrong

validateStructureIdExists

boolean validateStructureIdExists(CmsDbContext dbc,
                                  CmsUUID projectId,
                                  CmsUUID structureId)
                                  throws CmsDataAccessException
Validates if the specified structure ID in the tables of the specified project {offline|online} exists.

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

writeContent

void writeContent(CmsDbContext dbc,
                  CmsUUID resourceId,
                  byte[] content)
                  throws CmsDataAccessException
Writes the resource content with the specified resource id.

Parameters:
dbc - the current database context
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

writeLastModifiedProjectId

void writeLastModifiedProjectId(CmsDbContext dbc,
                                CmsProject project,
                                CmsUUID projectId,
                                CmsResource resource)
                                throws CmsDataAccessException
Writes the "last-modified-in-project" ID of a resource.

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 resource
resource - the resource that gets updated
Throws:
CmsDataAccessException - if something goes wrong

writePropertyObject

void writePropertyObject(CmsDbContext dbc,
                         CmsProject project,
                         CmsResource resource,
                         CmsProperty property)
                         throws CmsDataAccessException
Writes a property object to the database mapped to a specified resource.

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

writePropertyObjects

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

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

writeResource

void writeResource(CmsDbContext dbc,
                   CmsUUID projectId,
                   CmsResource resource,
                   int changed)
                   throws CmsDataAccessException
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 attributes are changed. Both the structure and resource records get written. Thus, using this method affects all siblings of a resource! Use writeResourceState(CmsDbContext, CmsProject, CmsResource, int, boolean) 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.

Parameters:
dbc - the current database context
projectId - the id of 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:
CmsDriverManager.UPDATE_RESOURCE_STATE, CmsDriverManager.UPDATE_STRUCTURE_STATE, CmsDriverManager.NOTHING_CHANGED, writeResourceState(CmsDbContext, CmsProject, CmsResource, int, boolean)

writeResourceState

void writeResourceState(CmsDbContext dbc,
                        CmsProject project,
                        CmsResource resource,
                        int changed,
                        boolean isPublishing)
                        throws CmsDataAccessException
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 attributes. get updated here. Use writeResource(CmsDbContext, CmsUUID, CmsResource, int) instead to write the complete file header.

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

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"
isPublishing - if this method is called during publishing to version numbers are updated
Throws:
CmsDataAccessException - if something goes wrong
See Also:
CmsDriverManager.UPDATE_RESOURCE_STATE, CmsDriverManager.UPDATE_STRUCTURE_STATE, CmsDriverManager.UPDATE_ALL