private IEnumerable <EntityTypeAsset> AssembleEntityTypes( Type externalSystem, EntityTypeSuite entityTypes, ConnectorSuite sinks, ConnectorSuite cacheFeeds, IDictionary <Type, ExternalSystemAsset> externalSystemAssetsByType) { return (entityTypes .DestinationSystemEntityTypes[externalSystem] .Keys .Select(entityType => new EntityTypeAsset( entityType, entityTypes .DestinationSystemEntityTypes[externalSystem][entityType] .Attribute, new SharedIdentifierSourceSystemsProvider( externalSystemAssetsByType, entityTypes .DestinationSystemEntityTypes[externalSystem][entityType] .SharedSourceSystemIdentifiersAttributes), this.GetEntityTypeSink(entityType, externalSystem, sinks), this.GetEntityTypeCacheFeed(entityType, externalSystem, cacheFeeds))) .ToArray()); }
private Type GetConnector( Type entityType, Type externalSystem, ConnectorSuite connectors, string notFoundExceptionMessageFormat = null) { Type connector; if (connectors.EntityTypeConnectors.ContainsKey(entityType)) { connector = connectors.EntityTypeConnectors[entityType]; } else if (connectors.DestinationSystemConnectors.ContainsKey(externalSystem)) { connector = connectors.DestinationSystemConnectors[externalSystem]; } else if (notFoundExceptionMessageFormat != null) { throw new InvalidOperationException(string.Format( notFoundExceptionMessageFormat, entityType.FullName)); } else { connector = null; } return(connector); }
private IDictionary <Type, ExternalSystemAsset> AssembleExternalSystems( IDictionary <Type, ExternalSystemAttribute> externalSystems, IDictionary <Type, SourceSystemParametersAttribute> sourceSystemParameters, EntityTypeSuite entityTypes, ConnectorSuite sinks, ConnectorSuite cacheFeeds) { var externalSystemAssetsByType = new Dictionary <Type, ExternalSystemAsset>(); foreach (Type externalSystem in externalSystems.Keys) { externalSystemAssetsByType.Add( externalSystem, new ExternalSystemAsset( externalSystem, externalSystems[externalSystem], this.Get(externalSystem, sourceSystemParameters), this.AssembleEntityTypes( externalSystem, entityTypes, sinks, cacheFeeds, externalSystemAssetsByType))); } return(externalSystemAssetsByType); }
private Type GetEntityTypeSink( Type entityType, Type externalSystem, ConnectorSuite sinks) { return(this.GetConnector( entityType, externalSystem, sinks, Resources.NoSinkExistsForEntityType)); }
private AssetSuite AssembleAssets( IDictionary <Type, ExternalSystemAttribute> externalSystems, IDictionary <Type, SourceSystemParametersAttribute> sourceSystemParameters, EntityTypeSuite entityTypes, ConnectorSuite sinks, ConnectorSuite cacheFeeds, IEnumerable <Feed> feeds) { IDictionary <Type, ExternalSystemAsset> externalSystemAssetsByType = this.AssembleExternalSystems( externalSystems, sourceSystemParameters, entityTypes, sinks, cacheFeeds); return(new AssetSuite( externalSystemAssetsByType.Values, this.AssembleFeeds(feeds, externalSystemAssetsByType))); }
/// <summary> /// Assembles the suite of assets (i.e., external systems, entity types, feeds, /// etc.) found in all currently loaded assemblies. /// </summary> /// <returns>The suite of assets assembled.</returns> public AssetSuite AssembleAssets() { AssetSuite assetSuite; IDictionary <Type, ExternalSystemAttribute> externalSystems = this.GetExternalSystems(); IDictionary <Type, SourceSystemParametersAttribute> sourceSystemParameters = this.assetExtractor.GetSourceSystemParameters(); EntityTypeSuite entityTypes = this.GetEntityTypes(externalSystems); ConnectorSuite sinks = this.GetSinks(externalSystems, entityTypes); ConnectorSuite cacheFeeds = this.GetCacheFeeds(externalSystems, entityTypes); IEnumerable <Feed> feeds = this.GetFeeds(externalSystems, entityTypes); assetSuite = this.AssembleAssets( externalSystems, sourceSystemParameters, entityTypes, sinks, cacheFeeds, feeds); this.ValidateAssetSuite(assetSuite); return(assetSuite); }
private Type GetEntityTypeCacheFeed( Type entityType, Type externalSystem, ConnectorSuite cacheFeeds) { return(this.GetConnector(entityType, externalSystem, cacheFeeds)); }