示例#1
0
        protected override void OnInsert(int index, object value)
        {
            base.OnInsert(index, value);
            base.ValidateType(value);
            DesignColumn column = (DesignColumn)value;

            if (((column.DataColumn != null) && (this.table != null)) && !this.table.DataTable.Columns.Contains(column.DataColumn.ColumnName))
            {
                this.table.DataTable.Columns.Add(column.DataColumn);
            }
            column.DesignTable = this.designTable;
        }
示例#2
0
        protected override void OnRemove(int index, object value)
        {
            base.OnRemove(index, value);
            base.ValidateType(value);
            DesignColumn column = (DesignColumn)value;

            if ((this.table != null) && (column.DataColumn != null))
            {
                this.table.DataTable.Columns.Remove(column.DataColumn);
            }
            column.DesignTable = null;
        }
示例#3
0
 public void Add(DesignColumn designColumn)
 {
     if ((designColumn.DesignTable != null) && (designColumn.DesignTable != this.designTable))
     {
         throw new InternalException("Cannot insert a DesignColumn object in two collections.");
     }
     designColumn.DesignTable = this.designTable;
     base.List.Add(designColumn);
     if (((designColumn.DataColumn != null) && (this.designTable != null)) && ((this.designTable.DataTable != null) && !this.designTable.DataTable.Columns.Contains(designColumn.Name)))
     {
         this.designTable.DataTable.Columns.Add(designColumn.DataColumn);
     }
 }
 public void Add(DesignColumn designColumn)
 {
     if ((designColumn.DesignTable != null) && (designColumn.DesignTable != this.designTable))
     {
         throw new InternalException("Cannot insert a DesignColumn object in two collections.");
     }
     designColumn.DesignTable = this.designTable;
     base.List.Add(designColumn);
     if (((designColumn.DataColumn != null) && (this.designTable != null)) && ((this.designTable.DataTable != null) && !this.designTable.DataTable.Columns.Contains(designColumn.Name)))
     {
         this.designTable.DataTable.Columns.Add(designColumn.DataColumn);
     }
 }
示例#5
0
        protected override void OnSet(int index, object oldValue, object newValue)
        {
            base.OnSet(index, oldValue, newValue);
            base.ValidateType(newValue);
            base.ValidateType(oldValue);
            DesignColumn column  = (DesignColumn)oldValue;
            DesignColumn column2 = (DesignColumn)newValue;

            if ((this.table != null) && (oldValue != newValue))
            {
                if (column.DataColumn != null)
                {
                    this.table.DataTable.Columns.Remove(column.DataColumn);
                    column.DesignTable = null;
                }
                if ((column2.DataColumn != null) && !this.table.DataTable.Columns.Contains(column2.DataColumn.ColumnName))
                {
                    this.table.DataTable.Columns.Add(column2.DataColumn);
                    column2.DesignTable = this.designTable;
                }
            }
        }
        internal static DSGeneratorProblem GenerateValueExprAndFieldInit(DesignColumn designColumn, object valueObj, object value, string className, string fieldName, out CodeExpression valueExpr, out CodeExpression fieldInit)
        {
            DataColumn dataColumn = designColumn.DataColumn;

            valueExpr = null;
            fieldInit = null;
            if (((((dataColumn.DataType == typeof(char)) || (dataColumn.DataType == typeof(string))) || ((dataColumn.DataType == typeof(decimal)) || (dataColumn.DataType == typeof(bool)))) || (((dataColumn.DataType == typeof(float)) || (dataColumn.DataType == typeof(double))) || ((dataColumn.DataType == typeof(sbyte)) || (dataColumn.DataType == typeof(byte))))) || ((((dataColumn.DataType == typeof(short)) || (dataColumn.DataType == typeof(ushort))) || ((dataColumn.DataType == typeof(int)) || (dataColumn.DataType == typeof(uint)))) || ((dataColumn.DataType == typeof(long)) || (dataColumn.DataType == typeof(ulong)))))
            {
                valueExpr = Primitive(valueObj);
            }
            else
            {
                valueExpr = Field(TypeExpr(Type(className)), fieldName);
                if (dataColumn.DataType == typeof(byte[]))
                {
                    fieldInit = MethodCall(GlobalTypeExpr(typeof(Convert)), "FromBase64String", Primitive(value));
                }
                else if (dataColumn.DataType == typeof(DateTime))
                {
                    DateTime time = (DateTime)valueObj;
                    fieldInit = MethodCall(GlobalTypeExpr(dataColumn.DataType), "Parse", Primitive(time.ToString("s", DateTimeFormatInfo.InvariantInfo)));
                }
                else if (dataColumn.DataType == typeof(TimeSpan))
                {
                    fieldInit = MethodCall(GlobalTypeExpr(dataColumn.DataType), "Parse", Primitive(valueObj.ToString()));
                }
                else
                {
                    ConstructorInfo constructor = dataColumn.DataType.GetConstructor(new System.Type[] { typeof(string) });
                    if (constructor == null)
                    {
                        return(new DSGeneratorProblem(System.Design.SR.GetString("CG_NoCtor1", new object[] { dataColumn.ColumnName, dataColumn.DataType.Name }), ProblemSeverity.NonFatalError, designColumn));
                    }
                    constructor.Invoke(new object[] { value });
                    fieldInit = New(GlobalType(dataColumn.DataType), new CodeExpression[] { Primitive(value) });
                }
            }
            return(null);
        }
示例#7
0
        private void ProcessColumnRelatedNames(DesignColumn column)
        {
            bool   flag            = !StringUtil.EqualValue(column.Name, column.UserColumnName, this.languageCaseInsensitive);
            bool   usesAnnotations = false;
            bool   flag3           = false;
            string name            = this.TableColumnPropertyName(column.DataColumn, out usesAnnotations);
            string str2            = this.PlainTableColumnPropertyName(column.DataColumn, out usesAnnotations);

            if (usesAnnotations)
            {
                column.GeneratorColumnPropNameInTable = str2;
            }
            else
            {
                if (flag || StringUtil.Empty(column.GeneratorColumnPropNameInTable))
                {
                    column.GeneratorColumnPropNameInTable = this.validator.GenerateIdName(name);
                }
                else
                {
                    column.GeneratorColumnPropNameInTable = this.validator.GenerateIdName(column.GeneratorColumnPropNameInTable);
                }
                if (!StringUtil.EqualValue(this.validator.GenerateIdName(name), column.GeneratorColumnPropNameInTable))
                {
                    column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINTABLE);
                    flag3 = true;
                }
            }
            string str3 = this.TableColumnVariableName(column.DataColumn, out usesAnnotations);
            string str4 = this.PlainTableColumnVariableName(column.DataColumn, out usesAnnotations);

            if (usesAnnotations)
            {
                column.GeneratorColumnVarNameInTable = str4;
            }
            else
            {
                if (flag || StringUtil.Empty(column.GeneratorColumnVarNameInTable))
                {
                    column.GeneratorColumnVarNameInTable = this.validator.GenerateIdName(str3);
                }
                else
                {
                    column.GeneratorColumnVarNameInTable = this.validator.GenerateIdName(column.GeneratorColumnVarNameInTable);
                }
                if (!StringUtil.EqualValue(this.validator.GenerateIdName(str3), column.GeneratorColumnVarNameInTable))
                {
                    column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNVARNAMEINTABLE);
                    flag3 = true;
                }
            }
            string str5 = this.RowColumnPropertyName(column.DataColumn, out usesAnnotations);
            string str6 = this.PlainRowColumnPropertyName(column.DataColumn, out usesAnnotations);

            if (usesAnnotations)
            {
                column.GeneratorColumnPropNameInRow = str6;
            }
            else
            {
                if (flag || StringUtil.Empty(column.GeneratorColumnPropNameInRow))
                {
                    column.GeneratorColumnPropNameInRow = this.validator.GenerateIdName(str5);
                }
                else
                {
                    column.GeneratorColumnPropNameInRow = this.validator.GenerateIdName(column.GeneratorColumnPropNameInRow);
                }
                if (!StringUtil.EqualValue(this.validator.GenerateIdName(str5), column.GeneratorColumnPropNameInRow))
                {
                    column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINROW);
                    flag3 = true;
                }
            }
            column.UserColumnName = column.Name;
            if (flag3)
            {
                column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_USER_COLUMNNAME);
            }
        }
示例#8
0
 public void Remove(DesignColumn column)
 {
     base.List.Remove(column);
 }
示例#9
0
 public int IndexOf(DesignColumn column)
 {
     return(base.List.IndexOf(column));
 }
 public void Remove(DesignColumn column)
 {
     base.List.Remove(column);
 }
 public int IndexOf(DesignColumn column)
 {
     return base.List.IndexOf(column);
 }
 internal static DSGeneratorProblem GenerateValueExprAndFieldInit(DesignColumn designColumn, object valueObj, object value, string className, string fieldName, out CodeExpression valueExpr, out CodeExpression fieldInit)
 {
     DataColumn dataColumn = designColumn.DataColumn;
     valueExpr = null;
     fieldInit = null;
     if (((((dataColumn.DataType == typeof(char)) || (dataColumn.DataType == typeof(string))) || ((dataColumn.DataType == typeof(decimal)) || (dataColumn.DataType == typeof(bool)))) || (((dataColumn.DataType == typeof(float)) || (dataColumn.DataType == typeof(double))) || ((dataColumn.DataType == typeof(sbyte)) || (dataColumn.DataType == typeof(byte))))) || ((((dataColumn.DataType == typeof(short)) || (dataColumn.DataType == typeof(ushort))) || ((dataColumn.DataType == typeof(int)) || (dataColumn.DataType == typeof(uint)))) || ((dataColumn.DataType == typeof(long)) || (dataColumn.DataType == typeof(ulong)))))
     {
         valueExpr = Primitive(valueObj);
     }
     else
     {
         valueExpr = Field(TypeExpr(Type(className)), fieldName);
         if (dataColumn.DataType == typeof(byte[]))
         {
             fieldInit = MethodCall(GlobalTypeExpr(typeof(Convert)), "FromBase64String", Primitive(value));
         }
         else if (dataColumn.DataType == typeof(DateTime))
         {
             DateTime time = (DateTime) valueObj;
             fieldInit = MethodCall(GlobalTypeExpr(dataColumn.DataType), "Parse", Primitive(time.ToString("s", DateTimeFormatInfo.InvariantInfo)));
         }
         else if (dataColumn.DataType == typeof(TimeSpan))
         {
             fieldInit = MethodCall(GlobalTypeExpr(dataColumn.DataType), "Parse", Primitive(valueObj.ToString()));
         }
         else
         {
             ConstructorInfo constructor = dataColumn.DataType.GetConstructor(new System.Type[] { typeof(string) });
             if (constructor == null)
             {
                 return new DSGeneratorProblem(System.Design.SR.GetString("CG_NoCtor1", new object[] { dataColumn.ColumnName, dataColumn.DataType.Name }), ProblemSeverity.NonFatalError, designColumn);
             }
             constructor.Invoke(new object[] { value });
             fieldInit = New(GlobalType(dataColumn.DataType), new CodeExpression[] { Primitive(value) });
         }
     }
     return null;
 }
        private void InitClassAndInitVarsMethods(CodeTypeDeclaration tableClass, out CodeMemberMethod tableInitClass, out CodeMemberMethod tableInitVars)
        {
            DataTable dataTable = this.designTable.DataTable;

            tableInitClass = CodeGenHelper.MethodDecl(CodeGenHelper.GlobalType(typeof(void)), "InitClass", MemberAttributes.Private);
            tableInitVars  = CodeGenHelper.MethodDecl(CodeGenHelper.GlobalType(typeof(void)), "InitVars", MemberAttributes.Assembly | MemberAttributes.Final);
            for (int i = 0; i < dataTable.Columns.Count; i++)
            {
                DataColumn     column = dataTable.Columns[i];
                string         generatorColumnVarNameInTable = this.codeGenerator.TableHandler.Tables[dataTable.TableName].DesignColumns[column.ColumnName].GeneratorColumnVarNameInTable;
                CodeExpression left = CodeGenHelper.Field(CodeGenHelper.This(), generatorColumnVarNameInTable);
                string         str2 = "Element";
                if (column.ColumnMapping == MappingType.SimpleContent)
                {
                    str2 = "SimpleContent";
                }
                else if (column.ColumnMapping == MappingType.Attribute)
                {
                    str2 = "Attribute";
                }
                else if (column.ColumnMapping == MappingType.Hidden)
                {
                    str2 = "Hidden";
                }
                tableInitClass.Statements.Add(CodeGenHelper.Assign(left, CodeGenHelper.New(CodeGenHelper.GlobalType(typeof(DataColumn)), new CodeExpression[] { CodeGenHelper.Str(column.ColumnName), CodeGenHelper.TypeOf(CodeGenHelper.GlobalType(column.DataType)), CodeGenHelper.Primitive(null), CodeGenHelper.Field(CodeGenHelper.GlobalTypeExpr(typeof(MappingType)), str2) })));
                ExtendedPropertiesHandler.CodeGenerator = this.codeGenerator;
                ExtendedPropertiesHandler.AddExtendedProperties(this.designTable.DesignColumns[column.ColumnName], left, tableInitClass.Statements, column.ExtendedProperties);
                tableInitClass.Statements.Add(CodeGenHelper.MethodCall(CodeGenHelper.Property(CodeGenHelper.Base(), "Columns"), "Add", CodeGenHelper.Field(CodeGenHelper.This(), generatorColumnVarNameInTable)));
            }
            for (int j = 0; j < dataTable.Constraints.Count; j++)
            {
                if (dataTable.Constraints[j] is UniqueConstraint)
                {
                    UniqueConstraint constraint   = (UniqueConstraint)dataTable.Constraints[j];
                    DataColumn[]     columns      = constraint.Columns;
                    CodeExpression[] initializers = new CodeExpression[columns.Length];
                    for (int m = 0; m < columns.Length; m++)
                    {
                        initializers[m] = CodeGenHelper.Field(CodeGenHelper.This(), this.codeGenerator.TableHandler.Tables[columns[m].Table.TableName].DesignColumns[columns[m].ColumnName].GeneratorColumnVarNameInTable);
                    }
                    tableInitClass.Statements.Add(CodeGenHelper.MethodCall(CodeGenHelper.Property(CodeGenHelper.This(), "Constraints"), "Add", CodeGenHelper.New(CodeGenHelper.GlobalType(typeof(UniqueConstraint)), new CodeExpression[] { CodeGenHelper.Str(constraint.ConstraintName), new CodeArrayCreateExpression(CodeGenHelper.GlobalType(typeof(DataColumn)), initializers), CodeGenHelper.Primitive(constraint.IsPrimaryKey) })));
                }
            }
            for (int k = 0; k < dataTable.Columns.Count; k++)
            {
                DataColumn     component   = dataTable.Columns[k];
                string         str3        = this.codeGenerator.TableHandler.Tables[dataTable.TableName].DesignColumns[component.ColumnName].GeneratorColumnVarNameInTable;
                CodeExpression expression2 = CodeGenHelper.Field(CodeGenHelper.This(), str3);
                tableInitVars.Statements.Add(CodeGenHelper.Assign(expression2, CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.Base(), "Columns"), CodeGenHelper.Str(component.ColumnName))));
                if (component.AutoIncrement)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "AutoIncrement"), CodeGenHelper.Primitive(true)));
                }
                if (component.AutoIncrementSeed != 0L)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "AutoIncrementSeed"), CodeGenHelper.Primitive(component.AutoIncrementSeed)));
                }
                if (component.AutoIncrementStep != 1L)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "AutoIncrementStep"), CodeGenHelper.Primitive(component.AutoIncrementStep)));
                }
                if (!component.AllowDBNull)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "AllowDBNull"), CodeGenHelper.Primitive(false)));
                }
                if (component.ReadOnly)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "ReadOnly"), CodeGenHelper.Primitive(true)));
                }
                if (component.Unique)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "Unique"), CodeGenHelper.Primitive(true)));
                }
                if (!StringUtil.Empty(component.Prefix))
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "Prefix"), CodeGenHelper.Str(component.Prefix)));
                }
                if (columnNamespaceProperty.ShouldSerializeValue(component))
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "Namespace"), CodeGenHelper.Str(component.Namespace)));
                }
                if (component.Caption != component.ColumnName)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "Caption"), CodeGenHelper.Str(component.Caption)));
                }
                if (component.DefaultValue != DBNull.Value)
                {
                    CodeExpression     valueExpr    = null;
                    CodeExpression     fieldInit    = null;
                    DesignColumn       designColumn = this.codeGenerator.TableHandler.Tables[dataTable.TableName].DesignColumns[component.ColumnName];
                    DSGeneratorProblem problem      = CodeGenHelper.GenerateValueExprAndFieldInit(designColumn, component.DefaultValue, component.DefaultValue, this.designTable.GeneratorTableClassName, str3 + "_defaultValue", out valueExpr, out fieldInit);
                    if (problem != null)
                    {
                        this.codeGenerator.ProblemList.Add(problem);
                    }
                    else
                    {
                        if (fieldInit != null)
                        {
                            CodeMemberField field = CodeGenHelper.FieldDecl(CodeGenHelper.Type(component.DataType.FullName), str3 + "_defaultValue");
                            field.Attributes     = MemberAttributes.Private | MemberAttributes.Static;
                            field.InitExpression = fieldInit;
                            tableClass.Members.Add(field);
                        }
                        CodeCastExpression right = new CodeCastExpression(component.DataType, valueExpr);
                        right.UserData.Add("CastIsBoxing", true);
                        tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "DefaultValue"), right));
                    }
                }
                if (component.MaxLength != -1)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "MaxLength"), CodeGenHelper.Primitive(component.MaxLength)));
                }
                if (component.DateTimeMode != DataSetDateTime.UnspecifiedLocal)
                {
                    tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(expression2, "DateTimeMode"), CodeGenHelper.Field(CodeGenHelper.GlobalTypeExpr(typeof(DataSetDateTime)), component.DateTimeMode.ToString())));
                }
            }
            if (caseSensitiveProperty.ShouldSerializeValue(dataTable))
            {
                tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.This(), "CaseSensitive"), CodeGenHelper.Primitive(dataTable.CaseSensitive)));
            }
            if ((dataTable.Locale != null) && localeProperty.ShouldSerializeValue(dataTable))
            {
                tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.This(), "Locale"), CodeGenHelper.New(CodeGenHelper.GlobalType(typeof(CultureInfo)), new CodeExpression[] { CodeGenHelper.Str(dataTable.Locale.ToString()) })));
            }
            if (!StringUtil.Empty(dataTable.Prefix))
            {
                tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.This(), "Prefix"), CodeGenHelper.Str(dataTable.Prefix)));
            }
            if (namespaceProperty.ShouldSerializeValue(dataTable))
            {
                tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.This(), "Namespace"), CodeGenHelper.Str(dataTable.Namespace)));
            }
            if (dataTable.MinimumCapacity != 50)
            {
                tableInitClass.Statements.Add(CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.This(), "MinimumCapacity"), CodeGenHelper.Primitive(dataTable.MinimumCapacity)));
            }
            ExtendedPropertiesHandler.CodeGenerator = this.codeGenerator;
            ExtendedPropertiesHandler.AddExtendedProperties(this.designTable, CodeGenHelper.This(), tableInitClass.Statements, dataTable.ExtendedProperties);
        }
 private void ProcessColumnRelatedNames(DesignColumn column)
 {
     bool flag = !StringUtil.EqualValue(column.Name, column.UserColumnName, this.languageCaseInsensitive);
     bool usesAnnotations = false;
     bool flag3 = false;
     string name = this.TableColumnPropertyName(column.DataColumn, out usesAnnotations);
     string str2 = this.PlainTableColumnPropertyName(column.DataColumn, out usesAnnotations);
     if (usesAnnotations)
     {
         column.GeneratorColumnPropNameInTable = str2;
     }
     else
     {
         if (flag || StringUtil.Empty(column.GeneratorColumnPropNameInTable))
         {
             column.GeneratorColumnPropNameInTable = this.validator.GenerateIdName(name);
         }
         else
         {
             column.GeneratorColumnPropNameInTable = this.validator.GenerateIdName(column.GeneratorColumnPropNameInTable);
         }
         if (!StringUtil.EqualValue(this.validator.GenerateIdName(name), column.GeneratorColumnPropNameInTable))
         {
             column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINTABLE);
             flag3 = true;
         }
     }
     string str3 = this.TableColumnVariableName(column.DataColumn, out usesAnnotations);
     string str4 = this.PlainTableColumnVariableName(column.DataColumn, out usesAnnotations);
     if (usesAnnotations)
     {
         column.GeneratorColumnVarNameInTable = str4;
     }
     else
     {
         if (flag || StringUtil.Empty(column.GeneratorColumnVarNameInTable))
         {
             column.GeneratorColumnVarNameInTable = this.validator.GenerateIdName(str3);
         }
         else
         {
             column.GeneratorColumnVarNameInTable = this.validator.GenerateIdName(column.GeneratorColumnVarNameInTable);
         }
         if (!StringUtil.EqualValue(this.validator.GenerateIdName(str3), column.GeneratorColumnVarNameInTable))
         {
             column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNVARNAMEINTABLE);
             flag3 = true;
         }
     }
     string str5 = this.RowColumnPropertyName(column.DataColumn, out usesAnnotations);
     string str6 = this.PlainRowColumnPropertyName(column.DataColumn, out usesAnnotations);
     if (usesAnnotations)
     {
         column.GeneratorColumnPropNameInRow = str6;
     }
     else
     {
         if (flag || StringUtil.Empty(column.GeneratorColumnPropNameInRow))
         {
             column.GeneratorColumnPropNameInRow = this.validator.GenerateIdName(str5);
         }
         else
         {
             column.GeneratorColumnPropNameInRow = this.validator.GenerateIdName(column.GeneratorColumnPropNameInRow);
         }
         if (!StringUtil.EqualValue(this.validator.GenerateIdName(str5), column.GeneratorColumnPropNameInRow))
         {
             column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_GENERATOR_COLUMNPROPNAMEINROW);
             flag3 = true;
         }
     }
     column.UserColumnName = column.Name;
     if (flag3)
     {
         column.NamingPropertyNames.Add(DesignColumn.EXTPROPNAME_USER_COLUMNNAME);
     }
 }