Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }