##|TYPE Template ##|UNIQUEID 6595a86a-4169-4775-95fd-01a2170b0db9 ##|TITLE EasyObject VbNet Business Entity ##|NAMESPACE EasyObject.VbNet ##|SOURCE_TYPE Source ##|OUTPUT_LANGUAGE VB.Net ##|GUI_ENGINE Microsoft Script ##|GUI_LANGUAGE VBScript ##|GUI_BEGIN Dim lstTables Dim chk Sub setup() If Not input.Contains("lstTables") Or Not input.Contains("txtPath") Then If context.Objects.ContainsKey("DnpUtils") Then DnpUtils.ReadInputFromCache(context) End if ui.Title = "Generate VB.NET EasyObject Business Objects" ui.Width = 330 ui.Height = 640 ' Grab default output path Dim sOutputPath sOutputPath = "" If input.Contains("defaultOutputPath") Then sOutputPath = input.Item("defaultOutputPath") End If ui.AddLabel "lblPath", "Output file path: ", "Select the output path." ui.AddTextBox "txtPath", sOutputPath, "Select the Output Path." ui.AddFilePicker "btnPath", "Select Path", "Select the Output Path.", "txtPath", true ui.AddLabel "lblNameSpace", "Default Namespace", "Enter the default NameSpace" ui.AddTextbox "txtNamespace" ,sNamespace , "Enter a namespace for the Entity Classes" ' List Databases in a ComboBox ui.AddLabel "lblDatabases", "Select a database:", "Select a database in the dropdown below." Set cmbDatabases = ui.AddComboBox("cmbDatabase", "Select a database.") ' List Tables in a listbox ui.AddLabel "lblTables", "Select tables:", "Select tables from the listbox below." Set lstTables = ui.AddListBox ("lstTables", "Select tables:") 'lstTables.IsMultiSelect = false lstTables.Height = 120 ' Prefix ui.AddLabel "lblPrefix", "Procedure prefix:", "Enter a procedure prefix." Set txtPrefix = ui.AddTextBox("txtPrefix", "", "Enter the procedure prefix") ' List proc formats ui.AddLabel "lblFormat", "Select procedure format:", "Select a procedure format from the listbox below." Set cmbFormat = ui.AddComboBox("cmbFormat", "Select a procedure format.") cmbFormat.AttachEvent "onchange", "cmbFormat_onchange" Set txtFormat = ui.AddTextBox("txtFormat", "", "Enter the procedure format") txtFormat.Enabled = false setupFormatDropdown cmbFormat Set prefix = ui.AddCheckBox("prefix", "Prefix class with underscore?", true, "If checked, the file on disk will begin with an underscore") 'Set outputParams = ui.AddCheckBox("OutputParameters", "Database supports OUTPUT parameters?", true, "If checked, the template will retrieve values using OUTPUT parameters") ' Attach the onchange event to the cmbDatabases control. setupDatabaseDropdown cmbDatabases cmbDatabases.AttachEvent "onchange", "cmbDatabases_onchange" ui.ShowGUI = true Else ui.ShowGUI = false End if End Sub Sub setupDatabaseDropdown(cmbDatabases) cmbDatabases.BindData MyMeta.Databases If Not MyMeta.DefaultDatabase Is Nothing Then cmbDatabases.SelectedValue = MyMeta.DefaultDatabase.Name bindTables cmbDatabases.SelectedValue End If End Sub Sub bindTables(sDatabase) Set db = MyMeta.Databases.Item(sDatabase) lstTables.BindData(db.Tables) End Sub ' Event Handler Sub cmbDatabases_onchange(control) Set cmbDatabases = ui.item("cmbDatabase") bindTables cmbDatabases.SelectedText End Sub Sub setupFormatDropdown(cmbFormat) cmbFormat.Add "daab", "ASP.NET Starter Kits" cmbFormat.Add "doodads", "dOOdads" cmbFormat.Add "custom", "Custom" cmbFormat.SelectedValue = "daab" cmbFormat_onchange(cmbFormat) End Sub Sub cmbFormat_onchange(control) Set txtPrefix = ui.item("txtPrefix") Set txtFormat = ui.item("txtFormat") txtFormat.Enabled = False Select Case control.SelectedValue Case "daab" txtFormat.Text = "{prefix}{verb}{table}" txtPrefix.Text = "daab_" Case "doodads" txtFormat.Text = "{prefix}{table}{verb}" txtPrefix.Text = "proc_" Case "custom" txtFormat.Enabled = True End Select End Sub ##|GUI_END ##|BODY_MODE Markup ##|BODY_ENGINE Microsoft Script ##|BODY_LANGUAGE VBScript ##|BODY_TAG_START <% ##|BODY_TAG_END %> ##|BODY_BEGIN <% '------------------------------------------------------------------------------ ' Copyright 2005 by Noonan Consulting Inc. ' All Rights Reserved ' ' Permission to use, copy, modify, and distribute this software and its ' documentation for any purpose and without fee is hereby granted, ' provided that the above copyright notice appear in all copies and that ' both that copyright notice and this permission notice appear in ' supporting documentation. ' ' NCI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS ' SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ' AND FITNESS, IN NO EVENT SHALL NCI BE LIABLE FOR ANY ' SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ' WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ' WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ' TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ' OR PERFORMANCE OF THIS SOFTWARE. '------------------------------------------------------------------------------ ' VbNet_EasyObject_BusinessEntity.vbgen ' Last Update : 03/21/2006 '------------------------------------------------------------------------------ If context.Objects.ContainsKey("DnpUtils") Then DnpUtils.SaveInputToCache(context) End if Dim bFirst Dim name Dim pname Dim objTable Dim objColumn Dim tableNames Dim language Dim databaseName Dim database Dim namespace Dim props Dim IDbCommand Dim IDataParameter Dim ParameterPrefix prefix = input.Item("prefix") 'outputParams = input.Item("OutputParameters") outputParams = (MyMeta.DriverString <> "ACCESS") ' Grab the namespace namespace = input.Item("txtNamespace") ' Set the Language for our column data types ' Grab the choices the user made in our UI Script (see Interface Code tab) Set tableNames = input.Item("lstTables") sPrefix = input.Item("txtPrefix") sFormat = input.Item("txtFormat") sStyle = input.Item("cmbFormat") databaseName = input.Item("cmbDatabase") Set database = MyMeta.Databases(databaseName) ' Loop through the tables the user selected and generate the business entities For intLp = 0 To tableNames.Count - 1 Set objTable = database.Tables(tablenames.item(intLp)) Set props = objTable.Properties '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Now we have the table that we desire to build a Business Object From, let us begin. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %>'=============================================================================== ' Generated From - VbNet_EasyObject_BusinessEntity.vbgen ' ' ** IMPORTANT ** ' ' This object is 'MustInherit' which means you need to inherit from it to be able ' to instantiate it. This is very easily done. You can override properties and ' methods in your derived class, this allows you to regenerate this class at any ' time and not worry about overwriting custom code. ' ' NEVER EDIT THIS FILE. ' ' Public Class YourObject ' Inherits _YourObject ' ' End Class ' '=============================================================================== ' EasyObjects.NET version 1.1 ' Generated by MyGeneration Version # (<%= input.Item("__version") %>) Imports System Imports System.Data Imports System.Configuration Imports System.Collections Imports System.Collections.Specialized Imports System.Xml Imports System.IO Imports Microsoft.Practices.EnterpriseLibrary.Data Imports NCI.EasyObjects <% If Len(namespace) > 1 Then output.writeLn vbCrLf & "NameSpace " & namespace End if %> #Region " Schema " Public Class <%= TrimSpaces(objTable.Alias) %>Schema Inherits NCI.EasyObjects.Schema Private Shared _entries As ArrayList <% output.tabLevel = 1 ' List all fields as member variables For Each objColumn In objTable.Columns name = objColumn.Name alias = GetAlias(objColumn) isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if Select Case LCase(objColumn.LanguageType) Case "string" 'output.autoTabLn "Public Shared " & alias & " As New SchemaItem(""" & name & """, " & objColumn.DbTargetType & ", SchemaItemJustify.None, " & objColumn.CharacterMaxLength & ")" output.autoTabLn "Public Shared " & alias & " As New SchemaItem(""" & name & """, " & objColumn.DbTargetType & ", SchemaItemJustify.None, " & objColumn.CharacterMaxLength & ", " & ConvertToBoolean(objColumn.IsNullable) & ", " & ConvertToBoolean(objColumn.IsInPrimaryKey) & ", " & ConvertToBoolean(objColumn.IsInForeignKey) & ", " & ConvertToBoolean(objColumn.HasDefault) & ")" Case Else 'output.autoTab "Public Shared " & alias & " As New SchemaItem(""" & name & """, " & objColumn.DbTargetType output.autoTabLn "Public Shared " & alias & " As New SchemaItem(""" & name & """, " & objColumn.DbTargetType & ", " & ConvertToBoolean(isAutoKey) & ", " & ConvertToBoolean(objColumn.IsNullable) & ", " & ConvertToBoolean(objColumn.IsComputed) & ", " & ConvertToBoolean(objColumn.IsInPrimaryKey) & ", " & ConvertToBoolean(objColumn.IsInForeignKey) & ", " & ConvertToBoolean(objColumn.HasDefault) & ")" End Select Next %> Public Overrides ReadOnly Property SchemaEntries() As ArrayList Get If _entries Is Nothing Then _entries = New ArrayList() <% output.tabLevel = 4 ' Load all fields into the ArrayList For Each objColumn In objTable.Columns alias = GetAlias(objColumn) output.autoTabLn "_entries.Add(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ")" If objColumn.IsComputed Then output.autoTabLn TrimSpaces(objTable.Alias) & "Schema." & alias & ".IsComputed = True" End If propName = "SEQ:I:" & objColumn.Name If props.ContainsKey(propName) Then output.autoTabLn TrimSpaces(objTable.Alias) & "Schema." & alias & ".Properties.Add(""SEQ:I"", """ & props(propName).Value& """)" End if propName = "SEQ:U:" & objColumn.Name If props.ContainsKey(propName) Then output.autoTabLn TrimSpaces(objTable.Alias) & "Schema." & alias & ".Properties.Add(""SEQ:U"", """ & props(propName).Value& """)" output.autoTabLn TrimSpaces(objTable.Alias) & "Schema." & alias & ".IsRowID = True" End if Next %> End If Return _entries End Get End Property End Class #End Region Public MustInherit Class <%= "_" & TrimSpaces(objTable.Alias) %> Inherits NCI.EasyObjects.EasyObject Sub New() Dim _schema As New <%= TrimSpaces(objTable.Alias) %>Schema() Me.SchemaEntries = _schema.SchemaEntries <% output.write "Me.SchemaGlobal = """ + objTable.Schema + """" %> End Sub Public Overrides Sub FlushData() Me._whereClause = Nothing Me._aggregateClause = Nothing MyBase.FlushData() End Sub ''' ''' Loads the business object with info from the database, based on the requested primary key. ''' <% output.tabLevel = 1 For Each objColumn in objTable.PrimaryKeys output.autoTabLn "''' " & objColumn.Description & "" Next %> ''' A Boolean indicating success or failure of the query Public Function LoadByPrimaryKey(<% bFirst = true For Each objColumn in objTable.PrimaryKeys If Not bFirst Then output.write ", " End If output.write "ByVal " & GetAlias(objColumn) & " As " & objColumn.LanguageType bFirst = false Next %>) As Boolean Select Case Me.DefaultCommandType Case CommandType.StoredProcedure Dim parameters As ListDictionary = New ListDictionary ' Add in parameters <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "parameters.Add(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName, " & alias & ")" Next %> Return MyBase.LoadFromSql(Me.SchemaStoredProcedureWithSeparator & "<%= CreateProcedureName(objTable, "K") %>", parameters, CommandType.StoredProcedure) Case CommandType.Text Me.Query.ClearAll() Me.Where.WhereClauseReset() <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "Me.Where." & alias & ".Value = " & alias Next %> Return Me.Query.Load() Case Else Throw New ArgumentException("Invalid CommandType", "commandType") End Select End Function ''' ''' Loads all records from the table. ''' ''' A Boolean indicating success or failure of the query Public Function LoadAll() As Boolean Select Case Me.DefaultCommandType Case CommandType.StoredProcedure Dim parameters As ListDictionary = Nothing Return MyBase.LoadFromSql(Me.SchemaStoredProcedureWithSeparator & "<%= CreateProcedureName(objTable, "L") %>", parameters, CommandType.StoredProcedure) Case CommandType.Text Me.Query.ClearAll() Me.Where.WhereClauseReset() Return Me.Query.Load() Case Else Throw New ArgumentException("Invalid CommandType", "commandType") End Select End Function ''' ''' Adds a new record to the internal table. ''' Public Overrides Sub AddNew() MyBase.AddNew() <% output.tabLevel = 2 For Each objColumn in objTable.Columns If objColumn.Default = "newid()" Or objColumn.Default = "GenGUID()" Then output.autoTabLn "Me." + GetAlias(objColumn) +" = Guid.NewGuid()" End If Next %> End Sub Protected Overloads Overrides Function GetInsertCommand(commandType As CommandType) As DBCommandWrapper Dim dbCommandWrapper As DBCommandWrapper ' Create the Database object, using the default database service. The ' default database service is determined through configuration. Dim db As Database = GetDatabase() Select Case commandType Case CommandType.StoredProcedure Dim sqlCommand As String = Me.SchemaStoredProcedureWithSeparator & "<%= CreateProcedureName(objTable, "I") %>" dbCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand) <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if If isAutoKey Then name = GetActualName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, " & objColumn.DbTargetType & ", " & objColumn.CharacterMaxLength & ", ParameterDirection.Output, true, 0, 0, """ & name & """, DataRowVersion.Default, Convert.DBNull)" End If Next %> CreateParameters(dbCommandWrapper) Case CommandType.Text Me.Query.ClearAll() Me.Where.WhereClauseReset() For Each item As SchemaItem In Me.SchemaEntries If Not item.IsComputed Then If (item.IsAutoKey And Me.IdentityInsert) Or Not item.IsAutoKey Then Me.Query.AddInsertColumn(item) End If End If Next dbCommandWrapper = Me.Query.GetInsertCommandWrapper() dbCommandWrapper.Command.Parameters.Clear() If Me.IdentityInsert Then <% output.tabLevel = 5 For Each objColumn in objTable.PrimaryKeys isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if If isAutoKey Then name = objColumn.Name alias = GetAlias(objColumn) output.autoTabLn "dbCommandWrapper.AddInParameter(""" & alias & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Default)" End If Next %> Else <% output.tabLevel = 5 For Each objColumn in objTable.PrimaryKeys isAutoKey = objColumn.IsAutoKey inputOutput = "Output" If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True inputOutput = "InputOutput" End if If isAutoKey Then name = GetActualName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, " & objColumn.DbTargetType & ", " & objColumn.CharacterMaxLength & ", ParameterDirection." & inputOutput & ", true, 0, 0, """ & name & """, DataRowVersion.Default, Convert.DBNull)" End If Next %> End If CreateParameters(dbCommandWrapper) Case Else Throw New ArgumentException("Invalid CommandType", "commandType") End Select Return dbCommandWrapper End Function Protected Overloads Overrides Function GetUpdateCommand(commandType As CommandType) As DBCommandWrapper Dim dbCommandWrapper As DBCommandWrapper ' Create the Database object, using the default database service. The ' default database service is determined through configuration. Dim db As Database = GetDatabase() Select Case commandType Case CommandType.StoredProcedure Dim sqlCommand As String = Me.SchemaStoredProcedureWithSeparator & "<%= CreateProcedureName(objTable, "U") %>" dbCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand) <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetActualName(objColumn) alias = GetAlias(objColumn) isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if If isAutoKey Then output.autoTabLn "dbCommandWrapper.AddInParameter(""" & name & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Current)" End If Next %> CreateParameters(dbCommandWrapper) Case CommandType.Text Me.Query.ClearAll() For Each item As SchemaItem In Me.SchemaEntries If Not (item.IsAutoKey OrElse item.IsComputed) Me.Query.AddUpdateColumn(item) End If Next Me.Where.WhereClauseReset() <% output.tabLevel = 4 For Each objColumn in objTable.Columns name = GetActualName(objColumn) alias = GetAlias(objColumn) isRowID = False If props.ContainsKey("SEQ:U:" & objColumn.Name) Then isRowID = True End if If objColumn.IsInPrimaryKey Or objColumn.DataTypeName = "timestamp" Or isRowID Then output.autoTabLn "Me.Where." & alias & ".Operator = WhereParameter.Operand.Equal" End If Next %> dbCommandWrapper = Me.Query.GetUpdateCommandWrapper() dbCommandWrapper.Command.Parameters.Clear() CreateParameters(dbCommandWrapper) <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetActualName(objColumn) alias = GetAlias(objColumn) isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if If isAutoKey Then output.autoTabLn "dbCommandWrapper.AddInParameter(""" & name & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Current)" End If Next %> Case Else Throw New ArgumentException("Invalid CommandType", "commandType") End Select Return dbCommandWrapper End Function Protected Overloads Overrides Function GetDeleteCommand(commandType As CommandType) As DBCommandWrapper Dim dbCommandWrapper As DBCommandWrapper ' Create the Database object, using the default database service. The ' default database service is determined through configuration. Dim db As Database = GetDatabase() Select Case commandType Case CommandType.StoredProcedure Dim sqlCommand As String = Me.SchemaStoredProcedureWithSeparator & "<%= CreateProcedureName(objTable, "D") %>" dbCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand) ' Add primary key parameters <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = objColumn.Name alias = GetAlias(objColumn) output.autoTabLn "dbCommandWrapper.AddInParameter(""" & alias & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Current)" Next %> Case CommandType.Text Me.Query.ClearAll() Me.Where.WhereClauseReset() <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetActualName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "Me.Where." & alias & ".Operator = WhereParameter.Operand.Equal" Next %> dbCommandWrapper = Me.Query.GetDeleteCommandWrapper() dbCommandWrapper.Command.Parameters.Clear() <% output.tabLevel = 4 For Each objColumn in objTable.PrimaryKeys name = GetActualName(objColumn) alias = GetAlias(objColumn) output.autoTabLn "dbCommandWrapper.AddInParameter(""" & name & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Current)" Next %> Case Else Throw New ArgumentException("Invalid CommandType", "commandType") End Select Return dbCommandWrapper End Function Private Sub CreateParameters(ByVal dbCommandWrapper As DBCommandWrapper) <% output.tabLevel = 2 For Each objColumn in objTable.Columns name = GetActualName(objColumn) alias = GetAlias(objColumn) isAutoKey = objColumn.IsAutoKey If props.ContainsKey("SEQ:I:" & objColumn.Name) Then isAutoKey = True End if isRowID = False If props.ContainsKey("SEQ:U:" & objColumn.Name) Then isRowID = True End if If objColumn.IsComputed Then If objColumn.DataTypeName = "timestamp" Then output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, DbType.Binary, 8, ParameterDirection.InputOutput, false, 0, 0, """ & name & """, DataRowVersion.Current, Nothing)" ElseIf objColumn.LanguageType = "String" Then output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, " & objColumn.DbTargetType & ", " & objColumn.CharacterMaxLength & ", ParameterDirection.Output, true, 0, 0, """ & name & """, DataRowVersion.Current, Nothing)" Else output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, " & objColumn.DbTargetType & ", ParameterDirection.Output, """ & name & """, DataRowVersion.Current, Nothing)" End If ElseIf isAutoKey Then ' Skip auto keys ElseIf isRowID Then output.autoTabLn "dbCommandWrapper.AddParameter(""" & name & """, " & objColumn.DbTargetType & ", ParameterDirection.InputOutput, """ & name & """, DataRowVersion.Current, Nothing)" Else output.autoTabLn "dbCommandWrapper.AddInParameter(""" & alias & """, " & objColumn.DbTargetType & ", """ & name & """, DataRowVersion.Current)" End If Next %> End Sub #Region " Properties " <% output.tabLevel = 3 ' List all fields as member variables For Each objColumn In objTable.Columns name = GetName(objColumn) alias = GetAlias(objColumn) %> Public Overridable Property <%= alias %>() As <%= objColumn.LanguageType %> Get <% If objColumn.LanguageType = "Byte()" Then output.autoTabLn "Return Me.GetByteArray(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName)" Else output.autoTabLn "Return Me.Get" & objColumn.LanguageType & "(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName)" End If %> End Get Set(ByVal Value As <%= objColumn.LanguageType %>) <% If objColumn.LanguageType = "Byte()" Then output.autoTabLn "Me.SetByteArray(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName, Value)" Else output.autoTabLn "Me.Set" & objColumn.LanguageType & "(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName, Value)" End If %> End Set End Property <% Next %> Public Overrides ReadOnly Property TableName() As String Get Return "<%= objTable.Name %>" End Get End Property #End Region #Region " String Properties " <% output.tabLevel = 3 ' List all fields as member variables For Each objColumn in objTable.Columns langType = objColumn.LanguageType If Not langType = "Object" And Not langType = "Byte()" Then If (Not objColumn.DataTypeName = "timestamp" And Not objColumn.IsComputed) Then readOnly = "" Else readOnly = "ReadOnly " End If name = GetName(objColumn) alias = GetAlias(objColumn) output.write " Public Overridable " & readOnly & "Property s_" & alias & " As String" & vbCrLf output.write " Get" & vbCrLf output.write " If Me.IsColumnNull(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName) Then" & vbCrLf output.write " Return String.Empty" & vbCrLf output.write " Else" & vbCrLf output.write " Return MyBase.Get" & langType & "AsString(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName)" & vbCrLf output.write " End If" & vbCrLf output.write " End Get" & vbCrLf If (Not objColumn.DataTypeName = "timestamp" And Not objColumn.IsComputed) Then output.write " Set(ByVal Value As String)" & vbCrLf output.write " If String.Empty = value Then" & vbCrLf output.write " Me.SetColumnNull(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName)" & vbCrLf output.write " Else" & vbCrLf output.write " Me." & alias & " = MyBase.Set" & langType & "AsString(" & TrimSpaces(objTable.Alias) & "Schema." & alias & ".FieldName, Value)" & vbCrLf output.write " End If" & vbCrLf output.write " End Set" & vbCrLf End If output.write " End Property" & vbCrLf & vbCrLf End If Next %> #End Region #Region " Where Clause " Public Class WhereClause Public Sub New(ByVal entity As EasyObject) Me._entity = entity End Sub Public ReadOnly Property TearOff As TearOffWhereParameter Get If _tearOff Is Nothing Then _tearOff = new TearOffWhereParameter(Me) End If Return _tearOff End Get End Property #Region " TearOff's " Public class TearOffWhereParameter Private _clause as WhereClause Public Sub New(ByVal clause As WhereClause) Me._clause = clause End Sub <% output.tabLevel = 3 Dim fldName For Each objColumn in objTable.Columns alias = GetAlias(objColumn) fldName = "_" & alias & "_W" %> Public ReadOnly Property <%= alias %>() As WhereParameter Get Dim wp As WhereParameter = New WhereParameter(<%= TrimSpaces(objTable.Alias) %>Schema.<%= alias %>) Dim query As NCI.EasyObjects.DynamicQuery = Me._clause._entity.Query query.AddWhereParameter(wp) Return wp End Get End Property <% Next %> End Class #End Region <% output.writeLn "" For Each objColumn in objTable.Columns name = GetAlias(objColumn) fldName = "_" & name & "_W" output.write " Public ReadOnly Property " & name & "() As WhereParameter " & vbCrLf output.write " Get" & vbCrLf output.write " If " & fldName & " Is Nothing Then" & vbCrLf output.write " " & fldName & " = TearOff." & name & vbCrLf output.write " End If" & vbCrLf output.write " Return " & fldName & vbCrLf output.write " End Get" & vbCrLf output.write " End Property" & vbCrLf & vbCrLf Next For Each objColumn in objTable.Columns name = "_" & GetAlias(objColumn) & "_W" output.write " Private " & name & " As WhereParameter = Nothing" & vbCrLf Next output.write vbCrLf output.write " Public Sub WhereClauseReset()" & vbCrLf & vbCrLf For Each objColumn in objTable.Columns name = "_" & GetAlias(objColumn) & "_W" output.write " " & name & " = Nothing" & vbCrLf Next output.write" Me._entity.Query.FlushWhereParameters()" & vbCrLf & vbCrLf output.write" End Sub" & vbCrLf %> Private _entity As EasyObject Private _tearOff As TearOffWhereParameter End Class Public ReadOnly Property Where() As WhereClause Get If _whereClause Is Nothing Then _whereClause = New WhereClause(Me) End If Return _whereClause End Get End Property Private _whereClause As WhereClause = Nothing #End Region #Region " Aggregate Clause " Public Class AggregateClause Public Sub New(ByVal entity As EasyObject) Me._entity = entity End Sub Public ReadOnly Property TearOff As TearOffAggregateParameter Get If _tearOff Is Nothing Then _tearOff = new TearOffAggregateParameter(Me) End If Return _tearOff End Get End Property #Region " TearOff's " Public class TearOffAggregateParameter Private _clause as AggregateClause Public Sub New(ByVal clause As AggregateClause) Me._clause = clause End Sub <% output.tabLevel = 3 For Each objColumn in objTable.Columns alias = GetAlias(objColumn) fldName = "_" & alias & "_W" %> Public ReadOnly Property <%= alias %>() As AggregateParameter Get Dim ap As AggregateParameter = New AggregateParameter(<%= TrimSpaces(objTable.Alias) %>Schema.<%= alias %>) Dim query As NCI.EasyObjects.DynamicQuery = Me._clause._entity.Query query.AddAggregateParameter(ap) Return ap End Get End Property <% Next %> End Class #End Region <% output.writeLn "" For Each objColumn in objTable.Columns name = GetAlias(objColumn) fldName = "_" & name & "_W" output.write " Public ReadOnly Property " & name & "() As AggregateParameter " & vbCrLf output.write " Get" & vbCrLf output.write " If " & fldName & " Is Nothing Then" & vbCrLf output.write " " & fldName & " = TearOff." & name & vbCrLf output.write " End If" & vbCrLf output.write " Return " & fldName & vbCrLf output.write " End Get" & vbCrLf output.write " End Property" & vbCrLf & vbCrLf Next For Each objColumn in objTable.Columns name = "_" & GetAlias(objColumn) & "_W" output.write " Private " & name & " As AggregateParameter = Nothing" & vbCrLf Next output.write vbCrLf output.write " Public Sub AggregateClauseReset()" & vbCrLf & vbCrLf For Each objColumn in objTable.Columns name = "_" & GetAlias(objColumn) & "_W" output.write " " & name & " = Nothing" & vbCrLf Next output.write" Me._entity.Query.FlushAggregateParameters()" & vbCrLf & vbCrLf output.write" End Sub" & vbCrLf %> Private _entity As EasyObject Private _tearOff As TearOffAggregateParameter End Class Public ReadOnly Property Aggregate() As AggregateClause Get If _aggregateClause Is Nothing Then _aggregateClause = New AggregateClause(Me) End If Return _aggregateClause End Get End Property Private _aggregateClause As AggregateClause = Nothing #End Region End Class <% If Len(namespace) > 1 Then output.writeLn vbCrLf & "End NameSpace" End if %> <% ' Save the output file for this Table Dim filename filename = input.item("txtPath") Dim length Dim pos lenth = Len(filename) pos = InStrRev(filename, "\") If Not pos = lenth Then filename = filename & "\" End If If prefix = True Then filename = filename & "_" & TrimSpaces(objTable.Alias) & ".vb" Else filename = filename & TrimSpaces(objTable.Alias) & ".vb" End If output.save filename, false buffer = buffer & output.text output.clear Next ' tableName output.write buffer %> <% '=========================================================================== ' These are support routines called by the above scirpt '=========================================================================== Function GetAlias(objColumn) Dim name name = TrimSpaces(objColumn.Alias) GetAlias = UCase(Left(name, 1)) & Right(name, Len(name) -1) End Function Function GetName(objColumn) Dim name name = GetActualName(objColumn) GetName = UCase(Left(name, 1)) & Right(name, Len(name) -1) End Function Function GetActualName(objColumn) Dim name GetActualName = objColumn.Name End Function Function IsOutParameter(objColumn, props, isInsert) Dim isOut isOut = false If (isInsert AND objColumn.IsAutoKey) Or objColumn.IsComputed Then isOut = true End If ' We also must check this, this is not an Else to the above If ' This is how can also indicate indicate Sequenced Columns If Not isOut AND props.Count > 0 Then If isInsert Then If props.ContainsKey("SEQ:I:" & objColumn.Name) Or _ props.ContainsKey("GEN:I:" & objColumn.Name) Or _ props.ContainsKey("GEN:I:T:" & objColumn.Name) Then isOut = true End If Else If props.ContainsKey("SEQ:U:" & objColumn.Name) Or _ props.ContainsKey("GEN:U:" & objColumn.Name) Or _ props.ContainsKey("GEN:U:T:" & objColumn.Name) Then isOut = true End If End If End If IsOutParameter = isOut End Function Function TrimSpaces(str) Dim tname Dim name Dim char Dim l name = "" tname = str l = Len(tname) For j = 1 To l char = Mid(tname, j, 1) If Not char = " " Then name = name & char End If Next TrimSpaces = name End Function Function GetParameterPrefix Select Case MyMeta.DbTarget Case "OleDb" GetParameterPrefix = "@" Case "SqlClient" GetParameterPrefix = "@" Case "OracleClient" GetParameterPrefix = "t$" Case "FirebirdSql" GetParameterPrefix = "@" End Select End Function Function CreateProcedureName(objTable, suffix) Dim bFirst Dim str bFirst = true Select Case suffix Case "L" str = "GetAll" Case "K" str = "Get" Case "U" str = "Update" Case "I" str = "Add" Case "D" str = "Delete" End Select CreateProcedureName = BuildProcedureName(BuildVerb(str, sStyle), objTable.Name, objTable.Alias) End Function Function BuildProcedureName(sVerb, sTableName, sTableAlias) Dim sName sName = Replace(sFormat, "{verb}", sVerb) sName = Replace(sName, "{table}", TrimSpaces(sTableName)) sName = Replace(sName, "{alias}", TrimSpaces(sTableAlias)) sName = Replace(sName, "{prefix}", sPrefix) BuildProcedureName = sName End Function Function BuildVerb(sVerb, sStyle) Select Case sStyle Case "doodads" Select Case sVerb Case "Get" sVerb = "LoadByPrimaryKey" Case "GetAll" sVerb = "LoadAll" Case "Add" sVerb = "Insert" End Select Case "daab" End Select BuildVerb = sVerb End Function Function GetFullType(objColumn) Select Case LCase(objColumn.LanguageType) Case "string" GetFullType = "String" Case "integer" GetFullType = "Int32" Case "short" GetFullType = "Int16" Case "decimal" GetFullType = "Decimal" Case "datetime" GetFullType = "DateTime" Case Else GetFullType = objColumn.LanguageType End Select End Function Function GetEmptyValue(objColumn) Select Case objColumn.DbTargetType Case "DbType.Int16", "DbType.Int32", "DbType.Int64", "DbType.Decimal", "DbType.Double", "DbType.Currency", "DbType.Single" GetEmptyValue = "0" Case "DbType.Guid" GetEmptyValue = "Guid.Empty" Case "DbType.StringFixedLength", "DbType.AnsiStringFixedLength", "DbType.String", "DbType.AnsiString" GetEmptyValue = "String.Empty" Case Else GetEmptyValue = Replace(objColumn.DbTargetType, "DbType.", "") End Select End Function Function GetParameterSize(objColumn) Select Case objColumn.DbTargetType Case "DbType.Int32" GetParameterSize = "4" Case "DbType.Binary" GetParameterSize = "8" Case "DbType.Guid" GetParameterSize = "16" Case "DbType.StringFixedLength", "DbType.AnsiStringFixedLength", "DbType.String", "DbType.AnsiString" GetParameterSize = objColumn.CharacterMaxLength Case Else GetParameterSize = "0" End Select End Function Function GetNullValueDefault(objColumn) Select Case objColumn.DbTargetType Case "DbType.Int16", "DbType.Int32", "DbType.Int64", "DbType.Decimal", "DbType.Double", "DbType.Currency", "DbType.Single" GetNullValueDefault = "0" Case "DbType.Guid" GetNullValueDefault = "Guid.Empty" Case "DbType.StringFixedLength", "DbType.AnsiStringFixedLength", "DbType.String", "DbType.AnsiString" GetNullValueDefault = "String.Empty" Case "DbType.DateTime" GetNullValueDefault = "DateTime.Parse(""01/01/1900"")" Case "DbType.Boolean" GetNullValueDefault = "False" Case "DbType.Binary", "DbType.Byte" GetNullValueDefault = "New Byte() {}" Case "DbType.Object" GetNullValueDefault = "Nothing" Case Else GetNullValueDefault = objColumn.DbTargetType '"string.Empty" End Select End Function Function ConvertToBoolean(test) If test Then ConvertToBoolean = "True" Else ConvertToBoolean = "False" End If End Function %> ##|BODY_END