public void Load() { var autoIndex = Convert.ToInt16(_process.MasterEntity == null ? 0 : new Fields(_process.MasterEntity.Fields, _process.MasterEntity.CalculatedFields).Count + 1); foreach (var f in _calculatedFields) { var field = new FieldReader(_process, _process.MasterEntity, false).Read(f); if (field.Index.Equals(short.MaxValue)) { field.Index = autoIndex; } field.Input = false; field.IsCalculated = true; field.Index = field.Index == 0 ? autoIndex : field.Index; _process.CalculatedFields.Add(field); foreach (var t in f.Transforms) { var factory = new TransformOperationFactory(_process, string.Empty); var parameters = new ProcessTransformParametersReader(_process, new DefaultFactory(_process.Logger)).Read(t); var operation = factory.Create(field, t, parameters); _process.TransformOperations.Add(operation); foreach (var parameter in parameters) { _process.Parameters[parameter.Key] = parameter.Value; } } autoIndex++; } }
public Entity Read(TflEntity element, short entityIndex) { var entity = new Entity() { ProcessName = _process.Name, Schema = element.Schema, PipelineThreading = DetermineThreading(element), Name = element.Name, Prefix = element.Prefix, Group = element.Group, Delete = element.Delete, PrependProcessNameToOutputName = element.PrependProcessNameToOutputName, Sample = element.Sample, DetectChanges = element.DetectChanges, TrimAll = element.TrimAll, NoLock = element.NoLock, Unicode = element.Unicode, VariableLength = element.VariableLength, SqlOverride = element.Query, SqlScriptOverride = element.Script, SqlKeysOverride = element.QueryKeys, Alias = string.IsNullOrEmpty(element.Alias) ? element.Name : element.Alias, InputOperation = element.InputOperation, Index = entityIndex }; // wire up connections if (_process.Connections.Contains(element.Connection)) { entity.Input.Add(_process.Connections.GetConnectionByName(element.Connection).NamedConnection()); } else { _process.Logger.EntityWarn(element.Name, "Could not find connection '{0}'.", element.Connection); } //needs an input connection GuardAgainstMissingFields(element, entity, entityIndex); //fields short autoIndex = 0; foreach (TflField f in element.Fields) { var fieldType = GetFieldType(f, entityIndex == 0); var field = new FieldReader(_process, entity).Read(f, fieldType); if (field.Index.Equals(short.MaxValue)) { field.Index = autoIndex; } entity.Fields.Add(field); if (f.PrimaryKey) { entity.PrimaryKey.Add(field); } autoIndex++; } foreach (var cf in element.CalculatedFields) { var fieldReader = new FieldReader(_process, entity, usePrefix: false); var fieldType = GetFieldType(cf, entityIndex == 0); var field = fieldReader.Read(cf, fieldType); if (field.Index.Equals(short.MaxValue)) { field.Index = autoIndex; } field.IsCalculated = true; field.Input = false; entity.CalculatedFields.Add(field); if (cf.PrimaryKey) { entity.PrimaryKey.Add(field); } autoIndex++; } //depend on fields LoadVersion(element, entity); LoadFilter(element.Filter, entity, _process.Logger); entity.Input.AddRange(PrepareIo(element.Input, entity.Fields)); entity.Output = PrepareIo(element.Output, entity.Fields); return entity; }
public Entity Read(TflEntity element, short entityIndex) { var entity = new Entity() { ProcessName = _process.Name, Schema = element.Schema, PipelineThreading = DetermineThreading(element), Name = element.Name, Prefix = element.Prefix, Group = element.Group, Delete = element.Delete, PrependProcessNameToOutputName = element.PrependProcessNameToOutputName, Sample = element.Sample, DetectChanges = element.DetectChanges, TrimAll = element.TrimAll, NoLock = element.NoLock, Unicode = element.Unicode, VariableLength = element.VariableLength, SqlOverride = element.Query, SqlScriptOverride = element.Script, SqlKeysOverride = element.QueryKeys, Alias = string.IsNullOrEmpty(element.Alias) ? element.Name : element.Alias, InputOperation = element.InputOperation, Index = entityIndex }; // wire up connections if (_process.Connections.Contains(element.Connection)) { entity.Input.Add(_process.Connections.GetConnectionByName(element.Connection).NamedConnection()); } else { _process.Logger.EntityWarn(element.Name, "Could not find connection '{0}'.", element.Connection); } //needs an input connection GuardAgainstMissingFields(element, entity, entityIndex); //fields short autoIndex = 0; foreach (TflField f in element.Fields) { var fieldType = GetFieldType(f, entityIndex == 0); var field = new FieldReader(_process, entity).Read(f, fieldType); if (field.Index.Equals(short.MaxValue)) { field.Index = autoIndex; } entity.Fields.Add(field); if (f.PrimaryKey) { entity.PrimaryKey.Add(field); } autoIndex++; } foreach (var cf in element.CalculatedFields) { var fieldReader = new FieldReader(_process, entity, usePrefix: false); var fieldType = GetFieldType(cf, entityIndex == 0); var field = fieldReader.Read(cf, fieldType); if (field.Index.Equals(short.MaxValue)) { field.Index = autoIndex; } field.IsCalculated = true; field.Input = false; entity.CalculatedFields.Add(field); if (cf.PrimaryKey) { entity.PrimaryKey.Add(field); } autoIndex++; } //depend on fields LoadVersion(element, entity); LoadFilter(element.Filter, entity, _process.Logger); entity.Input.AddRange(PrepareIo(element.Input, entity.Fields)); entity.Output = PrepareIo(element.Output, entity.Fields); return(entity); }