//***************************************************************************// // Legenerálja a megadott osztályhoz tartozó entitás teljes forráskódját. // //***************************************************************************// template GenerateEntity(MClass as ENTITY) [BOM]using System; using System.Collections.Generic; using System.Linq; using Kreta.DataAccess.Interfaces; using Kreta.Framework; using Kreta.Framework.Actions; using Kreta.Framework.Collections; using Kreta.Framework.Collections.Generic; using Kreta.Framework.Entities; using Kreta.Framework.Entities.Generic; using Kreta.Framework.Exceptions; namespace SDA.[ProjectName].Entities { /// /// Az UML modell [ENTITY.name] entitásának megvalósítása. /// /// A kód teljes egészében generált, kézi módosítása nem megengedett! \[Entity("[ENTITY.name]")\] [if (GetTaggedValue([ENTITY], "disabledsecuritymode") == "read")] \[Kreta.Framework.Security.EntitySecurityDisabled(Kreta.Framework.Security.EntitySecurityDisabledMode.DISABLE_READ)\] [else] [if (GetTaggedValue([ENTITY], "disabledsecuritymode") == "readwrite")] \[Kreta.Framework.Security.EntitySecurityDisabled(Kreta.Framework.Security.EntitySecurityDisabledMode.DISABLE_READWRITE)\] [end if] [end if] [GenerateEntityHistoryModeAttribute([ENTITY])] public class [ENTITY.name] : [GetBaseClassName([ENTITY], "Entity")], I[ENTITY.name] { internal protected [ENTITY.name]() : base() { } [if (IsMasterEntity([ENTITY]) == "false")] [loop (ENTITY -> SuperClass as BASECLASS)] public new class AttributeInfo : [BASECLASS.name].AttributeInfo { [end loop] [else] public class AttributeInfo { [end if] [loop (ENTITY -> MAttribute as ATTRIBUTE)] public const string [ATTRIBUTE.name] = "[ATTRIBUTE.name]"; [end loop] } [if (IsMasterEntity([ENTITY]) == "false")] [loop (ENTITY -> SuperClass as BASECLASS)] public new class AttributeLengthInfo : [BASECLASS.name].AttributeLengthInfo { [end loop] [else] public class AttributeLengthInfo { [end if] [loop (ENTITY -> MAttribute as ATTRIBUTE)] [if (GetCSharpType([ATTRIBUTE.type]) == "string")] public const int [ATTRIBUTE.name]Length = [GetAttributeLength([ATTRIBUTE])]; [end if] [end loop] } [GenerateGeneralSection([ENTITY])] [//GenerateXMLSection([ENTITY])] [GenerateEntityValidation([ENTITY])] [GenerateEntityReset([ENTITY])] [GenerateDeAssociateBeforeDelete([ENTITY])] #region Mezők és tulajdonságok [GenerateSimpleFields([ENTITY])] #region Asszociációkkal kapcsolatos dolgok [GenerateAssociationClassFields([ENTITY])] [GenerateFirstCaseAssociations([ENTITY])] [//GenerateSecondCaseAssociations([ENTITY])] [GenerateThirdCaseAssociations([ENTITY])] [//GenerateFourthCaseAssociations([ENTITY])] #endregion #endregion } } end template //***************************************************************************// // Legenerálja azt a metódust, ami törlés előtt elvégzi az asszociációinak // // felbontását, hogy ezzel törölhetővé tegye az entitást. // //***************************************************************************// template GenerateDeAssociateBeforeDelete(MClass as ENTITY) protected override void DeAssociateBeforeDelete(bool runHandler = false) { // Nem kaszkád törölhető asszociációk ellenőrzése, hogy üresek-e... [loop (ENTITY -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (([StartRole.id] != [EndRole.id]) and GetStereoType([PartnerClass]) == "Entity") and IsCascadeDelete([CurrentAssoc]) == "False" )] [if (HasAssociationClass([CurrentAssoc]) == "")] [if ( ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "0..1"))] [if ([ENTITY.name] != [PartnerClass.name] or [EndRole.isNavigable] == "TRUE")] if (this.[DefineRoleName([EndRole])] != null) { [/* // startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] */] throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([PartnerClass.name])]", "[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))]")); // nincs kapcsolotabla } [else] // [DefineRoleName([EndRole])] esetében önmagunkra mutatunk, nincs mit ellenőrizni. startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] [end if] [else] [if ([StartRole.multiplicity] == "0..1" and [EndRole.multiplicity] == "0..1")] [if ([ENTITY.name] != [PartnerClass.name] or [EndRole.isNavigable] == "TRUE")] if (this.[DefineRoleName([EndRole])] != null) { throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([PartnerClass.name])]", "ID")); // *-* + kapcsolotabla } [end if] [else] [if( ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "0..1" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "0..1" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..1" and [EndRole.multiplicity] == "0..*") /* ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "1..*") */ )] [if ([ENTITY.name] != [PartnerClass.name] or [EndRole.isNavigable] == "TRUE")] if (this.[DefineRoleName([EndRole])].Count > 0) { [/* // startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] */] throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([PartnerClass.name])]", "[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))]")); // nincs kapcsolotabla } [else] // [DefineRoleName([EndRole])] esetében önmagunkra mutatunk, nincs mit ellenőrizni. startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] [end if] [else] [if ( ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "1..*" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*" and [EndRole.multiplicity] == "1..*") )] [if ([ENTITY.name] != [PartnerClass.name] or [EndRole.isNavigable] == "TRUE")] if (this.[DefineRoleName([EndRole])].Count > 0) { [/* // startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] */] throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([PartnerClass.name])]", "ID")); // *-* + kapcsolotabla } [end if] [else] // [DefineRoleName([EndRole])] esetében mi mutatunk a másikra: startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] [end if] [end if] [end if] [end if] [else] [loop (CurrentAssoc -> AssociationClass)] [if ([ENTITY.name] != DefineRoleName([EndRole]) or [EndRole.isNavigable] == "TRUE")] [if ([EndRole.multiplicity] == "1" or [EndRole.multiplicity] == "0..1")] if (this.[DefineRoleName([EndRole])] != null) { [/* // asszociacios osztaly */] throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([AssociationClass.name])]", "[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))]")); } [else] if (this.[DefineRoleName([EndRole])].Count > 0) { [/* // asszociacios osztaly */] throw new EntityDeleteFailedException("[ENTITY.name]", "[DefineRoleName([EndRole])]", EntityUtil.GetAssociationDescription("[ConvertNameToSQLTableName([AssociationClass.name])]", "[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))]")); } [end if] [else] // [DefineRoleName([EndRole])] esetében nincs ilyen property, nem navigálható, névütközés, stb., nincs mit ellenőrizni. startrole: [StartRole.multiplicity], endrole: [EndRole.multiplicity] [end if] [end loop] [end if] [end loop] // kaszkád törlések... [loop (ENTITY -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (([StartRole.id] != [EndRole.id]) and GetStereoType([PartnerClass]) == "Entity") and IsCascadeDelete([CurrentAssoc]) == "True" )] [if (([PartnerClass.name] != [ENTITY.name]) or ([PartnerClass.name] == [ENTITY.name] and [ENTITY.name] != DefineRoleName([EndRole])))] [if (HasAssociationClass([CurrentAssoc]) == "")] [if ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "0..1")] if (this.[DefineRoleName([EndRole])] != null) { if (this.[DefineRoleName([EndRole])].State != EntityState.Removed) { if (this.[DefineRoleName([EndRole])].ID != this.ID) { this.[DefineRoleName([EndRole])].CascadeDelete(runHandler); // Kötelezően ránk mutat... } } } [else] [if( ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "*") or ([StartRole.multiplicity] == "1" and [EndRole.multiplicity] == "0..*") )] foreach ([PartnerClass.name] partner in this.[DefineRoleName([EndRole])]) { if (partner.State != EntityState.Removed) { if (partner.ID != this.ID) { partner.CascadeDelete(runHandler); // Kötelezően ránk mutat... } } } [else] [if ([EndRole.multiplicity] == "0..1")] this.[DefineRoleName([EndRole])] = null; [else] [if ([EndRole.multiplicity] != "1")] this.[DefineRoleName([EndRole])].RemoveAll(); [end if] [end if] [end if] [end if] [else] [loop (CurrentAssoc -> AssociationClass)] [if ([EndRole.multiplicity] == "1" or [EndRole.multiplicity] == "0..1")] if (this.[DefineRoleName([EndRole])] != null) { if (this.[DefineRoleName([EndRole])].State != EntityState.Removed) { if (this.[DefineRoleName([EndRole])].ID != this.ID) { this.[DefineRoleName([EndRole])].CascadeDelete(runHandler); // Asszociációs osztály } } } [else] foreach ([AssociationClass.name] associationclass in this.[DefineRoleName([EndRole])]) { if (associationclass.State != EntityState.Removed) { if (associationclass.ID != this.ID) { associationclass.CascadeDelete(runHandler); // Asszociációs osztály } } } [end if] [end loop] [end if] [end if] [end loop] [if (IsMasterEntity([ENTITY]) == "false")] base.DeAssociateBeforeDelete(runHandler); [end if] } end template proc GenerateEntityHistoryModeAttribute(MClass as ENTITY) local temp; [temp] = GetTaggedValue([ENTITY], "historymode"); if ([temp] != "") if (searchstr([temp], ",", 0) != "-1") return "[EntityHistoryModeAttribute(\"" [temp] "\")]"; else return "[EntityHistoryModeAttribute(EntityHistoryModes." [temp] ")]"; end if else return "// alapértelmezett EntityHistoryMode"; //return "[EntityHistoryModeAttribute(EntityHistoryModes.Default)] // alapértelmezett EntityHistoryModesß"; end if end proc