Package org.opencms.module
Class CmsModuleUpdater
- java.lang.Object
-
- org.opencms.module.CmsModuleUpdater
-
public class CmsModuleUpdater extends java.lang.Object
Class used for updating modules.This class updates modules in a smarter way than simply deleting and importing them again: The resources in the import ZIP file are compared to the resources in the currently installed module and only makes changes when necessary. The reason for this is that deletions of resources can be slow in some very large OpenCms installations, and the classic way of updating modules (delete/import) can take a long time because of this.
-
-
Constructor Summary
Constructors Constructor Description CmsModuleUpdater(CmsModuleImportData moduleData, I_CmsReport report)
Creates a new instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static boolean
checkCompatibleModuleResources(CmsModule installedModule, CmsModule newModule)
Checks whether the module resources and sites of the two module versions are suitable for updating.static java.util.Optional<CmsModuleUpdater>
create(CmsObject cms, java.lang.String importFile, I_CmsReport report)
Tries to create a new updater instance.protected CmsProject
createAndSetModuleImportProject(CmsObject cms, CmsModule module)
Creates the project used to import module resources and sets it on the CmsObject.protected void
deleteConflictingResources(CmsObject cms, CmsModule module, java.util.Map<CmsUUID,CmsUUID> conflictingIds)
Deletes and publishes resources with ID conflicts.void
importRelations(CmsObject cms)
Update relations for all imported resources.static boolean
needToUpdateResourceFields(CmsResource existingRes, CmsResource newRes, boolean reduced)
Check if a resource needs to be updated because of its direct fields.static java.lang.String
normalizePath(java.lang.String... pathComponents)
Normalizes the path.protected void
parseLinks(CmsObject cms)
Parses links for XMLContents etc.protected void
processDeletions(CmsObject cms, java.util.List<CmsResource> toDelete)
Handles the file deletions.protected void
processImportResource(CmsObject cms, CmsResourceImportData resData, int index)
Processes single resource from module import data.static CmsModuleImportData
readModuleData(CmsObject cms, java.lang.String importFile, I_CmsReport report)
Reads the module data from an import zip file.void
run()
Performs the module update.protected void
runImportScript(CmsObject cms, CmsModule module)
Runs the module import script.boolean
updateAcls(CmsObject cms, CmsResourceImportData resData, CmsResource resource)
Updates the access control list fr a resource.
-
-
-
Constructor Detail
-
CmsModuleUpdater
public CmsModuleUpdater(CmsModuleImportData moduleData, I_CmsReport report)
Creates a new instance.- Parameters:
moduleData
- the module import datareport
- the report to write to
-
-
Method Detail
-
checkCompatibleModuleResources
public static boolean checkCompatibleModuleResources(CmsModule installedModule, CmsModule newModule)
Checks whether the module resources and sites of the two module versions are suitable for updating.- Parameters:
installedModule
- the installed modulenewModule
- the module to import- Returns:
- true if the module resources are compatible
-
create
public static java.util.Optional<CmsModuleUpdater> create(CmsObject cms, java.lang.String importFile, I_CmsReport report) throws CmsException
Tries to create a new updater instance.If the module is deemed non-updatable, an empty result is returned.
- Parameters:
cms
- the current CMS contextimportFile
- the import file pathreport
- the report to write to- Returns:
- an optional module updater
- Throws:
CmsException
- if something goes wrong
-
needToUpdateResourceFields
public static boolean needToUpdateResourceFields(CmsResource existingRes, CmsResource newRes, boolean reduced)
Check if a resource needs to be updated because of its direct fields.- Parameters:
existingRes
- the existing resourcenewRes
- the new resourcereduced
- true if we are in reduced export mode- Returns:
- true if we need to update the resource based on its direct fields
-
normalizePath
public static java.lang.String normalizePath(java.lang.String... pathComponents)
Normalizes the path.- Parameters:
pathComponents
- the path components- Returns:
- the normalized path
-
readModuleData
public static CmsModuleImportData readModuleData(CmsObject cms, java.lang.String importFile, I_CmsReport report) throws CmsException
Reads the module data from an import zip file.- Parameters:
cms
- the CMS contextimportFile
- the import filereport
- the report to write to- Returns:
- the module data
- Throws:
CmsException
- if something goes wrong
-
importRelations
public void importRelations(CmsObject cms) throws CmsException
Update relations for all imported resources.- Parameters:
cms
- the current CMS context- Throws:
CmsException
- if something goes wrong
-
run
public void run()
Performs the module update.
-
updateAcls
public boolean updateAcls(CmsObject cms, CmsResourceImportData resData, CmsResource resource) throws CmsException
Updates the access control list fr a resource.- Parameters:
cms
- the current cms contextresData
- the resource dataresource
- the existing resource- Returns:
- the resource
- Throws:
CmsException
- if something goes wrong
-
createAndSetModuleImportProject
protected CmsProject createAndSetModuleImportProject(CmsObject cms, CmsModule module) throws CmsException
Creates the project used to import module resources and sets it on the CmsObject.- Parameters:
cms
- the CmsObject to set the project onmodule
- the module- Returns:
- the created project
- Throws:
CmsException
- if something goes wrong
-
deleteConflictingResources
protected void deleteConflictingResources(CmsObject cms, CmsModule module, java.util.Map<CmsUUID,CmsUUID> conflictingIds) throws CmsException, java.lang.Exception
Deletes and publishes resources with ID conflicts.- Parameters:
cms
- the CMS context to usemodule
- the moduleconflictingIds
- the conflicting ids- Throws:
CmsException
- if something goes wrongjava.lang.Exception
- if something goes wrong
-
parseLinks
protected void parseLinks(CmsObject cms) throws CmsException
Parses links for XMLContents etc.- Parameters:
cms
- the CMS context to use- Throws:
CmsException
- if something goes wrong
-
processDeletions
protected void processDeletions(CmsObject cms, java.util.List<CmsResource> toDelete) throws CmsException
Handles the file deletions.- Parameters:
cms
- the CMS context to usetoDelete
- the resources to delete- Throws:
CmsException
- if something goes wrong
-
processImportResource
protected void processImportResource(CmsObject cms, CmsResourceImportData resData, int index)
Processes single resource from module import data.- Parameters:
cms
- the CMS context to useresData
- the resource data from the module importindex
- index of the current import resource
-
runImportScript
protected void runImportScript(CmsObject cms, CmsModule module)
Runs the module import script.- Parameters:
cms
- the CMS context to usemodule
- the module for which to run the script
-
-