public void TransformCopyIntoParameters(Entity entity = null) { if (RequiresCopyParameters()) { if (!Transforms.Any()) { Transforms.Add(new Operation { Method = "copy" }); } var first = Transforms.First(); var expression = Utility.Split(T, ExpressionSplitter)[0]; var parameters = Utility.Split(expression.Substring(expression.IndexOf('(') + 1), ','); foreach (var p in parameters) { var parameter = new Parameter(); var modified = p.EndsWith(")") ? p.Substring(0, p.Length - 1) : p; if (modified.Contains(":")) { //named values var named = modified.Split(':'); parameter.Name = named[0]; parameter.Value = named[1]; } else if (modified.Contains(".")) { // entity, field combinations var dotted = modified.Split('.'); parameter.Entity = dotted[0]; parameter.Field = dotted[1]; } else { parameter.Field = modified; // just fields if (entity != null) { parameter.Entity = entity.Alias; } } first.Parameters.Add(parameter); } // hack if (first.Parameters.Count == 1 && first.Parameters.First().Field == "*") { first.Parameter = "*"; first.Parameters.Clear(); } } }
public virtual IEnumerable <IRow> Read() { Context.Debug(() => $"Running {Transforms.Count} transforms."); if (Context.Entity.NeedsUpdate()) { if (Context.Process.Mode != "init") { if (Context.Entity.Version != string.Empty) { var version = Context.Entity.GetVersionField(); if (version.Type == "byte[]") { var min = Context.Entity.MinVersion == null ? "null" : Utility.BytesToHexViaLookup32((byte[])Context.Entity.MinVersion).TrimStart(new[] { '0' }); var max = Context.Entity.MaxVersion == null ? "null" : Utility.BytesToHexViaLookup32((byte[])Context.Entity.MaxVersion).TrimStart(new[] { '0' }); Context.Info("Change Detected: Input:{0} > Output:{1}", max, min); } else { Context.Info("Change Detected: Input:{0} > Output:{1}", Context.Entity.MaxVersion ?? "null", Context.Entity.MinVersion ?? "null"); } } } var data = Reader == null?InputProvider.Read() : Reader.Read(); #if NETS10 // no PLINQ #else if (Context.Entity.Pipeline == "parallel.linq") { data = data.AsParallel(); } #endif if (Transforms.Any()) { data = Transforms.Aggregate(data, (rows, t) => t.Operate(rows)); } if (Validators.Any()) { data = Validators.Aggregate(data, (rows, v) => v.Operate(rows)); } return(data); } Context.Info("Change Detected: No."); return(Enumerable.Empty <IRow>()); }
public virtual IEnumerable <IRow> Read() { Context.Debug(() => $"Running {Transforms.Count} transforms."); if (Context.Entity.NeedsUpdate()) { if (Context.Process.Mode != "init") { if (Context.Entity.Version != string.Empty) { if (Context.Entity.GetVersionField().Type == "byte[]") { var min = Context.Entity.MinVersion == null ? "null" : "0x" + string.Format("{0:X}", Utility.BytesToHexString((byte[])Context.Entity.MinVersion).TrimStart(new[] { '0' })); var max = Context.Entity.MaxVersion == null ? "null" : "0x" + string.Format("{0:X}", Utility.BytesToHexString((byte[])Context.Entity.MaxVersion).TrimStart(new[] { '0' })); Context.Info("Change Detected: Input: {0} > Output: {1}", max, min); } else { Context.Info("Change Detected: Input: {0} > Output: {1}", Context.Entity.MaxVersion, Context.Entity.MinVersion); } } } var data = Reader == null?InputProvider.Read() : Reader.Read(); if (Transforms.Any()) { data = Transforms.Aggregate(data, (rows, t) => t.Operate(rows)); } if (Validators.Any()) { data = Validators.Aggregate(data, (rows, v) => v.Operate(rows)); } return(data); } Context.Info("Change Detected: No."); return(Enumerable.Empty <IRow>()); }
public void TransformCopyIntoParameters(Entity entity = null) { if (RequiresCopyParameters()) { if (!Transforms.Any()) { Transforms.Add(new Transform { Method = "copy" }); } var first = Transforms.First(); var expression = Utility.Split(T, ExpressionSplitter)[0]; var parameters = Utility.Split(expression.Substring(expression.IndexOf('(') + 1), ','); foreach (var p in parameters) { var parameter = new Parameter(); var modified = p.TrimEnd(')'); if (modified.Contains(":")) { //named values var named = modified.Split(':'); parameter.Name = named[0]; parameter.Value = named[1]; } else if (modified.Contains(".")) { // entity, field combinations var dotted = modified.Split('.'); parameter.Entity = dotted[0]; parameter.Field = dotted[1]; } else { parameter.Field = modified; // just fields if (entity != null) { parameter.Entity = entity.Alias; } } first.Parameters.Add(parameter); } // hack if (first.Parameters.Count == 1 && first.Parameters.First().Field == "*") { first.Parameter = "*"; first.Parameters.Clear(); } } // e.g. t="copy(x).is(int).between(3,5), both is() and between() should refer to x. if (RequiresCompositeValidator()) { var first = Transforms.First(); foreach (var transform in Transforms.Skip(1)) { transform.Parameter = transform.Parameter == string.Empty ? first.Parameter : transform.Parameter; transform.Parameters = transform.Parameters.Count == 0 ? first.Parameters : transform.Parameters; } } }
bool RequiresCopyParameters() { return(T.StartsWith("copy(", StringComparison.Ordinal) && Transforms.Any()); }