Development Examples

How to create an Article Structure Map entry on an Article Type based entity.

private void mapArticleToStructureGroup( ArticleProxy article, String structureGroupIdentifier,
RevisionToken revisionToken, AccumulatedFeedbackProcessor feedbackProcessor )
throws CoreException
{
RepositoryService repositoryService = RepositoryComponent.getRepositoryService();
EntityType articleEntityType = article.getEntityType();
EntityType articleStructureMapEntityType = repositoryService.getEntityTypeByIdentifier( "ArticleStructureMapType" ); //$NON-NLS-1$
Entity articleEntity = article.getEntity();
Entity articleStructureMapEntity = repositoryService.getEntityByIdentifier( "ArticleStructureMap" ); //$NON-NLS-1$
 
LoadHint articleWithASMLoadHint = new LoadHintBuilder( articleEntityType ).add( articleStructureMapEntityType,
false )
.build();
EntityDetailModel articleDetailModel = article.getDetailModel( articleWithASMLoadHint, true, revisionToken );
 
articleDetailModel.acquireWrite( null );
try
{
EDataObject articleDataObject = articleDetailModel.getDataObject();
 
EntityPath articleStructureMapEntityPath = new EntityPath( articleStructureMapEntityType );
articleStructureMapEntityPath.setLogicalKeyValue( "ArticleStructureMapType.LK.StructureId", structureGroup.getContainer().getId() ); //$NON-NLS-1$
FieldPath manualMapFieldPath = new FieldPath( articleStructureMapEntityPath, "ArticleStructureMapType.ManualMap" ); //$NON-NLS-1$
 
List< String > manualMapValue = new ArrayList<>();
manualMapValue.add( structureGroupIdentifier );
 
CommandContextParam commandContextParam = new CommandContextParam( articleEntity, articleDetailModel );
commandContextParam.setFeedbackProcessor( feedbackProcessor );
CommandContext commandContext = CommandContextFactory.createContext( commandContextParam );
PutCommand putCommand = ( PutCommand ) commandContext.getCommand( PutCommand.TYPE );
putCommand.put( commandContext, articleDataObject, articleDataObject, articleStructureMapEntity,
manualMapFieldPath, manualMapValue, true );
 
if ( commandContext.isCanceled() )
{
// do error handling, e.g. get the errors through feedbackProcessor.getFeedbacks()
}
else
{
articleDetailModel.save( null );
}
}
catch ( CoreException ce )
{
// do error handling, e.g. log or rethrow exception
}
finally
{
articleDetailModel.releaseWrite();
}
}