/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.contentdata.custom; /** * Apr 21, 2010 */ public class BlockGroupDataEntriesModifier { private BlockGroupDataEntries existing; private boolean purge; public BlockGroupDataEntriesModifier( BlockGroupDataEntries existing, boolean purge ) { this.existing = existing; this.purge = purge; } public BlockGroupDataEntries modify( final BlockGroupDataEntries modifyingBlockGroupDataEntries ) { BlockGroupDataEntries modifiedEntries = new BlockGroupDataEntries( existing.getBlockName() ); for ( GroupDataEntry existingGroupDataEntry : existing.getGroupDataEntries() ) { int index = existingGroupDataEntry.getGroupIndex(); GroupDataEntry modifyingGroupDataEntry = modifyingBlockGroupDataEntries.getGroupDataEntry( index ); if ( modifyingGroupDataEntry == null ) { boolean keepExistingEntry = !purge; if ( keepExistingEntry ) { modifiedEntries.add( existingGroupDataEntry ); } } else { GroupDataEntryModifier groupDataEntryModifier = new GroupDataEntryModifier( existingGroupDataEntry ); modifiedEntries.add( groupDataEntryModifier.modify( modifyingGroupDataEntry ) ); } } for ( GroupDataEntry newEntry : modifyingBlockGroupDataEntries.getGroupDataEntries() ) { if ( !modifiedEntries.hasEntry( newEntry ) ) { modifiedEntries.add( newEntry ); } } modifiedEntries.reorganizeBySuccesiveIndexOrder(); return modifiedEntries; } }