/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.contentdata.custom; /** * Mar 23, 2010 */ public class GroupDataEntryModifier { private GroupDataEntry existing; public GroupDataEntryModifier( GroupDataEntry existing ) { this.existing = existing; } public GroupDataEntry modify( GroupDataEntry modifyingGroupDataEntry ) { if ( modifyingGroupDataEntry == null ) { throw new IllegalArgumentException( "Given modifyingGroupDataEntry cannot be null" ); } boolean noNeedToModify = modifyingGroupDataEntry.hasAllDataEntries(); if ( noNeedToModify ) { return modifyingGroupDataEntry; } GroupDataEntry modifiedGroupDataEntry = new GroupDataEntry( existing.getName(), existing.getXPath(), existing.getGroupIndex() ); modifiedGroupDataEntry.setConfig( existing.getConfig() ); // add all new ones for ( DataEntry newDataEntry : modifyingGroupDataEntry.getEntries() ) { modifiedGroupDataEntry.add( newDataEntry ); } // add existing ones that is not already added for ( DataEntry existingDataEntry : existing.getEntries() ) { boolean dataEntryNotAlreadyAdded = modifiedGroupDataEntry.getEntry( existingDataEntry.getName() ) == null; if ( dataEntryNotAlreadyAdded ) { modifiedGroupDataEntry.add( existingDataEntry ); } } return modifiedGroupDataEntry; } }