/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.contentdata.custom.support; import org.jdom.Element; import com.enonic.cms.core.content.contentdata.ContentDataXPathCreator; import com.enonic.cms.core.content.contentdata.custom.RelationDataEntry; import com.enonic.cms.core.content.contentdata.custom.contentkeybased.FileDataEntry; import com.enonic.cms.core.content.contentdata.custom.relationdataentrylistbased.FilesDataEntry; public class FileDataEntryXmlCreator { public void createAndAddElement( Element parentEl, FilesDataEntry filesDataEntry, boolean inBlockGroup ) { final Element entryEl = ContentDataXPathCreator.ensurePath( parentEl, stripContentdataWhenNotBlockGroup( filesDataEntry.getConfig().getRelativeXPath(), inBlockGroup ) ); for ( final RelationDataEntry fileDataEntry : filesDataEntry.getEntries() ) { addFileElement( entryEl, fileDataEntry ); } } public void createAndAddElement( Element parentEl, FileDataEntry fileDataEntry, boolean inBlockGroup ) { final Element entryEl = ContentDataXPathCreator.ensurePath( parentEl, stripContentdataWhenNotBlockGroup( fileDataEntry.getConfig().getRelativeXPath(), inBlockGroup ) ); addFileElement( entryEl, fileDataEntry ); } private void addFileElement( Element entryEl, RelationDataEntry entry ) { final Element fileEl = new Element( "file" ); fileEl.setAttribute( "key", entry.getContentKey().toString() ); if ( entry.isMarkedAsDeleted() ) { fileEl.setAttribute( "deleted", "" + entry.isMarkedAsDeleted() ); } entryEl.addContent( fileEl ); } private String stripContentdataWhenNotBlockGroup( String xpath, boolean inBlockGroup ) { if ( !inBlockGroup && xpath.startsWith( "contentdata/" ) ) { return xpath.substring( "contentdata/".length() ); } else if ( !inBlockGroup && xpath.startsWith( "/contentdata/" ) ) { return xpath.substring( "/contentdata/".length() ); } return xpath; } }