public override IScriptCommand Execute(IParameterDic pm) { object source = pm.Get <object>(SourceVariableKey); if (source == null) { logger.Error("Source not found."); } if (ValueConverterKey != null) { object valueConverter = pm.Get <object>(ValueConverterKey); if (valueConverter is Func <object, object> ) //GetProperty, ExecuteMethod, GetArrayItem { Func <object, object> valueConverterFunc = valueConverter as Func <object, object>; object value = valueConverterFunc(source); pm.Set(DestinationVariableKey, value, SkipIfExists); } else if (valueConverter is Action <object, object> ) //SetProperty { Action <object, object> valueConverterAct = valueConverter as Action <object, object>; object value = pm.Get <object>(DestinationVariableKey); valueConverterAct(source, value); } } else { pm.Set(DestinationVariableKey, source, SkipIfExists); } return(NextCommand); }
public override IScriptCommand Execute(IParameterDic pm) { object value = Value; if (ValueFunc != null) { value = ValueFunc(); } if (value is string) { string valueString = (string)value; if (valueString.StartsWith("{") && valueString.EndsWith("}")) { value = pm.Get(valueString); } } if (pm.Set <Object>(VariableKey, value, SkipIfExists)) { logger.Debug(String.Format("{0} = {1}", VariableKey, value)); } // else logger.Debug(String.Format("Skipped {0}, already exists.", VariableKey)); return(NextCommand); }
public override async Task <IScriptCommand> ExecuteAsync(IParameterDic pm) { IEnumerable e = pm.Get <IEnumerable>(ItemsKey); if (e == null) { return(ResultCommand.Error(new ArgumentException(ItemsKey))); } IProgress <TransferProgress> progress = NullProgress <TransferProgress> .Instance; if (IsProgressEnabled) { List <object> list; e = list = e.Cast <object>().ToList(); progress = pm.Progress <TransferProgress>(); progress.Report(TransferProgress.IncrementTotalEntries(list.Count)); } uint counter = 0; pm.Set <bool>(BreakKey, false); foreach (var item in e) { if (pm.Get <bool>(BreakKey)) { break; } counter++; pm.Set(CurrentItemKey, item); await ScriptRunner.RunScriptAsync(pm, NextCommand); progress.Report(TransferProgress.IncrementProcessedEntries()); if (pm.Error() != null) { pm.Set <Object>(CurrentItemKey, null); return(ResultCommand.Error(pm.Error())); } } logger.Info(String.Format("Looped {0} items", counter)); pm.Set <Object>(CurrentItemKey, null); return(ThenCommand); }
/// <summary> /// Subtract specified values to the value assigned to the parameter dic. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dic"></param> /// <param name="variableKey"></param> /// <param name="values"></param> /// <returns></returns> public static T Subtract <T>(this IParameterDic dic, string variableKey, params T[] values) { T retValue = dic.Get <T>(variableKey, default(T)); foreach (T value in values) { retValue = ExpressionUtils.Subtract <T>(value, retValue); } dic.Set <T>(variableKey, retValue); return(retValue); }
public static void ScriptRunner(this IParameterDic dic, IScriptRunner runner) { dic.Set <IScriptRunner>(VariableKeys.ScriptRunner, runner); }
public static void Error(this IParameterDic dic, Exception error) { dic.Set <Exception>(VariableKeys.Error, error); }
internal static void IsHandled(this IParameterDic dic, bool value) { dic.Set <bool>(VariableKeys.IsHandled, value); }
public static void Progress <T>(this IParameterDic dic, IProgress <T> progress) { dic.Set(getProgressVariable <T>(), progress); }