kreta/Tools/CodeGeneration/Templates/Server/DataAccess/DAUtil/AllAssociationID.tdl
2024-03-13 00:33:46 +01:00

134 lines
8.6 KiB
Text

//***************************************************************************//
// Megjegyzés? //
// //
// VALÓSZÍNŰLEG MÁR ELAVULT, ÉS NEM HASZNÁLT! //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateLoadAllEntityAssociationsIDToEntityState(MClass as ENTITY, COUNTERNAME, ENTITYSTATENAME, READERNAME)
// [GetEntityName([ENTITY])] asszociációi
[loop (ENTITY -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNER where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNER]) == "Entity"))]
[if ([ENDROLE.multiplicity] == "1" or [ENDROLE.multiplicity] == "0..1")]
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
[ENTITYSTATENAME].[ConvertNameToEntityStateAttributeName(GetRoleName([ENDROLE]))].[ConvertNameToEntityStateAttributeName("ID")] = [READERNAME].GetValue([COUNTERNAME]++);
[else]
// XXX [GetRoleName([ENDROLE])] ez az asszociáció asszociációs osztállyal rendelkezik, és még nincs megvalósítva, lásd GenerateLoadAllAttributesAndEntityAssociationsIDToEntityState
[end if]
[end if]
[end loop]
[loop (ENTITY -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as STARTROLE -> MClass as STARTCLASS where (GetStereoType([STARTCLASS]) == "Entity"))]
[loop (CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as ENDCLASS where([STARTROLE.id] < [ENDROLE.id] and GetStereoType([ENDCLASS]) == "Entity"))]
[ENTITYSTATENAME].[ConvertNameToEntityStateAttributeName(GetRoleName([STARTROLE]))].[ConvertNameToEntityStateAttributeName("ID")] = [READERNAME].GetValue([COUNTERNAME]++);
[ENTITYSTATENAME].[ConvertNameToEntityStateAttributeName(GetRoleName([ENDROLE]))].[ConvertNameToEntityStateAttributeName("ID")] = [READERNAME].GetValue([COUNTERNAME]++);
[end loop]
[end loop]
[if (IsMasterEntity([ENTITY]) == "false")]
[loop (ENTITY -> SuperClass as BASECLASS)]
[GenerateLoadAllAttributesAndEntityAssociationsIDToEntityState([BASECLASS], [COUNTERNAME], [ENTITYSTATENAME], [READERNAME])][break]
[end loop]
[end if]
end template
//***************************************************************************//
// Legenerálja azt az SQL parancsot, ami felhozza az adatbázisból egy adott //
// entitás összes asszociációs partnerének azonosítóját. //
// //
// VALÓSZÍNŰLEG MÁR ELAVULT, ÉS NEM HASZNÁLT! //
//***************************************************************************//
template GenerateLoadAllAssociationIDCommand(MClass as ENTITY)
select
[ConvertNameToSQLTableName([ENTITY.name])].ID,
[GenerateLoadAllAssociationIDCommandColumns([ENTITY])]
[GenerateSerialColumn([ENTITY])]
from
[GenerateLoadAllAttributesCommandTables([ENTITY])]
[GenerateLoadAllAssociationIDCommandJoin([ENTITY])]
where
[if (IsMasterEntity([ENTITY]) == "true")]
([ConvertNameToSQLTableName([ENTITY.name])].SERIAL >= 0)
[else]
[GenerateLoadAllAttributesCommandWhere([ENTITY])]
[end if]
and (rownum < 1000)
end template
//***************************************************************************//
// Legenerálja az asszociációs partnerek tábláinak join-jait. (SQL töredék) //
//***************************************************************************//
template GenerateLoadAllAssociationIDCommandJoin(MClass as ENTITY)
[GenerateLoadAllAssociationIDCommandJoinCore([ENTITY], [ENTITY])]
end template
//***************************************************************************//
// Legenerálja az asszociációs partnerek tábláinak join-jait. (SQL töredék) //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateLoadAllAssociationIDCommandJoinCore(MClass as ENTITY, MClass as MASTER)
[loop (ENTITY -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNER where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNER]) == "Entity"))]
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
[if ([ENDROLE.multiplicity] == "0..1")]
[if (([STARTROLE.multiplicity] == "1..*") or ([STARTROLE.multiplicity] == "*") or ([STARTROLE.multiplicity] == "0..*"))]
[else]
[if ([STARTROLE.multiplicity] == "1")]
left join [ConvertNameToSQLTableName([PARTNER.name])] on [ConvertNameToSQLTableName([PARTNER.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = [ConvertNameToSQLTableName([MASTER.name])].ID -- a masik tablaban van a kapcsolomezo
[else]
left join [ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE],[STARTROLE]))] on [ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE],[STARTROLE]))].[ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = [ConvertNameToSQLTableName([MASTER.name])].ID -- kapcsolotabla van
[end if]
[end if]
[end if]
[end if]
[end loop]
[if (IsMasterEntity([ENTITY]) == "false")]
[loop (ENTITY -> SuperClass as BASECLASS)]
[GenerateLoadAllAssociationIDCommandJoinCore([BASECLASS], [MASTER])][break]
[end loop]
[end if]
end template
//***************************************************************************//
// Legenerálja az asszociációs partnerek azonosító oszlopait (SQL töredék) //
// //
// REKURZÍV! //
//***************************************************************************//
template GenerateLoadAllAssociationIDCommandColumns(MClass as ENTITY)
-- [GetEntityName([ENTITY])] asszociációi
[loop (ENTITY -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNER where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNER]) == "Entity"))]
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
[if ([ENDROLE.multiplicity] == "1")]
[ConvertNameToSQLTableName([ENTITY.name])].[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([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))], -- Opcionális asszociációs kapcsolómező
[else]
[if ([STARTROLE.multiplicity] == "1")]
[ConvertNameToSQLTableName([PARTNER.name])].ID as [ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))], -- a masik tablaban van a kapcsolomezo
[else]
[ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE],[STARTROLE]))].[ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))], -- kapcsolotabla van
[end if]
[end if]
[end if]
[end if]
[else]
[if ([ENDROLE.multiplicity] == "1" or [ENDROLE.multiplicity] == "0..1")]
-- XXX [GetRoleName([ENDROLE])] ez az asszociáció asszociációs osztállyal rendelkezik, és még nincs megvalósítva, lásd GenerateLoadAllAttributesAndEntityAssociationsIDToEntityState
[end if]
[end if]
[end loop]
[loop (ENTITY -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as STARTROLE -> MClass as STARTCLASS where (GetStereoType([STARTCLASS]) == "Entity"))]
[loop (CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as ENDCLASS where([STARTROLE.id] < [ENDROLE.id] and GetStereoType([ENDCLASS]) == "Entity"))]
[ConvertNameToSQLTableName([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))], -- Asszociációs mező
[ConvertNameToSQLTableName([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))], -- Asszociációs mező
[end loop]
[end loop]
[if (IsMasterEntity([ENTITY]) == "false")]
[loop (ENTITY -> SuperClass as BASECLASS)]
[GenerateLoadAllAssociationIDCommandColumns([BASECLASS])][break]
[end loop]
[end if]
end template