Saxonite 1.2.11.5, BusinessMgr.
This commit is contained in:
@@ -118,7 +118,7 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
// Clear files from output firectory.
|
||||
if (Directory.EnumerateFiles(config.OutputDirectory, "*", SearchOption.TopDirectoryOnly).Count() > 0)
|
||||
{
|
||||
SaLogger.Info(GetType().Name + ".Generate Deleting existing files in output folders.");
|
||||
SaLogger.Info($"{SysUtil.Fn} Deleting existing files in output folders.");
|
||||
DirectoryInfo di = new DirectoryInfo(config.OutputDirectory);
|
||||
foreach (FileInfo file in di.EnumerateFiles())
|
||||
file.Delete();
|
||||
@@ -178,16 +178,18 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
/// <summary>Intercept column variable type name to replace double/float with decimal where required.</summary>
|
||||
private static String GetColumnVariableTypeName(DbDfnColumn columnDfn, bool treatDoubleFormatAsDecimal)
|
||||
{
|
||||
String typeName = columnDfn.GetVariableTypeName();
|
||||
if (treatDoubleFormatAsDecimal)
|
||||
{
|
||||
switch (columnDfn.DataType)
|
||||
{
|
||||
case DbColumnDataType.Single:
|
||||
case DbColumnDataType.Double:
|
||||
return "Decimal";
|
||||
typeName = "Decimal";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return columnDfn.GetVariableTypeName();
|
||||
return typeName;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -199,16 +201,18 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
/// <summary>Intercept column variable type to replace double/float with decimal where required.</summary>
|
||||
private static String GetColumnVariableType(DbDfnColumn columnDfn, bool treatDoubleFormatAsDecimal)
|
||||
{
|
||||
String typeName = columnDfn.GetVariableType();
|
||||
if (treatDoubleFormatAsDecimal)
|
||||
{
|
||||
switch (columnDfn.DataType)
|
||||
{
|
||||
case DbColumnDataType.Single:
|
||||
case DbColumnDataType.Double:
|
||||
return "Decimal";
|
||||
typeName = "Decimal";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return columnDfn.GetVariableType();
|
||||
return typeName;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -220,16 +224,29 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
/// <summary>Intercept column 'Get Field Suffix' to replace double/float with decimal where required.</summary>
|
||||
private static String GetColumnGetFieldSuffix(DbDfnColumn columnDfn, bool treatDoubleFormatAsDecimal)
|
||||
{
|
||||
String suffix = columnDfn.GetGetFieldSuffix();
|
||||
if (treatDoubleFormatAsDecimal)
|
||||
{
|
||||
switch (columnDfn.DataType)
|
||||
{
|
||||
case DbColumnDataType.Single:
|
||||
case DbColumnDataType.Double:
|
||||
return "Decimal";
|
||||
suffix = "Decimal";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return columnDfn.GetGetFieldSuffix();
|
||||
return suffix;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
private static List<string> nullableDataTypes = new List<string>() { "Boolean", "Byte", "Int16", "Int32", "Int64", "Single", "Double", "Decimal", "DateTime" };
|
||||
/// <summary>
|
||||
/// Determine whether column should be treated as nullable.
|
||||
/// <para>- This behaviour is restricted to selected data types.</para>
|
||||
/// </summary>
|
||||
private bool TreatColumnAsNullable(DbDfnColumn columnDfn)
|
||||
{
|
||||
return (nullableDataTypes.ContainsCI(columnDfn.GetVariableTypeName()) && columnDfn.IsNullable);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@@ -589,7 +606,10 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
file.WriteLine(tab2 + "public class ColumnsData");
|
||||
file.WriteLine(tab2 + "{");
|
||||
foreach (var columnDfn in tableDfn.Columns)
|
||||
file.WriteLine(tab3 + "public ColumnData" + GetColumnVariableTypeName(columnDfn) + " _" + columnDfn.Name + " { get; } = new ColumnData" + GetColumnVariableTypeName(columnDfn) + "(\"" + columnDfn.Name + "\"" + (columnDfn.IsIdentity ? ", true" : "") + ");");
|
||||
{
|
||||
String columnDataClassName = "ColumnData" + GetColumnVariableTypeName(columnDfn) + (TreatColumnAsNullable(columnDfn) ? "Nullable" : "");
|
||||
file.WriteLine(tab3 + "public " + columnDataClassName + " _" + columnDfn.Name + " { get; } = new " + columnDataClassName + "(\"" + columnDfn.Name + "\"" + (columnDfn.IsIdentity ? ", true" : "") + ");");
|
||||
}
|
||||
file.WriteLine(tab2 + "}");
|
||||
file.WriteLine(crlf + tab2 + "//-------------------------------------------------------------------");
|
||||
file.WriteLine(tab2 + "// Data members.");
|
||||
@@ -605,6 +625,10 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
file.WriteLine(tab2 + "{");
|
||||
foreach (String columnName in primaryColumnNames) file.WriteLine(tab3 + "\"" + columnName + "\",");
|
||||
file.WriteLine(tab2 + "};");
|
||||
file.WriteLine(tab2 + "protected static List<String> fieldsNullable { get; } = new List<String>()");
|
||||
file.WriteLine(tab2 + "{");
|
||||
foreach (var columnDfn in tableDfn.Columns.FindAll(item => item.IsNullable)) file.WriteLine(tab3 + "\"" + columnDfn.Name + "\",");
|
||||
file.WriteLine(tab2 + "};");
|
||||
file.WriteLine(tab2 + "protected static List<String> fieldsIgnoreOnUpdate { get; } = new List<String>()");
|
||||
file.WriteLine(tab2 + "{");
|
||||
foreach (String columnName in columnsIgnoredOnUpdate) file.WriteLine(tab3 + "\"" + columnName + "\",");
|
||||
@@ -644,7 +668,7 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
file.WriteLine(tab2 + "// Columns.");
|
||||
file.WriteLine(tab2 + "public ColumnsData Cols { get; } = new ColumnsData();");
|
||||
foreach (var columnDfn in tableDfn.Columns)
|
||||
file.WriteLine(tab2 + "public " + GetColumnVariableType(columnDfn) + " _" + columnDfn.Name + " { get { return Cols._" + columnDfn.Name + ".Value; } set { Cols._" + columnDfn.Name + ".Value = value; } }");
|
||||
file.WriteLine(tab2 + "public " + GetColumnVariableType(columnDfn) + (TreatColumnAsNullable(columnDfn) ? "?" : "") + " _" + columnDfn.Name + " { get { return Cols._" + columnDfn.Name + ".Value; } set { Cols._" + columnDfn.Name + ".Value = value; } }");
|
||||
file.WriteLine(tab2 + "// Existing columns - confirmed on database if table exists.");
|
||||
file.WriteLine(tab2 + "public List<String> ExistingColumnNames { get { return GetExistingColumnNames(Fields); } }");
|
||||
file.WriteLine(tab2 + "public List<String> ExistingColumnNamesNonId { get { return GetExistingColumnNames(FieldsNonId); } }");
|
||||
@@ -669,7 +693,7 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
file.WriteLine(tab2 + "public override void PopulateFrom (DbDataReader dbDataReader)");
|
||||
file.WriteLine(tab2 + "{");
|
||||
foreach (var columnDfn in tableDfn.Columns)
|
||||
file.WriteLine(tab3 + "_" + columnDfn.Name + " = GetField" + GetColumnGetFieldSuffix(columnDfn) + "(dbDataReader, \"" + columnDfn.Name + "\", _" + columnDfn.Name + ");");
|
||||
file.WriteLine(tab3 + "_" + columnDfn.Name + " = GetField" + GetColumnGetFieldSuffix(columnDfn) + (TreatColumnAsNullable(columnDfn) ? "Nullable" : "") + "(dbDataReader, \"" + columnDfn.Name + "\", _" + columnDfn.Name + ");");
|
||||
file.WriteLine(tab2 + "}");
|
||||
|
||||
//-----------------------------------------------------------
|
||||
@@ -698,11 +722,8 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
if (!String.IsNullOrEmpty(identityColumnName))
|
||||
file.WriteLine(tab3 + "query += \"Output Inserted." + identityColumnName + " \";");
|
||||
List<String> columnsValuesToInsertSql = new List<String>();
|
||||
foreach (var columnDfn in tableDfn.Columns)
|
||||
{
|
||||
if (!columnDfn.IsIdentity)
|
||||
columnsValuesToInsertSql.Add("@" + columnDfn.Name);
|
||||
}
|
||||
foreach (var columnDfn in tableDfn.Columns.Where(col => !col.IsIdentity))
|
||||
columnsValuesToInsertSql.Add("@" + columnDfn.Name);
|
||||
file.WriteLine(tab3 + "if (dbCommand is SqlCommand)");
|
||||
file.WriteLine(tab4 + "query += \"VALUES (\" + columnNames.Concat(\",\", \"@\", \"\") + \") \";");
|
||||
file.WriteLine(tab3 + "else query += \"VALUES (\" + " + (config.SarandCommonVersion == SarandCommonVersion.VS2019 ? "StringListUtil" : "StringList") + ".CreateList(\"?\", columnNames.Count).Concat(\",\") + \") \";");
|
||||
@@ -712,11 +733,8 @@ namespace Sarand.Net.Standard.Dbas.Base
|
||||
file.WriteLine(tab3 + "Log(GetType().Name + \".ExecuteInsertCommand\", dbCommand.CommandText);");
|
||||
file.WriteLine(tab3 + "// Populate parameters.");
|
||||
file.WriteLine(tab3 + "dbCommand.Parameters.Clear();");
|
||||
foreach (var columnDfn in tableDfn.Columns)
|
||||
{
|
||||
if (!columnDfn.IsIdentity)
|
||||
file.WriteLine(tab3 + "if (columnNames.ContainsCI(\"" + columnDfn.Name + "\")) AddCommandParameter(dbCommand, \"@" + columnDfn.Name + "\", _" + columnDfn.Name + ");");
|
||||
}
|
||||
foreach (var columnDfn in tableDfn.Columns.Where(col => !col.IsIdentity))
|
||||
file.WriteLine(tab3 + "if (columnNames.ContainsCI(\"" + columnDfn.Name + "\")) AddCommandParameter(dbCommand, \"@" + columnDfn.Name + "\", _" + columnDfn.Name + ");");
|
||||
file.WriteLine(tab3 + "// Execute insert command.");
|
||||
file.WriteLine(tab3 + "bool commandSuccess = false;");
|
||||
if (config.DbmsOutput == Dbms.SQL)
|
||||
|
||||
Reference in New Issue
Block a user