//***************************************************************************//
// Nevet konvertál SQL szöveg névvé, a konvencióinknak megfelelően. //
//***************************************************************************//
proc ConvertNameToCommandTextName(COMMANDNAME)
return [COMMANDNAME] "CommandText";
end proc
//***************************************************************************//
// Névből adatbázisművelethez paraméternevet generál. //
//***************************************************************************//
proc ConvertNameToCommandParameterName(name)
return TruncateString("p" ToUpper([name]), 29);
end proc
//***************************************************************************//
// Legenrálja azt a kódtöredéket, ami egy DataReader objektumból kiolvassa //
// az adatot, az adat típusának és az oszlop indexének megfelelően. //
//***************************************************************************//
proc GenerateReaderRead(type, column, readername)
switch (ToLower([type]))
case "integer": return "((int)" [readername] ".GetDecimal(" [column] "))";
case "string": return [readername] ".GetString(" [column] ")";
case "datetime": return [readername] ".GetDateTime(" [column] ")";
case "boolean": return "(" [readername] ".GetString(" [column] ")[0] != 'F')";
case "char": //return "(" [readername] ".GetString(" [column] ")[0])";
return [readername] ".GetString(" [column] ")";
case "double": return [readername] ".GetDouble(" [column] ")";
case "float": return [readername] ".GetDouble(" [column] ")";
case "id": return "((int)" [readername] ".GetDecimal(" [column] "))";
case "dictionaryitem": return "((int)" [readername] ".GetDecimal(" [column] ")) /* XXX DictionaryItem */";
case "binary": return "((Byte[])" [readername] ".GetValue(" [column] "))";
case "longstring": return [readername] ".GetString(" [column] ")";
case "guid": return "((Guid)" [readername] ".GetValue(" [column] "))";
end switch
return [readername] ".GetInt32(999) /* XXX Ismeretlen tipus: " [type] " */";
end proc
//***************************************************************************//
// Legenerálja azt az SQL töredéket, ami egy entitáshoz tartozó táblaneveket //
// soroja fel, az ősosztályok tábláival együtt. //
// //
// REKURZÍV! //
//***************************************************************************//
proc GenerateSuperClassTableList(MClass)
local result;
[result] = "";
if (GetInheritance([MClass]) == "tpc")
return [result];
end if
loop (MClass -> SuperClass as MBaseClass)
[result] = "inner join " ConvertNameToSQLTableName([MBaseClass.name]) " on (" ConvertNameToSQLTableName([MClass.name]) ".ID = " ConvertNameToSQLTableName([MBaseClass.name]) ".ID)";
[result] = [result] " " GenerateSuperClassTableList([MBaseClass]);
break;
end loop
return [result];
end proc
//***************************************************************************//
// Legenerálja azt az SQL töredéket, ami egy entitás és az ősosztályainak //
// tábláit kapcsolja össze az SQL where részében. //
// //
// REKURZÍV! //
//***************************************************************************//
template SDA_GetSuperClassSelectFilter(MClass)
[if (IsMasterEntity([MClass]) == "false")]
"([ConvertNameToSQLTableName(GetBaseClassName([MClass], "/* XXX errorhiba van! */"))].ID = [ConvertNameToSQLTableName([MClass.name])].ID) "[if (GetBaseBaseClassName([MClass], "") != "")] +
[loop (MClass -> SuperClass as MBaseClass)]
"and " +
[SDA_GetSuperClassSelectFilter([MBaseClass])][break]
[end loop]
[end if]
[end if]
end template
//***************************************************************************//
//***************************************************************************//
proc GetReadAttributeMethodName(ATTRIBUTETYPE)
switch (ToLower([ATTRIBUTETYPE]))
case "string": return "ReadStringAttribute";
case "integer": return "ReadIntegerAttribute";
case "datetime": return "ReadDateTimeAttribute";
case "boolean": return "ReadBooleanAttribute";
case "dictionaryitem": return "ReadIntegerAttribute";
case "binary": return "ReadBinaryAttribute";
case "float": return "ReadDoubleAttribute";
case "char": return "ReadStringAttribute";
case "longstring": return "ReadStringAttribute";
case "double": return "ReadDoubleAttribute";
case "id": return "ReadIntegerAttribute";
case "guid": return "ReadGuidAttribute";
end switch
return "Ismeretlen /* XXX Ismeretlen tipus: " [type] " */";
end proc
template GenerateFieldLoadEntityCore(MClass, offset, entityname, readername)
// [MClass.name] mezői
[setVar("counter", [offset])]
[loop (MClass -> MAttribute where [MAttribute.name] != [MClass.name])]
[if (IsAttributeRequired([MAttribute]) == _True())]
[entityname].m_[MAttribute.name] = DAUtil.[GetReadAttributeMethodName([MAttribute.type])]([readername], [counter], [GetCSharpDefaultValueOfAttribute([MAttribute])]);
[else]
[entityname].m_[MAttribute.name] = DAUtil.[GetReadAttributeMethodName([MAttribute.type])]([readername], [counter]);
[end if]
[setVar("counter", incr([counter]))]
[end loop]
[if (GetBaseClassName([MClass], [""]) != [""] )]
[loop (MClass -> SuperClass as MBaseClass)]
[GenerateFieldLoadEntityCore([MBaseClass], [counter], [entityname], [readername])][break]
[end loop]
[end if]
end template
template GenerateAssociationLoadEntityCore(MClass, offset, entityname, readername)
// [MClass.name] kapcsoló mezői
[setVar("counter", [offset])]
[loop (MClass -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (([StartRole.id] != [EndRole.id]) and GetStereoType([PartnerClass]) == "Entity"))]
[if (HasAssociationClass([CurrentAssoc]) == "")]
[if ([EndRole.multiplicity] == "1")]
DAUtil.ReadIDAttribute([readername], [counter], ref [entityname].m_[ConvertRoleToName([EndRole])], 0);
[setVar("counter", incr([counter]))]
[else]
[if ([EndRole.multiplicity] == "0..1")]
[if (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))]
DAUtil.ReadIDAttribute([readername], [counter], ref [entityname].m_[ConvertRoleToName([EndRole])], -1);
[setVar("counter", incr([counter]))]
[end if]
[end if]
[end if]
[end if]
[end loop]
[loop (MClass -> MAssociation as CurrentAssoc -> MAssociationEnd as StartRole -> MClass as StartClass where (GetStereoType([StartClass]) == "Entity"))]
[loop (CurrentAssoc -> MAssociationEnd as EndRole -> MClass as EndClass where([StartRole.id] < [EndRole.id] and GetStereoType([EndClass]) == "Entity" ))]
DAUtil.ReadIDAttribute([readername], [counter], ref [entityname].m_[ConvertRoleToName([StartRole])], 0);
[setVar("counter", incr([counter]))]
DAUtil.ReadIDAttribute([readername], [counter], ref [entityname].m_[ConvertRoleToName([EndRole])], 0);
[setVar("counter", incr([counter]))]
[end loop]
[end loop]
[if (GetBaseClassName([MClass], [""]) != [""] )]
[loop (MClass -> SuperClass as MBaseClass)]
[GenerateAssociationLoadEntityCore([MBaseClass], [counter], [entityname], [readername])][break]
[end loop]
[end if]
end template
//***************************************************************************//
// Legenerálja azt a ciklusmagot, amely egy DataReader-ből kiszippantja //
// az entitás összes mezőjét. //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateLoadEntityCore(MClass, offset, entityname, readername)
// [MClass.name] betöltése
[setVar("counter", [offset])]
[GenerateFieldLoadEntityCore([MClass], [counter], [entityname], [readername])]
[GenerateAssociationLoadEntityCore([MClass], [counter], [entityname], [readername])]
end template
template GenerateFieldDynamicLoadEntityCore(MClass, entityname, readername)
// [MClass.name] mezői
[loop (MClass -> MAttribute where [MAttribute.name] != [MClass.name])]
if (((columnFilterMode == ColumnFilterMode.DEFAULT_ALLOWED) ^ (columns.Contains("[MAttribute.name]"))))
{
[if (IsAttributeRequired([MAttribute]) == _True())]
[entityname].m_[MAttribute.name] = DAUtil.[GetReadAttributeMethodName([MAttribute.type])]([readername], index++, [GetCSharpDefaultValueOfAttribute([MAttribute])]);
[else]
[entityname].m_[MAttribute.name] = DAUtil.[GetReadAttributeMethodName([MAttribute.type])]([readername], index++);
[end if]
}
[end loop]
[if (GetBaseClassName([MClass], [""]) != [""] )]
[loop (MClass -> SuperClass as MBaseClass)]
[GenerateFieldDynamicLoadEntityCore([MBaseClass], [entityname], [readername])]
[end loop]
[end if]
end template
template GenerateAssociationDynamicLoadEntityCore(MClass, entityname, readername)
// [MClass.name] kapcsoló mezői
[loop (MClass -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (([StartRole.id] != [EndRole.id]) and GetStereoType([PartnerClass]) == "Entity"))]
[if (HasAssociationClass([CurrentAssoc]) == "")]
[if ([EndRole.multiplicity] == "1")]
DAUtil.ReadIDAttribute([readername], index++, ref [entityname].m_[ConvertRoleToName([EndRole])], 0);
[else]
[if ([EndRole.multiplicity] == "0..1")]
[if (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))]
DAUtil.ReadIDAttribute([readername], index++, ref [entityname].m_[ConvertRoleToName([EndRole])], -1);
[end if]
[end if]
[end if]
[end if]
[end loop]
[loop (MClass -> MAssociation as CurrentAssoc -> MAssociationEnd as StartRole -> MClass as StartClass where (GetStereoType([StartClass]) == "Entity"))]
[loop (CurrentAssoc -> MAssociationEnd as EndRole -> MClass as EndClass where([StartRole.id] < [EndRole.id] and GetStereoType([EndClass]) == "Entity" ))]
DAUtil.ReadIDAttribute([readername], index++, ref [entityname].m_[ConvertRoleToName([StartRole])], 0);
DAUtil.ReadIDAttribute([readername], index++, ref [entityname].m_[ConvertRoleToName([EndRole])], 0);
[end loop]
[end loop]
[if (GetBaseClassName([MClass], [""]) != [""] )]
[loop (MClass -> SuperClass as MBaseClass)]
[GenerateAssociationDynamicLoadEntityCore([MBaseClass], [entityname], [readername])]
[end loop]
[end if]
end template
//***************************************************************************//
// Legenerálja azt a ciklusmagot, amely egy DataReader-ből kiszippantja //
// az entitás összes mezőjét. //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateDynamicLoadEntityCore(MClass, entityname, readername)
// [MClass.name] betöltése
[GenerateFieldDynamicLoadEntityCore([MClass], [entityname], [readername])]
[GenerateAssociationDynamicLoadEntityCore([MClass], [entityname], [readername])]
end template
//***************************************************************************//
// Legenerálja azt az SQL töredéket, ami egy entitás attribútumaihoz tartozó //
// mezőket, és az asszociációs kapcsolómezőket tartalmazza. //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateFieldListWithBaseClassFields(MClass, entityname)
// [MClass.name] betöltése
[GenerateAttributeFieldListWithBaseClassFields([MClass], [entityname])]
[GenerateAssociationFieldListWithBaseClassFields([MClass], [entityname] )]
[GenerateIdAndSerialFields([MClass], [entityname] )]
end template
template GenerateIdAndSerialFields(MClass, entityname)
[if (IsMasterEntity([MClass]) == "false")]
[loop (MClass -> SuperClass as MBaseClass)]
[if (GetInheritance([MClass]) == "tpc")]
[GenerateIdAndSerialFields([MBaseClass], [entityname])][break]
[else]
[GenerateIdAndSerialFields([MBaseClass], [MBaseClass.name])][break]
[end if]
[end loop]
[else]
"[ConvertNameToSQLTableName([entityname])].TOROLT, " +
"[ConvertNameToSQLTableName([entityname])].SERIAL, " +
"[ConvertNameToSQLTableName([entityname])].CREATED, " +
"[ConvertNameToSQLTableName([entityname])].CREATOR, " +
"[ConvertNameToSQLTableName([entityname])].LASTCHANGED, " +
"[ConvertNameToSQLTableName([entityname])].MODIFIER " +
[end if]
end template
template GenerateAssociationFieldListWithBaseClassFields(MClass, entityname)
// [MClass.name] kapcsoló mezői
[loop (MClass -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (([StartRole.id] != [EndRole.id]) and GetStereoType([PartnerClass]) == "Entity"))]
[if (HasAssociationClass([CurrentAssoc]) == "")]
[if ([EndRole.multiplicity] == "1")]
"[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))], " + /* Kötelező asszociációs kapcsolómező */
[else]
[if ([EndRole.multiplicity] == "0..1")]
[if (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))]
"[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))], " + /* Opcionális asszociációs kapcsolómező */
[end if]
[end if]
[end if]
[end if]
[end loop]
[loop (MClass -> MAssociation as CurrentAssoc -> MAssociationEnd as StartRole -> MClass as StartClass where (GetStereoType([StartClass]) == "Entity"))]
[loop (CurrentAssoc -> MAssociationEnd as EndRole -> MClass as EndClass where([StartRole.id] < [EndRole.id] and GetStereoType([EndClass]) == "Entity" ))]
"[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))], " + /* Asszociációs mező */
"[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))], " + /* Asszociációs mező */
[end loop]
[end loop]
[if (IsMasterEntity([MClass]) == "false")]
[loop (MClass -> SuperClass as MBaseClass)]
[if (GetInheritance([MClass]) == "tpc")]
[GenerateAssociationFieldListWithBaseClassFields([MBaseClass], [entityname])][break]
[else]
[GenerateAssociationFieldListWithBaseClassFields([MBaseClass], [MBaseClass.name])][break]
[end if]
[end loop]
[end if]
end template
template GenerateAttributeFieldListWithBaseClassFields(MClass, entityname)
// [MClass.name] mezői
[loop (MClass->MAttribute)]
"[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName([MAttribute.name])], " +
[end loop]
[if (IsMasterEntity([MClass]) == "false")]
[loop (MClass -> SuperClass as MBaseClass)]
[if (GetInheritance([MClass]) == "tpc")]
[GenerateAttributeFieldListWithBaseClassFields([MBaseClass], [entityname])][break]
[else]
[GenerateAttributeFieldListWithBaseClassFields([MBaseClass], [MBaseClass.name])][break]
[end if]
[end loop]
[end if]
end template
//********************************************************************************//
// Legenerálja azt az SQL töredéket, ami egy entitás alap attribútumaihoz tartozó //
// mezőket, és az asszociációs kapcsolómezőket tartalmazza. //
// //
// REKURZÍV! //
//********************************************************************************//
template GenerateDynamicFieldListWithBaseClassFields(MClass, entityname)
// [MClass.name] betöltése
[GenerateAssociationFieldListWithBaseClassFields([MClass], [entityname])]
[GenerateIdAndSerialFields([MClass], [entityname])]
end template
//***************************************************************************//
// Legenerálja a DataAccess.csproj fájl szerelvény hivatkozási szekciójának //
// azt a részét, ami az adatbáziskezelésre vonatkozik. Ez adatbázisonként //
// más. //
//***************************************************************************//
template GenerateDataAccessAssemblyReferences()
[if ([DBTYPE] == "UniDirect")]
[else][if ([DBTYPE] == "ODP")]
[else][if ([DBTYPE] == "OracleClient")]
[else][if ([DBTYPE] == "SDA")]
[end if][end if][end if][end if]
end template
//***************************************************************************//
// Legenerálja azt a kóddarabot, ami egy command obejktum inicializálását //
// végzi. Ez adatbázisonként más. //
//***************************************************************************//
template GenerateCommandInit(COMMANDNAME)
[if ([DBTYPE] == "SDA")]
[COMMANDNAME].Connection = UserContext.Instance.SDAConnection;
[COMMANDNAME].Transaction = UserContext.Instance.SDATransaction;
[else]
[COMMANDNAME].Connection = UserContext.Instance.DBConnection;
[if ([DBTYPE] != "ODP")]
[COMMANDNAME].Transaction = UserContext.Instance.Transaction;
[end if]
[end if]
end template
//***************************************************************************//
// Visszaadja a megadott típusnak megfelelő adatbázistípus nevét a C# nyelv //
// és a .NET keretrendszernek megfelelően. Ez adatbázisonként más. //
//***************************************************************************//
proc GetCSharpDatasetType(type, isunicode)
switch ([DBTYPE])
case "SDA":
switch(ToLower([type]))
case "string":
if ([isunicode] == "true")
return "SDA.DataProvider.SDADBType.String";
else
return "SDA.DataProvider.SDADBType.NonUnicodeString";
end if
case "integer": return "SDA.DataProvider.SDADBType.Int";
case "datetime": return "SDA.DataProvider.SDADBType.DateTime";
case "boolean": return "SDA.DataProvider.SDADBType.Boolean /* Boolean */";
case "dictionaryitem": return "SDA.DataProvider.SDADBType.Int /* DictionaryItem */";
case "binary": return "SDA.DataProvider.SDADBType.Binary /* Binary */";
case "float": return "SDA.DataProvider.SDADBType.Double";
case "char": return "SDA.DataProvider.SDADBType.Char";
case "id": return "SDA.DataProvider.SDADBType.Int";
case "longstring": return "SDA.DataProvider.SDADBType.LongString";
case "guid": return "SDA.DataProvider.SDADBType.Guid";
end switch
return "0 /* ERROR Ismeretlen tipus: " [type] " */";
case "UniDirect":
switch(ToLower([type]))
case "string": return "System.Data.DbType.String";
case "integer": return "System.Data.DbType.Int32";
case "datetime": return "System.Data.DbType.DateTime";
case "boolean": return "System.Data.DbType.Boolean";
case "dictionaryitem": return "System.Data.DbType.Int32 /* DictionaryItem */";
case "binary": return "System.Data.DbType.Binary /* Binary */";
case "float": return "System.Data.DbType.Double";
case "char": return "System.Data.DbType.StringFixedLength";
case "id": return "System.Data.DbType.Int32";
end switch
return "0 /* ERROR Ismeretlen tipus: " [type] " */";
case "ODP":
switch(ToLower([type]))
case "string": return "Oracle.DataAccess.Client.OracleDbType.Varchar2";
case "integer": return "Oracle.DataAccess.Client.OracleDbType.Int32";
case "datetime": return "Oracle.DataAccess.Client.OracleDbType.Date";
case "boolean": return "Oracle.DataAccess.Client.OracleDbType.Char";
case "dictionaryitem": return "Oracle.DataAccess.Client.OracleDbType.Int32 /* DictionaryItem */";
case "binary": return "Oracle.DataAccess.Client.OracleDbType.Raw /* Binary */";
case "float": return "Oracle.DataAccess.Client.OracleDbType.Double";
case "char": //return "Oracle.DataAccess.Client.OracleDbType.Char";
return "Oracle.DataAccess.Client.OracleDbType.Varchar2";
case "id": return "Oracle.DataAccess.Client.OracleDbType.Int32";
end switch
return "0 /* ERROR Ismeretlen tipus: " [type] " */";
case "OracleClient":
switch(ToLower([type]))
case "string": return "System.Data.OracleClient.OracleType.VarChar";
case "integer": return "System.Data.OracleClient.OracleType.Number";
case "datetime": return "System.Data.OracleClient.OracleType.DateTime";
case "boolean": return "System.Data.OracleClient.OracleType.Char";
case "dictionaryitem": return "System.Data.OracleClient.OracleType.Number /* DictionaryItem */";
case "binary": return "System.Data.OracleClient.OracleType.Raw /* Binary */";
case "float": return "System.Data.OracleClient.OracleType.Float";
case "char": return "System.Data.OracleClient.OracleType.Char";
case "id": return "System.Data.OracleClient.OracleType.Number";
end switch
return "System.Data.SqlDbType.Variant /* ERROR Ismeretlen tipus: " [type] " */";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# ID típus nevét. Ez adatbázisonként //
// más. //
//***************************************************************************//
proc GetCSharpSQLIDType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDADBType.Int";
case "UniDirect": return "System.Data.DbType.Int32";
case "ODP": return "Oracle.DataAccess.Client.OracleDbType.Int32";
case "OracleClient": return "System.Data.OracleClient.OracleType.Number";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# ROWID típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLRowIDType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDADBType.String";
case "UniDirect": return "System.Data.DbType.String";
case "ODP": return "Oracle.DataAccess.Client.OracleDbType.Varchar2";
case "OracleClient": return "System.Data.OracleClient.OracleType.VarChar";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# DBCommand típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLCommandType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDACommand";
case "UniDirect": return "CoreLab.UniDirect.UniCommand";
case "ODP": return "Oracle.DataAccess.Client.OracleCommand";
case "OracleClient": return "System.Data.OracleClient.OracleCommand";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# CommandParameter típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLCommandParameterType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDACommandParameter";
case "UniDirect": return "CoreLab.UniDirect.UniParameter";
case "ODP": return "Oracle.DataAccess.Client.OracleParameter";
case "OracleClient": return "System.Data.OracleClient.OracleParameter";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# DBConnection típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLConnectionType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDAConnection";
case "UniDirect": return "CoreLab.UniDirect.UniConnection";
case "ODP": return "Oracle.DataAccess.Client.OracleConnection";
case "OracleClient": return "System.Data.OracleClient.OracleConnection";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# Transaction típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLTransactionType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDATransaction";
case "UniDirect": return "CoreLab.UniDirect.UniTransaction";
case "ODP": return "Oracle.DataAccess.Client.OracleTransaction";
case "OracleClient": return "System.Data.OracleClient.OracleTransaction";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja az adatbázisspecifikus C# DataReader típus nevét. Ez //
// adatbázisonként más. //
//***************************************************************************//
proc GetCSharpSQLDataReaderType()
switch ([DBTYPE])
case "SDA": return "SDA.DataProvider.SDADataReader";
case "UniDirect": return "CoreLab.UniDirect.UniDataReader";
case "ODP": return "Oracle.DataAccess.Client.OracleDataReader";
case "OracleClient": return "System.Data.OracleClient.OracleDataReader";
end switch
return "/* Érvénytelen adatbázistípus: " [DBTYPE] " */";
end proc
//***************************************************************************//
// Visszaadja egy művelethez tartozó SQL parancsobjektum nevét. //
//***************************************************************************//
proc ConvertNameToCommandName(operation)
return [operation] "Command";
end proc
//***************************************************************************//
// Visszaadja egy művelethez tartozó SQL parancsobjektum //
// megcsinálómetódusának a nevét. //
//***************************************************************************//
proc GenerateCommandCreatorName(CommandName)
return "Create" [CommandName] "Command";
end proc
//***************************************************************************//
// Egy SQL parancs típusú property-t generál. //
//***************************************************************************//
template GenerateCommandGetterProperty(COMMANDNAME)
[if ([COMMANDCACHE] == "True")]
private [GetCSharpSQLCommandType()] m_[ConvertNameToCommandName([COMMANDNAME])] = null;
[end if]
private [GetCSharpSQLCommandType()] [ConvertNameToCommandName([COMMANDNAME])]
{
get
{
[if ([COMMANDCACHE] == "True")]
if (this.m_[ConvertNameToCommandName([COMMANDNAME])] == null)
{
this.m_[ConvertNameToCommandName([COMMANDNAME])] = this.[GenerateCommandCreatorName([COMMANDNAME])]();
}
return this.m_[ConvertNameToCommandName([COMMANDNAME])];
[else]
return this.[GenerateCommandCreatorName([COMMANDNAME])]();
[end if]
}
}
end template
//***************************************************************************//
// Legenerálja egy entitás SERIAL rendszeroszlopának SQL töredékét, teljesen //
// minősített névvel. //
//***************************************************************************//
template GenerateSerialColumn(MClass as ENTITY)
[if (IsMasterEntity([ENTITY]) == "false")]
[loop (ENTITY -> SuperClass as BASECLASS)]
[GenerateSerialColumn([BASECLASS])][break]
[end loop]
[else]
[ConvertNameToSQLTableName([ENTITY.name])].SERIAL
[end if]
end template
//***************************************************************************//
// Legenerálja azt a kóddarabot, ami egy command obejktum inicializálását //
// végzi. Ez adatbázisonként más. Szükség esetén a szűréket is réteszi az //
// SQL parancsszövegre. //
//***************************************************************************//
template GenerateCommandInitialization(COMMANDNAME, COMMANDTEXTNAME, ENTITYNAME, OPERATIONNAME, APPLYFILTERS, MASTERNAME)
[if ([DBTYPE] == "SDA")]
[COMMANDNAME].Connection = UserContext.Instance.SDAConnection;
[COMMANDNAME].Transaction = UserContext.Instance.SDATransaction;
[if ([APPLYFILTERS] == "False")]
[COMMANDNAME].CommandText = [ConvertNameToCommandTextName([COMMANDTEXTNAME])];
[else]
[COMMANDNAME].CommandText = [ConvertNameToCommandTextName([COMMANDTEXTNAME])];
Kreta.Framework.FilterApplier.ApplyFilters([COMMANDNAME], "[ENTITYNAME]", "[MASTERNAME]");
[end if]
[else]
[COMMANDNAME].Connection = UserContext.Instance.DBConnection;
[if ([DBTYPE] != "ODP")]
[COMMANDNAME].Transaction = UserContext.Instance.Transaction;
[end if]
[if ([APPLYFILTERS] == "False")]
[COMMANDNAME].CommandText = [ConvertNameToCommandTextName([COMMANDTEXTNAME])];
[else]
[COMMANDNAME].CommandText = [ConvertNameToCommandTextName([COMMANDTEXTNAME])];
Kreta.Framework.FilterApplier.ApplyFilters([COMMANDNAME], "[ENTITYNAME]", "[MASTERNAME]");
[end if]
[end if]
end template
////***************************************************************************////
////***************************************************************************////
////***************************************************************************////
//// ////
//// Valószínüleg már nem használt kód ////
//// ////
////***************************************************************************////
////***************************************************************************////
////***************************************************************************////
//***************************************************************************//
// Megjegyzés? //
//***************************************************************************//
template GenerateDuoSelectWhere(MClass as CurrentClass, MAssociationEnd as StartRole, MAssociation as CurrentAssoc, MAssociationEnd as EndRole, MClass as PartnerClass, MClass as AssocClass)
"([ConvertNameToSQLTableName([AssocClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = [ConvertNameToSQLParamName(ConvertRoleToName([StartRole]))]) " +
[if (IsMasterEntity([PartnerClass]) == "true")]
"and ([ConvertNameToSQLTableName([PartnerClass.name])].ID = [ConvertNameToSQLTableName([AssocClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))])"
[else]
"and ([ConvertNameToSQLTableName([PartnerClass.name])].ID = [ConvertNameToSQLTableName([AssocClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))]) " +
"and " +
[SDA_GetSuperClassSelectFilter([PartnerClass])]
[end if]
end template
//***************************************************************************//
// Megjegyzés? //
//***************************************************************************//
template GenerateDuoSelectFrom(MClass as CurrentClass, MAssociationEnd as StartRole, MAssociation as CurrentAssoc, MAssociationEnd as EndRole, MClass as PartnerClass, MClass as AssociationClass)
[/*
"[ConvertNameToSQLTableName([AssociationClass.name])], " +
"[ConvertNameToSQLTableName([PartnerClass.name])] " +
*/]
"[GenerateSuperClassTableList([AssociationClass])], " +
"[GenerateSuperClassTableList([PartnerClass])] " +
end template
//***************************************************************************//
// Megjegyzés? //
//***************************************************************************//
proc SDA_GetFieldLength(MAttribute)
local result;
[result] = GetAttributeLength([MAttribute]);
if ([result] != "")
[result] = ", " [result];
end if
return [result];
end proc