//***************************************************************************// // 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