private static void writeClass( DBConnection cn, string tableName, bool isRevisionHistoryTable, bool isRevisionHistoryClass ) { columns = new TableColumns( cn, tableName, isRevisionHistoryClass ); writer.WriteLine( "public partial class " + GetClassName( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass ) + " {" ); var revisionHistorySuffix = GetRevisionHistorySuffix( isRevisionHistoryClass ); // Write public static methods. writeInsertRowMethod( tableName, revisionHistorySuffix, "", columns.KeyColumns ); writeInsertRowMethod( tableName, revisionHistorySuffix, "WithoutAdditionalLogic", columns.KeyColumns ); writeUpdateRowsMethod( cn, tableName, revisionHistorySuffix, "" ); writeUpdateRowsMethod( cn, tableName, revisionHistorySuffix, "WithoutAdditionalLogic" ); writeDeleteRowsMethod( cn, tableName, revisionHistorySuffix, true ); writeDeleteRowsMethod( cn, tableName, revisionHistorySuffix + "WithoutAdditionalLogic", false ); writePrivateDeleteRowsMethod( cn, tableName, isRevisionHistoryClass ); writer.WriteLine( "static partial void preDelete( List<" + DataAccessStatics.GetTableConditionInterfaceName( cn, database, tableName ) + "> conditions, ref " + getPostDeleteCallClassName( cn, tableName ) + " postDeleteCall );" ); writer.WriteLine( "private ModificationType modType;" ); writer.WriteLine( "private List<" + DataAccessStatics.GetTableConditionInterfaceName( cn, database, tableName ) + "> conditions;" ); foreach( var column in columns.AllColumnsExceptRowVersion ) writeFieldsAndPropertiesForColumn( column ); foreach( var column in columns.DataColumns.Where( i => !columns.KeyColumns.Contains( i ) ) ) FormItemStatics.WriteFormItemGetters( writer, column.GetModificationField() ); // Write constructors. writeCreateForInsertMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix ); writeCreateForUpdateMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix ); if( columns.DataColumns.Any() ) writeCreateForSingleRowUpdateMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix ); writeGetConditionListMethod( cn, tableName ); writer.WriteLine( "private " + GetClassName( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass ) + "() {}" ); if( columns.DataColumns.Any() ) writeSetAllDataMethod(); // Write execute methods and helpers. writeExecuteMethod( tableName ); writer.WriteLine( "partial void preInsert();" ); writer.WriteLine( "partial void preUpdate();" ); writeExecuteWithoutAdditionalLogicMethod( tableName ); writeExecuteInsertOrUpdateMethod( cn, tableName, isRevisionHistoryClass, columns.KeyColumns, columns.IdentityColumn ); writeAddColumnModificationsMethod( columns.AllNonIdentityColumnsExceptRowVersion ); if( isRevisionHistoryClass ) { writeCopyLatestRevisionsMethod( cn, tableName, columns.AllNonIdentityColumnsExceptRowVersion ); DataAccessStatics.WriteGetLatestRevisionsConditionMethod( writer, columns.PrimaryKeyAndRevisionIdColumn.Name ); } writeRethrowAsEwfExceptionIfNecessary(); writer.WriteLine( "static partial void populateConstraintNamesToViolationErrorMessages( Dictionary<string,string> constraintNamesToViolationErrorMessages );" ); writer.WriteLine( "partial void postInsert();" ); writer.WriteLine( "partial void postUpdate();" ); writeMarkColumnValuesUnchangedMethod(); writer.WriteLine( "}" ); }
internal static void WriteClassIfNecessary(TextWriter writer, IEnumerable <WebItemParameter> parameters) { if (!parameters.Any()) { return; } writer.WriteLine("internal class ParametersModification {"); foreach (var parameter in parameters) { writer.WriteLine("private readonly DataValue<{0}> {1} = new DataValue<{0}>();".FormatWith(parameter.TypeName, parameter.Name)); if (parameter.IsString || parameter.IsEnumerable) { writePropertyDocComment(writer, parameter); writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " {"); writer.WriteLine("get { return " + parameter.Name + ".Value; }"); // setter writer.WriteLine("set {"); writer.WriteLine("if( value == null )"); writer.WriteLine("throw new ApplicationException( \"You cannot specify null for the value of a string or an IEnumerable.\" );"); writer.WriteLine(parameter.Name + ".Value = value;"); writer.WriteLine("}"); writer.WriteLine("}"); } else { writePropertyDocComment(writer, parameter); writer.WriteLine( "internal " + parameter.TypeName + " " + parameter.PropertyName + " { get { return " + parameter.Name + ".Value; } set { " + parameter.Name + ".Value = value; } }"); } FormItemStatics.WriteFormItemGetters(writer, parameter.GetModificationField()); } writer.WriteLine("}"); }
internal static void WriteClassIfNecessary(TextWriter writer, IEnumerable <VariableSpecification> parameters) { if (!parameters.Any()) { return; } writer.WriteLine("internal class ParametersModification: ParametersModificationBase {"); foreach (var parameter in parameters) { if (parameter.IsString || parameter.IsEnumerable) { writer.WriteLine("private " + parameter.TypeName + " " + parameter.Name + ";"); writePropertyDocComment(writer, parameter); writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " {"); writer.WriteLine("get { return " + parameter.Name + "; }"); // setter writer.WriteLine("set {"); writer.WriteLine("if( value == null )"); writer.WriteLine("throw new ApplicationException( \"You cannot specify null for the value of a string or an IEnumerable.\" );"); writer.WriteLine(parameter.Name + " = value;"); writer.WriteLine("}"); writer.WriteLine("}"); } else { writePropertyDocComment(writer, parameter); writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " { get; set; }"); } FormItemStatics.WriteFormItemGetters(writer, parameter.GetModificationField()); } writer.WriteLine("}"); }