Package org.ametys.plugins.odfsync.cdmfr
Class MergeMetadataForSharedProgramHelper
- java.lang.Object
-
- org.ametys.plugins.odfsync.cdmfr.MergeMetadataForSharedProgramHelper
-
- All Implemented Interfaces:
Component
,Serviceable
public class MergeMetadataForSharedProgramHelper extends Object implements Serviceable, Component
Helper for synchronizing and merging metadata from shared programs
-
-
Field Summary
Fields Modifier and Type Field Description protected ContentTypeExtensionPoint
_cTypeE
The content type extension pointprotected AmetysObjectResolver
_resolver
The ametys object resolverprotected static XPathProcessor
_xPathProcessor
The xpath processorstatic String
ROLE
The avalon rolestatic String
SHARED_PROGRAMS_NODE_NAME
The name of the JCR node holding the shared metadata
-
Constructor Summary
Constructors Constructor Description MergeMetadataForSharedProgramHelper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected String[]
getMergeSharedStringArrayMetadata(SubProgram mainSubProgram, String metadataName, org.slf4j.Logger logger)
Get and merge a String array shared metadataModifiableCompositeMetadata
getSharedMetadataHolder(SubProgram mainProgram, String subProgramCode, org.slf4j.Logger logger)
Get the composite metadata holding the shared metadata for subprogram of given codeNode
getSharedProgramRootNode(SubProgram mainProgram, org.slf4j.Logger logger)
Get the shared program node holding the shared subprogram nodeboolean
isValidMetadataPath(ContentType cType, String metadataPath, org.slf4j.Logger logger)
Determines if the metadata path is a valid path from the given content type and eligible to mergeboolean
mergeSharedMetadata(SubProgram mainProgram, Node contentNode, Set<String> metadataToMerge, org.slf4j.Logger logger)
Merge the shared metadataprotected boolean
mergeSharedMultipleMetadata(MetadataDefinition metadataDefinition, SubProgram mainSubProgram, Node contentNode, String metadataName, org.slf4j.Logger logger)
Synchronize multiple metadata for main programprotected boolean
mergeSharedRepeaterMetadata(MetadataDefinition metadataDefinition, SubProgram mainSubProgram, String metadataName, org.slf4j.Logger logger)
Merge all repeater entry to the main programprotected boolean
mergeSharedSingleMetadata(MetadataDefinition metadataDefinition, SubProgram mainProgram, String metadataPath, org.slf4j.Logger logger)
Synchronize single metadata for main programvoid
service(ServiceManager manager)
-
-
-
Field Detail
-
SHARED_PROGRAMS_NODE_NAME
public static final String SHARED_PROGRAMS_NODE_NAME
The name of the JCR node holding the shared metadata- See Also:
- Constant Field Values
-
_xPathProcessor
protected static XPathProcessor _xPathProcessor
The xpath processor
-
_cTypeE
protected ContentTypeExtensionPoint _cTypeE
The content type extension point
-
_resolver
protected AmetysObjectResolver _resolver
The ametys object resolver
-
-
Constructor Detail
-
MergeMetadataForSharedProgramHelper
public MergeMetadataForSharedProgramHelper()
-
-
Method Detail
-
service
public void service(ServiceManager manager) throws ServiceException
- Specified by:
service
in interfaceServiceable
- Throws:
ServiceException
-
mergeSharedMetadata
public boolean mergeSharedMetadata(SubProgram mainProgram, Node contentNode, Set<String> metadataToMerge, org.slf4j.Logger logger) throws RepositoryException
Merge the shared metadata- Parameters:
mainProgram
- the main programcontentNode
- The DOM representing the contentmetadataToMerge
- the metadata to mergelogger
- the logger- Returns:
- true if there are some changes
- Throws:
RepositoryException
- if an error occurred
-
mergeSharedMultipleMetadata
protected boolean mergeSharedMultipleMetadata(MetadataDefinition metadataDefinition, SubProgram mainSubProgram, Node contentNode, String metadataName, org.slf4j.Logger logger) throws RepositoryException
Synchronize multiple metadata for main program- Parameters:
metadataDefinition
- the metadata definitionmainSubProgram
- the main subprogramcontentNode
- The DOM representing the contentmetadataName
- the metadata namelogger
- the logger- Returns:
- true if there are some changes
- Throws:
RepositoryException
- if an error occurred
-
mergeSharedSingleMetadata
protected boolean mergeSharedSingleMetadata(MetadataDefinition metadataDefinition, SubProgram mainProgram, String metadataPath, org.slf4j.Logger logger) throws RepositoryException
Synchronize single metadata for main program- Parameters:
metadataDefinition
- the metadata definitionmainProgram
- the main programmetadataPath
- the metadata pathlogger
- the logger- Returns:
- true if there are some changes
- Throws:
RepositoryException
- if an error occurred
-
getMergeSharedStringArrayMetadata
protected String[] getMergeSharedStringArrayMetadata(SubProgram mainSubProgram, String metadataName, org.slf4j.Logger logger) throws RepositoryException
Get and merge a String array shared metadata- Parameters:
mainSubProgram
- The main subprogrammetadataName
- The metadata namelogger
- the logger- Returns:
- the merge metadata in a String array
- Throws:
RepositoryException
- if an error occurred
-
mergeSharedRepeaterMetadata
protected boolean mergeSharedRepeaterMetadata(MetadataDefinition metadataDefinition, SubProgram mainSubProgram, String metadataName, org.slf4j.Logger logger) throws RepositoryException
Merge all repeater entry to the main program- Parameters:
metadataDefinition
- the metadata definitionmainSubProgram
- the main subprogrammetadataName
- the metadata namelogger
- the logger- Returns:
- true if there are some changes
- Throws:
RepositoryException
- if an error occurred
-
getSharedProgramRootNode
public Node getSharedProgramRootNode(SubProgram mainProgram, org.slf4j.Logger logger) throws RepositoryException
Get the shared program node holding the shared subprogram node- Parameters:
mainProgram
- the main programlogger
- the logger- Returns:
- root node
- Throws:
RepositoryException
- if an error occurred
-
getSharedMetadataHolder
public ModifiableCompositeMetadata getSharedMetadataHolder(SubProgram mainProgram, String subProgramCode, org.slf4j.Logger logger) throws RepositoryException
Get the composite metadata holding the shared metadata for subprogram of given code- Parameters:
mainProgram
- the main programsubProgramCode
- the sub program codelogger
- the logger- Returns:
- the shared composite metadata
- Throws:
RepositoryException
- if an error occurred
-
isValidMetadataPath
public boolean isValidMetadataPath(ContentType cType, String metadataPath, org.slf4j.Logger logger)
Determines if the metadata path is a valid path from the given content type and eligible to merge- Parameters:
cType
- The content typemetadataPath
- The metadata pathlogger
- the logger- Returns:
- true if the metadata can be merged
-
-