コード例 #1
0
ファイル: StaticTypeVisitor`1.cs プロジェクト: wwwK/Leo
        public StaticTypeLeoVisitor(DictBase <T> handler, AlgorithmKind kind, bool liteMode = false, bool strictMode = false)
        {
            _handler       = handler ?? throw new ArgumentNullException(nameof(handler));
            _algorithmKind = kind;

            SourceType = typeof(T);
            LiteMode   = liteMode;

            _lazyMemberHandler = MemberHandler.Lazy(() => new MemberHandler(_handler, SourceType), liteMode);
            _validationContext = strictMode
                ? new CorrectContext <T>(this, true)
                : null;
        }
コード例 #2
0
        private static void SetBelongsToForeignKey(IDbObject obj, object subobj, object foreignKey)
        {
            MemberHandler belongsTo = ModelContext.GetInstance(subobj.GetType()).Info.GetBelongsTo(obj.GetType());

            if (belongsTo != null)
            {
                var to = belongsTo.GetValue(subobj) as IBelongsTo;
                if (to != null)
                {
                    to.ForeignKey = foreignKey;
                }
            }
        }
コード例 #3
0
        public override void ProcessLazyLoad(UpdateStatementBuilder builder, MemberHandler m, object value, Type type)
        {
            object v;

            if (_LoadedColumns.TryGetValue(m.Name, out v))
            {
                if (!NotEqual(value, v))
                {
                    return;
                }
            }
            base.ProcessLazyLoad(builder, m, value, type);
        }
コード例 #4
0
        private void GenerateSetValue(TypeDefinition type, MemberHandler member, TypeReference memberType)
        {
            var method = new MethodDefinition("SetValue", CtMethodAttr, _handler.VoidType);

            method.Parameters.Add(new ParameterDefinition("obj", ParameterAttributes.None, _handler.ObjectType));
            method.Parameters.Add(new ParameterDefinition("value", ParameterAttributes.None, _handler.ObjectType));
            var processor = new IlBuilder(method.Body);

            processor.LoadArg(1).Cast(_model).LoadArg(2).CastOrUnbox(memberType, _handler);
            processor.SetMember(member, _handler);
            processor.Return();
            processor.Append();
            type.Methods.Add(method);
        }
コード例 #5
0
        public void UpdateUserDataTest()
        {
            MemberHandler memberHandler          = new MemberHandler(GetTestMemberList());
            Dictionary <string, string> testData = new Dictionary <string, string>();

            testData.Add("MemberId", "zxc1");
            testData.Add("Password", "zxc123");
            testData.Add("MemberName", "John");
            testData.Add("Sexuality", "女");
            testData.Add("Phone", "0321654987");
            testData.Add("Birthday", "10/10/1999");
            Assert.IsTrue(memberHandler.UpdateUserData("asd5", testData));
            Assert.IsFalse(memberHandler.UpdateUserData("zxc2", testData));
        }
コード例 #6
0
 private static KeyValue GetKeyValue(ObjectInfo oi, MemberHandler fi)
 {
     if (fi.Is.BelongsTo)
     {
         Type          type    = fi.MemberType.GetGenericArguments()[0];
         MemberHandler handler = (oi.HandleType == type) ? oi.KeyMembers[0] : ModelContext.GetInstance(type).Info.KeyMembers[0];
         return(new KeyValue(fi.Name, null, handler.MemberType));
     }
     if (fi.Is.LazyLoad)
     {
         return(new KeyValue(fi.Name, null, fi.MemberType.GetGenericArguments()[0]));
     }
     return(new KeyValue(fi.Name, null, fi.MemberType));
 }
コード例 #7
0
ファイル: AspNetGenerator.cs プロジェクト: zyj0021/DbEntry
        protected void ProcessDateTime(MemberHandler m)
        {
            _b.asp("TextBox", _id).attr("Columns", 23);

            if (m.Is.CreatedOn || m.Is.UpdatedOn)
            {
                _b.attr("Enabled", "False");
            }
            else
            {
                _b.attr("onclick", "getDateString(this, oCalendarEn)");
            }
            _b.end.over();
        }
コード例 #8
0
ファイル: AspNetGenerator.cs プロジェクト: zyj0021/DbEntry
        protected void ProcessEnum(MemberHandler m)
        {
            Type t = m.MemberType;

            _b.asp("DropDownList", _id);

            foreach (string s in Enum.GetNames(t))
            {
                object e    = Enum.Parse(t, s);
                string text = StringHelper.EnumToString(e);
                _b.tag("asp:ListItem").attr("Text", text).attr("Value", s).end.over();
            }
            _b.end.over();
        }
コード例 #9
0
ファイル: HasMany.cs プロジェクト: zyj0021/DbEntry
        protected override void OnRemoveItem(T item)
        {
            var ctx = ModelContext.GetInstance(typeof(T));

            if (!ctx.IsNewObject(item))
            {
                Type          ot = Owner.GetType();
                MemberHandler mh = ctx.Info.GetBelongsTo(ot);
                var           o  = (IBelongsTo)mh.GetValue(item);
                o.ForeignKey = null;
                o.ForeignKeyChanged();
                _removedValues.Add(item);
            }
        }
コード例 #10
0
 protected void registerBtn_Click(object sender, EventArgs e)
 {
     if (nameTxt.Text == "")
     {
         errorLb.Text = "Name must be filled";
     }
     else if (emailTxt.Text == "")
     {
         errorLb.Text = "Email must be filled";
     }
     else if (MemberHandler.checkEmailExist(emailTxt.Text))
     {
         errorLb.Text = "Email already exist";
     }
     else if (passwordTxt.Text == "")
     {
         errorLb.Text = "Password must be filled";
     }
     else if (repasswordTxt.Text != passwordTxt.Text)
     {
         errorLb.Text = "Confirm password must exactly same as password";
     }
     else if (!maleRb.Checked && !femaleRb.Checked)
     {
         errorLb.Text = "Gender must be chosen";
     }
     else if (dobTxt.Text == "")
     {
         errorLb.Text = "Birth date must be filled";
     }
     else if (!imageValidation())
     {
         errorLb.Text = "Image extension must be .jpg or .png";
     }
     else if (phoneNumberTxt.Text == "")
     {
         errorLb.Text = "Phone number must be filled";
     }
     else if (addressTxt.Text == "")
     {
         errorLb.Text = "Address must be filled";
     }
     else
     {
         createMember();
         saveImages();
         Response.Redirect("Homepage.aspx");
     }
 }
コード例 #11
0
ファイル: AspNetGenerator.cs プロジェクト: zyj0021/DbEntry
        protected void ProcessString(MemberHandler m)
        {
            int iml = m.MaxLength;

            _b.asp("TextBox", _id);
            if (iml > 0)
            {
                _b.attr("MaxLength", iml).attr("Columns", iml > 60 ? 60 : iml);
            }
            else
            {
                _b.attr("TextMode", "MultiLine").attr("Columns", 60).attr("Rows", 10);
            }
            _b.end.over();
        }
コード例 #12
0
        public void CreateNewMemberTest()
        {
            MemberHandler memberHandler          = new MemberHandler(GetTestMemberList());
            Dictionary <string, string> testData = new Dictionary <string, string>();

            testData.Add("MemberId", "zxc1");
            testData.Add("Password", "zxc123");
            testData.Add("MemberName", "zxc1");
            testData.Add("Sexuality", "女");
            testData.Add("Phone", "0321654987");
            testData.Add("Birthday", "10/10/1999");
            Assert.IsTrue(memberHandler.CreateNewMember(testData));
            testData["MemberId"] = "asd1";
            Assert.IsFalse(memberHandler.CreateNewMember(testData));
        }
コード例 #13
0
        public StaticTypeObjectVisitor(ObjectCallerBase handler, Type targetType, ObjectVisitorOptions options)
        {
            _options = options?.Clone() ?? ObjectVisitorOptions.Default;
            _handler = handler ?? throw new ArgumentNullException(nameof(handler));

            SourceType = targetType ?? throw new ArgumentNullException(nameof(targetType));

            _objectOwnInfo      = ObjectOwn.Of(targetType);
            _lazyMemberHandler  = MemberHandler.Lazy(_handler, SourceType, _options.LiteMode);
            _correctnessContext = _options.StrictMode
                ? new CorrectnessContext(this, true)
                : null;

            LazyPropertyNodes = RootNode.New(_handler, _options.Clone(x => x.Repeatable = RpMode.NON_REPEATABLE));
        }
コード例 #14
0
ファイル: ObjectInfo.cs プロジェクト: leohsu91/DbEntry
 private static void ProcessMember(MemberAdapter m, IList <MemberHandler> members)
 {
     if (((!m.HasAttribute <ExcludeAttribute>(false) && !m.HasAttribute <HasOneAttribute>(false)) && (!m.HasAttribute <HasManyAttribute>(false) && !m.HasAttribute <HasAndBelongsToManyAttribute>(false))) && (!m.HasAttribute <BelongsToAttribute>(false) && !m.HasAttribute <LazyLoadAttribute>(false)))
     {
         var member = MemberHandler.NewObject(m);
         if (member.Is.Key)
         {
             members.Add(member);
         }
         else
         {
             members.Add(member);
         }
     }
 }
コード例 #15
0
 private static void CheckMemberCast(MemberHandler member, object value, StringBuilder text)
 {
     if (value == DBNull.Value && member.Is.AllowNull)
     {
         return;
     }
     if (member.MemberType.IsEnum && value is Int32)
     {
         return;
     }
     if (member.MemberType != value.GetType())
     {
         text.AppendFormat("The type of member [{0}] is [{1}] but the type in Database of it is [{2}]\n",
                           member.Name, member.MemberType, value.GetType());
     }
 }
コード例 #16
0
ファイル: InternalValidator.cs プロジェクト: wwwK/Leo
        public static LeoVerifyResult Valid(MemberHandler handler, List <CorrectValueRule> rules)
        {
            var len                 = rules.Count;
            var failures            = new List <LeoVerifyFailure>();
            var nameOfExecutedRules = new List <string>();

            for (var i = 0; i < len; i++)
            {
                var valueRule = rules[i];
                var value     = valueRule.GetValue(handler);

                ValidCore(value, valueRule, failures, nameOfExecutedRules);
            }

            return(MakeResult(failures, nameOfExecutedRules));
        }
コード例 #17
0
ファイル: ColumnInfo.cs プロジェクト: zyj0021/DbEntry
 private static Type GetType(MemberHandler fh)
 {
     if (fh.Is.BelongsTo)
     {
         var ctx = ModelContext.GetInstance(fh.MemberType.GetGenericArguments()[0]);
         if (ctx.Info.KeyMembers != null && ctx.Info.KeyMembers.Length == 1)
         {
             return(ctx.Info.KeyMembers[0].MemberType);
         }
     }
     else if (fh.Is.LazyLoad)
     {
         return(fh.MemberType.GetGenericArguments()[0]);
     }
     return(fh.MemberType);
 }
コード例 #18
0
        private static string GetCrossTableName(MemberHandler f, string unmappedMainTableName, string unmappedSlaveTableName)
        {
            string crossTableName;

            if (!string.IsNullOrEmpty(f.CrossTableName))
            {
                crossTableName = f.CrossTableName;
            }
            else
            {
                crossTableName = (unmappedMainTableName.CompareTo(unmappedSlaveTableName) > 0)
                    ? (unmappedSlaveTableName + "_" + unmappedMainTableName)
                    : (unmappedMainTableName + "_" + unmappedSlaveTableName);
            }
            return(NameMapper.Instance.Prefix + crossTableName);
        }
コード例 #19
0
        public InstanceVisitor(ObjectCallerBase <T> handler, ObjectVisitorOptions options)
        {
            _options = options?.Clone() ?? ObjectVisitorOptions.Default;
            _handler = handler ?? throw new ArgumentNullException(nameof(handler));

            SourceType = typeof(T);
            GenericHistoricalContext = _options.Repeatable
                ? new HistoricalContext <T>(_options.AlgorithmKind)
                : null;

            _objectOwnInfo      = ObjectOwn.Of <T>();
            _lazyMemberHandler  = MemberHandler.Lazy(_handler, SourceType, _options.LiteMode);
            _correctnessContext = _options.StrictMode
                ? new CorrectnessContext <T>(this, true)
                : null;

            LazyPropertyNodes = RootNode.New(_handler, _options);
        }
コード例 #20
0
 private string GetName(MemberHandler f)
 {
     if (f.Is.LazyLoad)
     {
         return(f.Name);
     }
     if (f.Is.HasOne || f.Is.HasMany)
     {
         var oi1 = ObjectInfoFactory.Instance.GetInstance(f.MemberType.GetGenericArguments()[0]);
         var mh  = oi1.GetBelongsTo(_type);
         if (mh == null)
         {
             throw new DataException("HasOne/HasMany and BelongsTo must be paired.");
         }
         return(mh.Name);
     }
     if (f.Is.HasAndBelongsToMany)
     {
         var oi1 = ObjectInfoFactory.Instance.GetInstance(f.MemberType.GetGenericArguments()[0]);
         var mh  = oi1.GetHasAndBelongsToMany(_type);
         if (mh == null)
         {
             throw new DataException("HasOne/HasMany and BelongsTo must be paired.");
         }
         return(mh.Name);
     }
     if (f.Is.BelongsTo)
     {
         var oi1 = ObjectInfoFactory.Instance.GetInstance(f.MemberType.GetGenericArguments()[0]);
         foreach (MemberHandler member in oi1.RelationMembers)
         {
             if (member.Is.HasOne || member.Is.HasMany)
             {
                 var type = member.MemberType.GetGenericArguments()[0];
                 if (type == _type)
                 {
                     return(f.Name);
                 }
             }
         }
         throw new DataException("BelongsTo and HasOne/HasMany must be paired.");
     }
     throw new ApplicationException("Impossiable!");
 }
コード例 #21
0
        public ActionResult Login(MemberModel model)
        {
            var member = MemberHandler.GetMember(model.EmailAddress, model.Password);

            if (member != null)
            {
                Session[Constants.AppUserKeyName] = PublicUser.GetCurrentUser(member);

                var mongoCart   = CartHandler.GetCart(member.MemberId);
                var sessionCart = (Cart)Session[Constants.CartKeyName];

                if (sessionCart != null && sessionCart.Items != null && sessionCart.Items.Count > 0)
                {
                    if (mongoCart != null && mongoCart.Items != null && mongoCart.Items.Count > 0)
                    {
                        foreach (var sessionItem in sessionCart.Items)
                        {
                            var mongoItem = mongoCart.Items.Find(p => p.ProductId == sessionItem.ProductId);
                            if (mongoItem != null)
                            {
                                mongoItem.ProductCount = sessionItem.ProductCount;
                            }
                            else
                            {
                                mongoCart.Items.Add(sessionItem);
                            }
                        }
                    }
                    else
                    {
                        mongoCart = sessionCart;
                    }
                }

                Session[Constants.CartKeyName] = null;
                mongoCart.MemberId             = member.MemberId;
                CartHandler.SaveCart(mongoCart);

                return(RedirectToAction("Index", "Home", new { area = "" }));
            }

            ViewBag.LoginError = "Username and password does not match.";
            return(View());
        }
コード例 #22
0
 private void ProcessString(MemberHandler m, object value)
 {
     if (m.MaxLength < 256 && m.MaxLength > 0)
     {
         _html.input.id(_id).name(_name).type("text");
         int size = m.MaxLength > 100 ? 100 : m.MaxLength;
         _html.attr("maxlength", m.MaxLength).attr("size", size);
         if (value != null)
         {
             _html.value(value);
         }
         _html.end.over();
     }
     else
     {
         string s = (value == null) ? "" : value.ToString();
         _html.tag("textarea").id(_id).name(_name).attr("cols", 50).attr("rows", 5).include(s).end.over();
     }
 }
コード例 #23
0
ファイル: JsonArrayContract.cs プロジェクト: thirumg/Avro.NET
    internal IWrappedCollection CreateWrapper(object list)
    {
      if (list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType))
        return new CollectionWrapper<object>((IList)list);

      if (_genericWrapperType == null)
      {
        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof(CollectionWrapper<>), CollectionItemType);

        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { _genericCollectionDefinitionType });
#if !PocketPC && !SILVERLIGHT
        _genericWrapperCreator = LateBoundDelegateFactory.CreateMethodHandler(genericWrapperConstructor);
#else
        _genericWrapperCreator = (target, args) => genericWrapperConstructor.Invoke(new[] { args[0] });
#endif
      }

      return (IWrappedCollection)_genericWrapperCreator(null, list);
    }
コード例 #24
0
        private void GenerateNewMember(MemberHandler pi, ILBuilder processor)
        {
            processor.LoadArg(1);
            ConstructorInfo ci1;
            var             ft = pi.MemberType;

            if (pi.Is.HasOne || pi.Is.HasMany || pi.Is.HasAndBelongsToMany)
            {
                ci1 = ft.GetConstructor(new Type[] {
                    typeof(DbObjectSmartUpdate),
                    typeof(string),
                    typeof(string)
                });
                if (string.IsNullOrEmpty(pi.OrderByString))
                {
                    processor.LoadString("Id");
                }
                else
                {
                    processor.LoadString(pi.OrderByString);
                }
            }
            else
            {
                ci1 = ft.GetConstructor(new Type[] {
                    typeof(DbObjectSmartUpdate),
                    typeof(string)
                });
            }
            if (pi.Is.HasOne || pi.Is.HasMany)
            {
                processor.LoadString(GetBelongsToColumnName(pi));
            }
            else if (pi.Is.HasAndBelongsToMany)
            {
                processor.LoadString(GetHasManyAndBelongsToColumnName(pi));
            }
            else
            {
                processor.LoadString(pi.Name);
            }
            processor.NewObj(ci1);
        }
コード例 #25
0
        private void ProcessHasAndBelongsToMany(IDbObject obj, MemberHandler f, ILazyLoading ho)
        {
            object obj2 = ho.Read();

            if (obj2 != null)
            {
                Util.TryEnumerate(obj2, RelationSave);
            }
            var relations = (IHasAndBelongsToManyRelations)ho;

            foreach (object obj3 in relations.SavedNewRelations)
            {
                SetManyToManyRelation(f.MemberType.GetGenericArguments()[0], Handler.GetKeyValue(obj), obj3);
            }
            foreach (object obj4 in relations.RemovedRelations)
            {
                RemoveManyToManyRelation(f.MemberType.GetGenericArguments()[0], Handler.GetKeyValue(obj), obj4);
            }
        }
コード例 #26
0
ファイル: InstanceVisitor`1.cs プロジェクト: wwwK/Leo
        public InstanceVisitor(DictBase <T> handler, T instance, AlgorithmKind kind, bool repeatable,
                               bool liteMode = false, bool strictMode = false)
        {
            _handler       = handler ?? throw new ArgumentNullException(nameof(handler));
            _instance      = instance;
            _algorithmKind = kind;

            _handler.SetInstance(_instance);

            SourceType = typeof(T);
            GenericHistoricalContext = repeatable
                ? new HistoricalContext <T>(kind)
                : null;
            LiteMode = liteMode;

            _lazyMemberHandler = MemberHandler.Lazy(() => new MemberHandler(_handler, SourceType), liteMode);
            _validationContext = strictMode
                ? new CorrectContext <T>(this, true)
                : null;
        }
コード例 #27
0
        private void GenerateGetValue(TypeDefinition type, MemberHandler member, TypeReference memberType)
        {
            var method = new MethodDefinition("GetValue", CtMethodAttr, _handler.ObjectType);

            method.Parameters.Add(new ParameterDefinition("obj", ParameterAttributes.None, _handler.ObjectType));
            var processor = new IlBuilder(method.Body);

            processor.DeclareLocal(_handler.ObjectType);
            processor.LoadArg(1).Cast(_model);
            processor.GetMember(member, _handler);
            if (member.MemberInfo.MemberType.IsValueType)
            {
                processor.Box(memberType);
            }
            processor.SetLoc(0);
            processor.LoadLoc(0);
            processor.Return();
            processor.Append();
            type.Methods.Add(method);
        }
コード例 #28
0
        protected void btnShow_Click(object sender, EventArgs e)
        {
            fld       = cboSearch.SelectedValue.ToString();
            txt       = txtSearch.Text;
            A_Handler = new MemberHandler();
            sql       = "select * from " + Tbl_Name + " where " + fld + " like '" + txt + "%' ";
            //Grid1.DataSource = A_Handler.GetMemberList(sql);
            //Grid1.DataBind();
            SqlDataSource1.SelectCommand = sql;
            SqlDataSource1.DataBind();

            if (Grid1.Rows.Count > 0)
            {
                lblRec.Text = "Total Records : " + Grid1.Rows.Count.ToString();
            }
            else
            {
                lblRec.Text = "Record Not Found...";
            }
        }
コード例 #29
0
ファイル: InternalValidator.cs プロジェクト: wwwK/Leo
        public static LeoVerifyResult ValidOne(MemberHandler handler, List <CorrectValueRule> rules, string name)
        {
            if (rules is null || !rules.Any())
            {
                return(LeoVerifyResult.Success);
            }

            var valueRule = rules.FirstOrDefault(r => r.Name == name);

            if (valueRule is null)
            {
                return(LeoVerifyResult.Success);
            }

            var failures            = new List <LeoVerifyFailure>();
            var nameOfExecutedRules = new List <string>();

            ValidCore(valueRule.GetValue(handler), valueRule, failures, nameOfExecutedRules);

            return(MakeResult(failures, nameOfExecutedRules));
        }
コード例 #30
0
ファイル: HasOne.cs プロジェクト: zyj0021/DbEntry
        protected override void DoLoad()
        {
            if (RelationName == null)
            {
                return;
            }
            object key = Owner.Context.Info.KeyMembers[0].GetValue(Owner);

            m_Value = DbEntry.GetObject <T>(CK.K[RelationName] == key, _order);

            if (m_Value != null)
            {
                var           ctx0 = ModelContext.GetInstance(typeof(T));
                MemberHandler mh   = ctx0.Info.GetBelongsTo(Owner.GetType());
                if (mh != null)
                {
                    var ll = (ILazyLoading)mh.GetValue(m_Value);
                    ll.Write(Owner, true);
                }
            }
        }
コード例 #31
0
        internal IWrappedCollection CreateWrapper(object list)
        {
            if (list is IList && (CollectionItemType == null || !_isCollectionItemTypeNullableType))
            {
                return(new CollectionWrapper <object>((IList)list));
            }

            if (_genericWrapperType == null)
            {
                _genericWrapperType = ReflectionUtils.MakeGenericType(typeof(CollectionWrapper <>), CollectionItemType);

                ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { _genericCollectionDefinitionType });
#if !PocketPC
                _genericWrapperCreator = LateBoundDelegateFactory.CreateMethodHandler(genericWrapperConstructor);
#else
                _genericWrapperCreator = (target, args) => genericWrapperConstructor.Invoke(new[] { args[0] });
#endif
            }

            return((IWrappedCollection)_genericWrapperCreator(null, list));
        }
コード例 #32
0
    internal IWrappedDictionary CreateWrapper(object dictionary)
    {
      if (dictionary is IDictionary)
        return new DictionaryWrapper<object, object>((IDictionary)dictionary);

      if (_genericWrapperType == null)
      {
        _genericWrapperType = ReflectionUtils.MakeGenericType(typeof(DictionaryWrapper<,>), DictionaryKeyType, DictionaryValueType);

        ConstructorInfo genericWrapperConstructor = _genericWrapperType.GetConstructor(new[] { _genericCollectionDefinitionType });
#if !PocketPC && !SILVERLIGHT
        _genericWrapperCreator = LateBoundDelegateFactory.CreateMethodHandler(genericWrapperConstructor);
#else
        _genericWrapperCreator = (target, args) => genericWrapperConstructor.Invoke(new[] { args[0] });
#endif
      }

      return (IWrappedDictionary)_genericWrapperCreator(null, dictionary);
    }