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; }
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; }
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); } }
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); }
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); } }
public void Remove(DesignColumn column) { base.List.Remove(column); }
public int IndexOf(DesignColumn column) { return(base.List.IndexOf(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); }