コード例 #1
0
 private void Form1_Load(object sender, EventArgs e)
 {
     GF5           = new FiniteField(5);
     GF56Primitive = new Polynomial(GF5, 2, 0, 1, 4, 1, 0, 1);
     ExtF          = new ExtensionField(GF56Primitive);
     lblInfo.Text  = "Current Field Info: " + ExtF.ToString();
 }
コード例 #2
0
        private static JObject ProcessEntityField(ExtensionField x, List <Content> visited, Context context)
        {
            JObject f = ProcessFieldBase(x);

            f["Contents"] = new JArray(x.GetContents().Select(c => VisitDefinition(c, visited, context)));

            return(f);
        }
コード例 #3
0
            public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
            {
                var jsonObject = JObject.Load(reader);
                var target     = new ExtensionField[10];

                //将JSON值填充到目标对象中。
                serializer.Populate(jsonObject.CreateReader(), target);
                return(target);
            }
コード例 #4
0
        public static ExtensionFieldData ToViewData(this ExtensionField node, CategoryDictionary suffix = CategoryDictionary.None)
        {
            if (node == null)
            {
                return(null);
            }
            var model = new ExtensionFieldData()
            {
                Id          = node.Id,
                Database    = node.Database,
                Schema      = node.Schema,
                Table       = node.Table,
                Column      = node.Column,
                JoinId      = node.JoinId,
                StartTime   = node.StartTime,
                FinishTime  = node.FinishTime,
                Value       = node.Value,
                ValueType   = node.ValueType,
                ChineseName = node.ChineseName,
                EnglishName = node.EnglishName,
                Enable      = node.Enable,
                Description = node.Description
            };
            var tableName           = node.Table;
            CategoryDictionary dict = (CategoryDictionary)Enum.Parse(typeof(CategoryDictionary), tableName);

            if ((suffix & dict) == dict)
            {
                try
                {
                    var type = Type.GetType("WxPay2017.API.BLL." + tableName + "BLL");
                    var bll  = Activator.CreateInstance(type);
                    model.RelatedObject = type.GetMethod("Find", new Type[] { typeof(object[]) }).Invoke(bll, new object[1] {
                        new object[] { node.JoinId }
                    });
                    var type2 = Type.GetType("WxPay2017.API.BLL." + tableName + "Extension");
                    System.Reflection.Assembly assm = System.Reflection.Assembly.Load("DAL");
                    Type typeModel = assm.GetType("" + tableName);
                    model.RelatedObject = type2.GetMethod("ToViewData", new Type[] { typeModel, typeof(CategoryDictionary) }).Invoke(model.RelatedObject, new object[2] {
                        model.RelatedObject, CategoryDictionary.None
                    });
                }catch {
                    model.RelatedObject = null;
                }
            }
            return(model);
        }
コード例 #5
0
 public string AddField(ExtensionField field)
 {
     try
     {
         string sql = string.Format(@"alter table dbo.[{0}] add {1} {2} {3} ", field.TableName, field.ColumnName,
                                    getDBType(field.Type, field.Length), getDefault(field.Type, field.Defaultval));
         string dessql =
             string.Format(
                 @"EXECUTE sp_addextendedproperty N'MS_Description', '{0}', N'user', N'dbo', N'TABLE', N'{1}', N'column', N'{2}'",
                 field.Des, field.TableName, field.ColumnName);
         SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, sql);
         SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.Text, dessql);
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
     return(string.Empty);
 }
コード例 #6
0
        private ArticleField DeserializeExtensionField(ExtensionField fieldInDef, Quantumart.QP8.BLL.Field qpField, IProductDataSource productDataSource, DBConnector connector, Context context)
        {
            var extensionArticleField = new ExtensionArticleField();

            string fieldName = string.IsNullOrEmpty(fieldInDef.FieldName) ? qpField.Name : fieldInDef.FieldName;

            string contentName = productDataSource.GetString(fieldName);

            if (!string.IsNullOrEmpty(contentName))
            {
                Models.Configuration.Content valueDef = fieldInDef.ContentMapping.Values.FirstOrDefault(x => _contentService.Read(x.ContentId).NetName == contentName);

                if (valueDef == null)
                {
                    throw new Exception(
                              $"'{contentName}' value is not found in an available extension content list, id = {fieldInDef.FieldId}");
                }

                extensionArticleField.Value        = valueDef.ContentId.ToString();
                extensionArticleField.SubContentId = valueDef.ContentId;

                IProductDataSource extensionDataSource = productDataSource.GetExtensionContainer(fieldName, contentName);

                extensionArticleField.Item = DeserializeArticle(extensionDataSource, valueDef, connector, context);

                if (extensionArticleField.Item.Id == productDataSource.GetArticleId())
                {
                    var id = GetExtensionId(connector, valueDef.ContentId, fieldInDef.FieldId, extensionArticleField.Item.Id);

                    if (id.HasValue)
                    {
                        extensionArticleField.Item.Id = id.Value;
                    }
                    else
                    {
                        context.AddExtensionArticle(extensionArticleField.Item.Id, extensionArticleField.Item);
                        extensionArticleField.Item.Id = default(int);
                    }
                }
            }

            return(extensionArticleField);
        }
コード例 #7
0
    private void CreateInstance(ExtensionField field)
    {
        if (field.targetType == null)
        {
            UnityEngine.Debug.Log($"[Area::{this.name}]: Unable to load extesion type of \"{field.targetType}\".");
            return;
        }

        ExtensionBase extensionInstance = ExtensionSingletons
                                          .Where(t => t.GetType().IsAssignableFrom(field.targetType))
                                          .FirstOrDefault();

        if (extensionInstance == null)
        {
            extensionInstance = (ExtensionBase)System.Activator.CreateInstance(field.targetType);
            ExtensionSingletons.Add(extensionInstance);
        }

        System.Threading.CancellationToken token = WorkerTokenSource.Token;
        workers[field.targetType] = extensionInstance.GetWorker(token, this);
    }
コード例 #8
0
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Args = this.PageEngine.GetWindowArgs <Dictionary <string, string> >();
            //if (!string.IsNullOrWhiteSpace(Args["id"]))
            //{

            //}
            //else
            //{


            //}
            this.Model = new ExtensionField();
            if (!string.IsNullOrWhiteSpace(Args["type"]))
            {
                this.Model.TableName = Args["type"];
            }


            if (!IsPostBack)
            {
                this.FillForm(this.Model);
            }
        }
コード例 #9
0
        /// <exception cref="NotSupportedException" />
        /// <exception cref="InvalidOperationException" />
        private FieldSchema GetExtensionFieldSchema(
            ExtensionField extensionField, Quantumart.QP8.BLL.Field qpField, SchemaContext context, string path)
        {
            var contentSchemas = new Dictionary <string, IContentSchema>();

            foreach (Content content in extensionField.ContentMapping.Values)
            {
                var qpContent = _contentService.Read(content.ContentId);

                if (!String.IsNullOrEmpty(qpContent.NetName) &&
                    !contentSchemas.ContainsKey(qpContent.NetName))
                {
                    var contentSchema = GetContentSchema(content, context, $"{path}/{qpContent.NetName}");
                    contentSchema.ForExtension        = true;
                    contentSchemas[qpContent.NetName] = contentSchema;
                }
            }

            return(new ExtensionFieldSchema
            {
                Changeable = qpField.Changeable,
                ExtensionContents = contentSchemas
            });
        }
コード例 #10
0
 public static string AddExtensionField(ExtensionField field)
 {
     return(UserInfoRepo.AddField(field));
 }
コード例 #11
0
 public string AddField(ExtensionField field)
 {
     return(string.Empty);
 }
コード例 #12
0
        /// <exception cref="NotSupportedException" />
        /// <exception cref="InvalidOperationException" />
        private void MergeExtensionFieldSchema(
            ExtensionField field, Quantumart.QP8.BLL.Field qpField, JSchema contentSchema, SchemaContext context)
        {
            JSchema extensionSchema = AttachFieldData(qpField, new JSchema { Type = JSchemaType.String });

            foreach (Content content in field.ContentMapping.Values)
            {
                var qpContent = _contentService.Read(content.ContentId);
                if (!String.IsNullOrWhiteSpace(qpContent.NetName))
                {
                    extensionSchema.Enum.Add(qpContent.NetName);
                }
            }

            contentSchema.Properties.Add(field.FieldName, extensionSchema);

            var fieldGroups = field.ContentMapping.Values
                .SelectMany(extContent =>
                {
                    var fields = extContent.Fields
                        .Select(extField => new
                        {
                            extField.FieldName,

                            FieldSchema = GetFieldSchema(
                                extField, _fieldService.Read(extField.FieldId), context, false)
                        });

                    if (extContent.LoadAllPlainFields)
                    {
                        var qpFields = _fieldService.List(extContent.ContentId).ToArray();

                        var fieldsToAdd = qpFields
                            .Where(f => f.RelationType == Quantumart.QP8.BLL.RelationType.None
                                && extContent.Fields.All(y => y.FieldId != f.Id))
                            .Where(f => !context.IgnoredFields
                                .Any(t => t.Item1.Equals(extContent) && t.Item2.FieldId == f.Id));

                        fields = fields.Concat(fieldsToAdd.Select(extQpField => new
                        {
                            FieldName = extQpField.Name,
                            FieldSchema = GetPlainFieldSchema(extQpField)
                        }));
                    }

                    return fields;
                })
                .GroupBy(x => x.FieldName);

            foreach (var fieldGroup in fieldGroups)
            {
                JSchema[] groupSchemas = fieldGroup.Select(pair => pair.FieldSchema).ToArray();

                JSchema sameNameExtensionFieldsSchema;
                if (groupSchemas.Length > 1)
                {
                    sameNameExtensionFieldsSchema = new JSchema { Type = JSchemaType.Object };

                    foreach (JSchema extFieldSchema in groupSchemas)
                    {
                        sameNameExtensionFieldsSchema.OneOf.Add(extFieldSchema);
                    }
                }
                else
                {
                    sameNameExtensionFieldsSchema = groupSchemas[0];
                }

                contentSchema.Properties[fieldGroup.Key] = sameNameExtensionFieldsSchema;
            }
        }
コード例 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="rootContent"></param>
        /// <param name="notFoundInDef"></param>
        /// <param name="entityIds">int c id поля для невиртуальных полей и string с именем поля для виртуальных</param>
        /// <returns></returns>
        private object GetObjectFromDef(Content rootContent, out bool notFoundInDef, IEnumerable <object> entityIds)
        {
            object[] entityIdsToSearch = entityIds
                                         .Skip(1) //корень ровно один поэтому первый компонент пути нам не нужен
                                         .ToArray();

            object currentPositionObj = rootContent;

            notFoundInDef = false;

            foreach (object entityId in entityIdsToSearch)
            {
                if (currentPositionObj is Content)
                {
                    var currContent = (Content)currentPositionObj;

                    if (entityId is int)
                    {
                        currentPositionObj = currContent.Fields.SingleOrDefault(x => x.FieldId == (int)entityId);
                    }
                    else
                    {
                        currentPositionObj = currContent.Fields.SingleOrDefault(x => x.FieldName == (string)entityId && x is BaseVirtualField);
                    }

                    if (currentPositionObj == null)
                    {
                        //дурацкая система что Dictionaries это поле с id=0
                        if (entityId is int && (int)entityId == 0)
                        {
                            notFoundInDef = true;

                            return(new Dictionaries());
                        }

                        if (entityId is int)
                        {
                            int enitityIdInt = (int)entityId;

                            var qpField = _fieldService.Read(enitityIdInt);

                            if (qpField == null)
                            {
                                notFoundInDef = true;

                                return(null);
                            }

                            if (qpField.RelationType == RelationType.None && !qpField.IsClassifier)
                            {
                                currentPositionObj = new PlainField {
                                    FieldId = enitityIdInt, FieldName = qpField.Name
                                };

                                notFoundInDef = !currContent.LoadAllPlainFields;
                            }
                            else
                            {
                                using (_fieldService.CreateQpConnectionScope())
                                {
                                    if (qpField.ContentId == currContent.ContentId)
                                    {
                                        if (!qpField.IsClassifier)
                                        {
                                            currentPositionObj = new EntityField
                                            {
                                                FieldId     = enitityIdInt,
                                                FieldName   = qpField.Name,
                                                CloningMode = CloningMode.UseExisting,
                                                Content     =
                                                    new Content {
                                                    ContentId = qpField.RelateToContentId.Value, ContentName = qpField.RelatedToContent.Name
                                                }
                                            }
                                        }
                                    }
                                    ;
                                    else
                                    {
                                        currentPositionObj = new ExtensionField
                                        {
                                            FieldId     = qpField.Id,
                                            FieldName   = qpField.Name,
                                            CloningMode = CloningMode.UseExisting
                                        };

                                        var classifierContents = _fieldService.ListRelated(qpField.ContentId)
                                                                 .Where(x => x.Aggregated)
                                                                 .Select(x => x.Content);

                                        foreach (var classifierContent in classifierContents)
                                        {
                                            ((ExtensionField)currentPositionObj).ContentMapping.Add(
                                                classifierContent.Id,
                                                new Content {
                                                ContentId = classifierContent.Id, ContentName = classifierContent.Name
                                            });
                                        }
                                    }
                                    else
                                    {
                                        currentPositionObj = new BackwardRelationField
                                        {
                                            FieldId   = qpField.Id,
                                            FieldName = qpField.Name,
                                            Content   = new Content {
                                                ContentId = qpField.ContentId, ContentName = qpField.Content.Name
                                            },
                                            CloningMode = CloningMode.UseExisting
                                        };
                                    }
                                }

                                notFoundInDef = !qpField.IsClassifier || !currContent.LoadAllPlainFields;
                            }
                        }
コード例 #14
0
        public void Test_ConfigurationSerializer_001()
        {
            Content entity = new Content
            {
                ContentId          = 288,
                ContentName        = "Продукты",
                LoadAllPlainFields = true,
            };

            var mp = new Content();

            mp.CachePeriod = TimeSpan.FromMinutes(30);

            mp.Fields.Add(new EntityField {
                FieldName = "Categories"
            });
            mp.Fields.Add(new EntityField {
                FieldName = "Family"
            });
            mp.Fields.Add(new EntityField {
                FieldName = "Tabs"
            });
            mp.Fields.Add(new EntityField {
                FieldName = "MarketingSign"
            });
            mp.Fields.Add(new EntityField {
                FieldName = "Modifiers"
            });


            entity.Fields.Add(new EntityField
            {
                FieldName    = "MarketingProduct",
                FieldId      = 1115,
                CloningMode  = CloningMode.UseExisting,
                DeletingMode = DeletingMode.Keep,
                Content      = mp
            });

            var n = new EntityField
            {
                FieldName    = "Regions",
                FieldId      = 1228,
                CloningMode  = CloningMode.UseExisting,
                DeletingMode = DeletingMode.Keep,
                Content      = new Content()
            };

            entity.Fields.Add(n);


            var t = new ExtensionField
            {
                FieldName = "Type"
            };

            t.ContentMapping.Add(305, new Content {
                LoadAllPlainFields = true
            });
            t.ContentMapping.Add(312, new Content {
                LoadAllPlainFields = true
            });

            entity.Fields.Add(t);


            entity.Fields.Add(new EntityField
            {
                FieldName    = "Parameters",
                FieldId      = 1193,
                CloningMode  = CloningMode.Copy,
                DeletingMode = DeletingMode.Delete,
                Content      = new Content()
            });



            // Attach behavior
            XmlMappingBehavior.SetBehavior(n, new XmlMappingBehavior
            {
                ExportField = "Title",
                ExportMode  = ExportMode.ExportFieldOnly
            });

            var text = Tools.ConfigurationSerializer.GetXml(entity);

            Console.WriteLine(text);
        }
コード例 #15
0
ファイル: Organization.cs プロジェクト: Prolliance/Membership
 public static string AddExtensionField(ExtensionField field)
 {
     return(OrganizationInfoRepo.AddField(field));
 }