/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.imports; import java.util.HashMap; import java.util.Map; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import com.enonic.cms.core.content.contenttype.CtyImportBlockConfig; import com.enonic.cms.core.content.contenttype.CtyImportMappingConfig; import com.enonic.cms.core.content.imports.sourcevalueholders.AbstractSourceValue; import com.enonic.cms.core.content.imports.sourcevalueholders.StringSourceValue; public class ImportDataEntry { private CtyImportMappingConfig syncMapping; private String syncValue; private final Map<CtyImportMappingConfig, AbstractSourceValue> configAndValue = new HashMap<CtyImportMappingConfig, AbstractSourceValue>(); private final Map<CtyImportMappingConfig, AbstractSourceValue> configAndMetadataValue = new HashMap<CtyImportMappingConfig, AbstractSourceValue>(); private final Multimap<CtyImportBlockConfig, ImportDataEntry> blockConfigAndValue = LinkedHashMultimap.create(); public ImportDataEntry( CtyImportMappingConfig syncMapping ) { this.syncMapping = syncMapping; } public void add( final CtyImportMappingConfig mapping, final AbstractSourceValue value ) { configAndValue.put( mapping, value ); if ( mapping.equals( syncMapping ) ) { setSyncValue( value ); } } public void addMetadata( final CtyImportMappingConfig mapping, final AbstractSourceValue value ) { configAndMetadataValue.put( mapping, value ); if ( mapping.equals( syncMapping ) ) { setSyncValue( value ); } } public void addBlock( final CtyImportBlockConfig block, final ImportDataEntry entry ) { blockConfigAndValue.put( block, entry ); } public String getSyncValue() { return syncValue; } public Map<CtyImportMappingConfig, AbstractSourceValue> getConfigAndValueMap() { return configAndValue; } public Map<CtyImportMappingConfig, AbstractSourceValue> getConfigAndMetadataValueMap() { return configAndMetadataValue; } public Multimap<CtyImportBlockConfig, ImportDataEntry> getBlockConfigAndValue() { return blockConfigAndValue; } private void setSyncValue( AbstractSourceValue value ) { if ( value instanceof StringSourceValue ) { this.syncValue = ( (StringSourceValue) value ).getValue(); } else { throw new ImportException( "Invalid source value type. Expected: " + StringSourceValue.class.getSimpleName() + ", Was: " + value.getClass().getSimpleName() ); } } }