コード例 #1
0
ファイル: ExpressionTestBase.cs プロジェクト: jblacker/Flee
        protected ExpressionTestBase()
        {
            this.myValidExpressionsOwner = new ExpressionOwner();
            this.myValidExpressionsOwner = new ExpressionOwner();
            this.myGenericContext        = this.CreateGenericContext(this.myValidExpressionsOwner);
            var context = new ExpressionContext(this.myValidExpressionsOwner);

            context.Options.OwnerMemberAccess = BindingFlags.Public | BindingFlags.NonPublic;
            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(Convert), "Convert");
            context.Imports.AddType(typeof(Guid));
            context.Imports.AddType(typeof(Version));
            context.Imports.AddType(typeof(DayOfWeek));
            context.Imports.AddType(typeof(DayOfWeek), "DayOfWeek");
            context.Imports.AddType(typeof(ValueType));
            context.Imports.AddType(typeof(IComparable));
            context.Imports.AddType(typeof(ICloneable));
            context.Imports.AddType(typeof(Array));
            context.Imports.AddType(typeof(Delegate));
            context.Imports.AddType(typeof(AppDomainInitializer));
            context.Imports.AddType(typeof(Encoding));
            context.Imports.AddType(typeof(ASCIIEncoding));
            context.Imports.AddType(typeof(ArgumentException));
            this.myValidCastsContext = context;
            TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(int))), typeof(int));
            TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(string))),
                                       typeof(string));
            this.Initialize();
        }
コード例 #2
0
        public ExpressionTests()
        {
            // Set the correct culture, otherwise tests will fail
            Thread.CurrentThread.CurrentCulture = TestCulture;

            MyValidExpressionsOwner = new ExpressionOwner();

            MyGenericContext = this.CreateGenericContext(MyValidExpressionsOwner);

            var context = new ExpressionContext(MyValidExpressionsOwner);

            context.Options.OwnerMemberAccess = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic;
            context.Imports.ImportBuiltinTypes();
            context.Imports.AddType(typeof(Convert), "Convert");
            context.Imports.AddType(typeof(Guid));
            context.Imports.AddType(typeof(Version));
            context.Imports.AddType(typeof(DayOfWeek));
            context.Imports.AddType(typeof(DayOfWeek), "DayOfWeek");
            context.Imports.AddType(typeof(ValueType));
            context.Imports.AddType(typeof(IComparable));
            context.Imports.AddType(typeof(ICloneable));
            context.Imports.AddType(typeof(Array));
            context.Imports.AddType(typeof(System.Delegate));
            // context.Imports.AddType(typeof(AppDomainInitializer));
            context.Imports.AddType(typeof(System.Text.Encoding));
            context.Imports.AddType(typeof(System.Text.ASCIIEncoding));
            context.Imports.AddType(typeof(ArgumentException));

            MyValidCastsContext = context;

            // For testing virtual properties
            TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(int))), typeof(int));
            TypeDescriptor.AddProvider(new UselessTypeDescriptionProvider(TypeDescriptor.GetProvider(typeof(string))), typeof(string));

            this.Initialize();
        }
コード例 #3
0
        public ExpressionNodeCompilationResultCollection Execute(string xmlExpression, object itemContext, ExpressionOwner expressionOwner, IList<ExpressionFieldIntermediateAssistant> fieldsIntermediateList)
        {
#if !SILVERLIGHT

            var filter = new Dictionary<string, string>
                {
                    { "this", "context" }
                };

            if (fieldsIntermediateList != null)
            {
                filter.Add("Utils.CurrentUserName", "((dynamic)context).CurrentUserName");
                filter.Add("Utils.CurrentUserFullName", "((dynamic)context).CurrentUserFullName");
                filter.Add("Utils.CurrentUserPersonId", "((dynamic)context).CurrentUserPersonId");
                filter.Add("Utils.CurrentUserEmailAddress", "((dynamic)context).CurrentUserEmailAddress");
                filter.Add("Utils.CurrentUserFirstName", "((dynamic)context).CurrentUserFirstName");
                filter.Add("Utils.CurrentUserLastName", "((dynamic)context).CurrentUserLastName");
                filter.Add("Utils.CurrentUserBusinessUnitId", "((dynamic)context).CurrentUserBusinessUnitId");
                filter.Add("Utils.CurrentUserBusinessUnit", "((dynamic)context).CurrentUserBusinessUnit");
                filter.Add("Utils.CurrentUserClientIP", "((dynamic)context).CurrentUserClientIP");
                filter.Add("Utils.CurrentUserDeviceName", "((dynamic)context).CurrentUserDeviceName");
                filter.Add("Utils.CurrentUserRolesList", "((dynamic)context).CurrentUserRolesList");
                filter.Add("Utils.CurrentUserLocale", "((dynamic)context).CurrentUserLocale");
            }

            var result = new ExpressionNodeCompilationResultCollection();

            if (expressionOwner != ExpressionOwner.Trigger)
            {
                var sharpCode = PrepareScriptFromXml(xmlExpression, filter);
                var value = BuildAndExecute(xmlExpression, itemContext, fieldsIntermediateList,  sharpCode);
                result.Add(value);
                return result;
            }

            var destinations = PrepareScriptForMultipleDestinations(xmlExpression, new object());
            
            foreach (var destination in destinations)
            {
                var value = BuildAndExecute(xmlExpression, itemContext, fieldsIntermediateList, destination.Value);
                result.Add(value);
            }

            return result;

#else
            return null;
#endif
        }
コード例 #4
0
        public void Prepare(IProcessEdit process, IList<SourceField> fields, string xml, ExpressionOwner expressionOwner, Action onClosedChildWindow)
        {
            if (process == null)
                throw new ArgumentNullException("process");

            if (fields == null)
            {
                return;
            }

            Xml = xml;
            ExpressionOwner = expressionOwner;
            OnClosedWindow = onClosedChildWindow;

            var fieldEdits = process.GetAllFields().ToList();

            foreach (var field in fields)
            {
                if (field.InnerName == Constants.SampleNumeric
                    || field.InnerName == Constants.SampleBoolean
                    || field.InnerName == Constants.SampleAlphanumeric)
                {
                    continue;
                }

                ExportLifetimeContext<IFieldViewModel> vm = null;

                switch (field.DataType)
                {
                    case NodeDataType.DateTime:
                        var dateTimeFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DateTimeFieldViewModel));
                        if (dateTimeFieldViewModel != null)
                        {
                            vm = dateTimeFieldViewModel.CreateExport();

                            var dateFieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == field.InnerName);
                            if (dateFieldEdit != null)
                            {
                                var step = dateFieldEdit.GetStep<DateRequiredSettingsStepEdit>();
                                if (step != null)
                                    ((DateTimeFieldViewModel)vm.Value).DateTimeFormat = step.SelectedDateTimeFormat;
                            }
                        }
                        break;

                    case NodeDataType.String:
                        var textFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(TextFieldViewModel));
                        if (textFieldViewModel != null)
                        {
                            vm = textFieldViewModel.CreateExport();
                        }
                        break;

                    case NodeDataType.Boolean:
                        var boolFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(BoolFieldViewModel));
                        if (boolFieldViewModel != null)
                        {
                            vm = boolFieldViewModel.CreateExport();
                        }
                        break;

                    case NodeDataType.Int:
                        var intFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof (IntegerFieldViewModel));
                        if (intFieldViewModel != null)
                        {
                            vm = intFieldViewModel.CreateExport();
                        }
                        break;
                    case NodeDataType.Double:
                    case NodeDataType.Decimal:
                    case NodeDataType.Result:
                        if (field.SetName == SourceFieldSetNames.MsaItem)
                        {
                            var numericFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DecimalFieldViewModel));
                            if (numericFieldViewModel != null)
                            {
                                vm = numericFieldViewModel.CreateExport();
                                ((DecimalFieldViewModel)vm.Value).NumberOfDigits = 5;
                            }
                        }
                        else
                        {
                            var numericFieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == field.InnerName);
                            if (numericFieldEdit != null)
                            {
                                if (numericFieldEdit.ColumnType != ColumnTypes.Integer)
                                {
                                    var numericFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(DecimalFieldViewModel));
                                    if (numericFieldViewModel != null)
                                    {
                                        var step = (NumericRequiredStepEdit)numericFieldEdit.StepList.First(x => x is NumericRequiredStepEdit);

                                        vm = numericFieldViewModel.CreateExport();
                                        ((DecimalFieldViewModel)vm.Value).NumberOfDigits = step.NumberOfDigits;
                                    }
                                }
                            }
                        }
                        break;

                    case NodeDataType.GageRR:
                        var msaFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(GageRRFieldViewModel));
                        if (msaFieldViewModel != null)
                        {
                            vm = msaFieldViewModel.CreateExport();
                        }
                        break;

                    case NodeDataType.List:
                        if (field.SetName == SourceFieldSetNames.Item) 
                        { 
                            var systemName = field.DataType == NodeDataType.List ? field.InnerName.Replace("List", null) : field.InnerName;
                            var fieldEdit = fieldEdits.FirstOrDefault(x => x.SystemName == systemName);

                            if (fieldEdit != null && fieldEdit.ColumnType == ColumnTypes.Sample)
                            {
                                var sampleFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(SampleFieldViewModel));
                                if (sampleFieldViewModel != null)
                                {
                                    vm = sampleFieldViewModel.CreateExport();

                                    var sampleField = fields.FirstOrDefault(x => x.ParentField != null && x.ParentField.Id == field.Id);
                                    if (sampleField != null)
                                    {
                                        ((SampleFieldViewModel)vm.Value).DataType = sampleField.DataType;
                                    }

                                    var step = (SampleFieldStepEdit)fieldEdit.StepList.First(x => x is SampleFieldStepEdit);

                                    var sampleSizeField = fieldEdits.FirstOrDefault(x => x.SystemName == step.SampleSizeFieldName);
                                    if (sampleSizeField != null)
                                    {
                                        ((SampleFieldViewModel)vm.Value).SampleSizeFieldName = sampleSizeField.Name;
                                    }
                                }
                            }
                        }
                        else if (field.SetName == SourceFieldSetNames.CurrentUserInfo)
                        {
                            var listFieldViewModel = TheViewModelsList.FirstOrDefault(x => x.Metadata.Type == typeof(UserRolesFieldViewModel));
                            if (listFieldViewModel != null)
                            {
                                vm = listFieldViewModel.CreateExport();

                                var parent = field;
                                var subfields = fields
                                    .Where(x => x.ParentField != null && 
                                                x.ParentField.Id == parent.Id);

                                ((UserRolesFieldViewModel)vm.Value).CreateColumns(subfields);
                            }
                        }
                        break;
                }

                if (vm == null)
                {
                    continue;
                }

                vm.Value.Field = field;
                ExpressionViewsList.Add(vm);
            }
        }