##|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