public static EnumerableFunc FuncAdd(this IColumnProcess tool, EnumerableFunc func, bool isexecute, Analyzer analyzer) { AnalyzeItem analyzeItem = null; analyzeItem = analyzer?.Set(tool); try { tool.SetExecute(isexecute); if (analyzeItem != null) { analyzeItem.HasInit = tool.Init(new List <IFreeDocument>()); } } catch (Exception ex) { if (analyzeItem != null) { analyzeItem.HasInit = false; } XLogSys.Print.Error(string.Format(GlobalHelper.Get("key_209"), tool.Column, tool.TypeName, ex.Message)); return(func); } if (!tool.Enabled) { return(func); } if (tool is IColumnDataTransformer) { var ge = tool as IColumnDataTransformer; var func1 = func; func = source => { var source2 = func1(source).CountInput(analyzeItem); if (ge.IsMultiYield) { return(ge.TransformManyData(source2, analyzeItem).CountOutput(analyzeItem)); } ; return(source2.Select(input => { var now = DateTime.Now; var result = Transform(ge, input, analyzeItem); if (analyzeItem != null) { analyzeItem.RunningTime = DateTime.Now - now; } return result; }).CountOutput(analyzeItem)); }; } if (tool is IColumnGenerator) { var ge = tool as IColumnGenerator; var func1 = func; switch (ge.MergeType) { case MergeType.Append: func = source => source.CountInput(analyzeItem).ConcatPlus(func1, ge).CountOutput(analyzeItem); break; case MergeType.Cross: func = source => func1(source.CountInput(analyzeItem)).Cross(ge.Generate).CountOutput(analyzeItem); break; case MergeType.Merge: func = source => func1(source.CountInput(analyzeItem)).MergeAll(ge.Generate()).CountOutput(analyzeItem); break; case MergeType.Mix: func = source => func1(source.CountInput(analyzeItem)).Mix(ge.Generate()).CountOutput(analyzeItem); break; } } if (tool is IDataExecutor && isexecute) { var ge = tool as IDataExecutor; var func1 = func; func = source => ge.Execute(func1(source.CountInput(analyzeItem))).CountOutput(analyzeItem); } else if (tool is IColumnDataFilter) { var t = tool as IColumnDataFilter; if (t.TypeName == GlobalHelper.Get("key_210")) { dynamic range = t; var func1 = func; func = source => func1(source.CountInput(analyzeItem)).Skip((int)range.Skip).Take((int)range.Take) .CountOutput(analyzeItem); } else { var func1 = func; switch (t.FilterWorkMode) { case FilterWorkMode.PassWhenSuccess: func = source => func1(source.CountInput(analyzeItem)) .SkipWhile(t.FilteData) .CountOutput(analyzeItem); break; case FilterWorkMode.ByItem: func = source => func1(source.CountInput(analyzeItem)).Where(t.FilteData).CountOutput(analyzeItem); break; case FilterWorkMode.StopWhenFail: func = source => func1(source.CountInput(analyzeItem)) .TakeWhile(t.FilteData) .CountOutput(analyzeItem); break; } } } if (isexecute == false) { var func1 = func; func = source => tool.CheckDatas(func1(source)); } return(func); }
public static T GetTask <T>(this IColumnProcess process, string name) where T : class, IDataProcess { var moduleName = (typeof(T) == typeof(SmartETLTool)) ? GlobalHelper.Get("smartetl_name") : GlobalHelper.Get("smartcrawler_name"); if (String.IsNullOrEmpty(name)) { return(null); } var process_name = process?.TypeName; if (process_name != null && String.IsNullOrEmpty(name)) { XLogSys.Print.Error(String.Format(GlobalHelper.Get("key_203"), process_name)); return(default(T)); } var processManager = MainDescription.MainFrm.PluginDictionary["DataProcessManager"] as IProcessManager; var module = processManager.GetTask <T>(name); if (module == null) { XLogSys.Print.Error(String.Format(GlobalHelper.Get("not_find_module"), name, moduleName, process_name)); return(null); } return(module); }
public static IEnumerable <CustomPropertyInfo> GetToolProperty(Type tool, Object instance = null, bool mustBrowsable = true) { Object newinstance; if (instance == null) { instance = PluginProvider.GetObjectInstance(tool); newinstance = instance; } else { newinstance = PluginProvider.GetObjectInstance(tool); } var propertys = tool.GetProperties().Where( d => d.CanRead && d.CanWrite && AttributeHelper.IsEditableType(d.PropertyType)).ToArray(); foreach (var propertyInfo in propertys.OrderBy(GetOrder)) { var name = propertyInfo.Name; if (name == "ObjectID" || name == "Enabled" || name == "ColumnSelector") { continue; } var property = new CustomPropertyInfo(); string typeName = null; var defaultValue = GetDefaultValue(propertyInfo, newinstance, out typeName); var currentValue = GetDefaultValue(propertyInfo, instance, out typeName); property.CurrentValue = currentValue; property.DefaultValue = defaultValue; var desc = GlobalHelper.Get("no_desc"); // var fi =type.GetField(propertyInfo.Name); var browseable = (BrowsableAttribute[])propertyInfo.GetCustomAttributes(typeof(BrowsableAttribute), false); if (browseable.Length > 0 && browseable[0].Browsable == false && mustBrowsable) { continue; } var descriptionAttributes = (LocalizedDescriptionAttribute[])propertyInfo.GetCustomAttributes( typeof(LocalizedDescriptionAttribute), false); var nameAttributes = (LocalizedDisplayNameAttribute[])propertyInfo.GetCustomAttributes( typeof(LocalizedDisplayNameAttribute), false); if (nameAttributes.Length > 0) { name = GlobalHelper.Get(nameAttributes[0].DisplayName); } if (descriptionAttributes.Length > 0) { desc = GlobalHelper.Get(descriptionAttributes[0].Description); } desc = string.Join("\n", desc.Split('\n').Select(d => d.Trim('\t', ' '))); property.Desc = desc; property.Name = name; property.DefaultValue = defaultValue; property.OriginName = propertyInfo.Name; property.TypeName = typeName; yield return(property); } }