268 lines
16 KiB
Text
268 lines
16 KiB
Text
//***************************************************************************//
|
|
// Nevet generál egy entitáslista DA-jának //
|
|
//***************************************************************************//
|
|
proc GenerateEntityCollectionDAName(startrole, endrole)
|
|
return [startrole] "_" [endrole] "_DA";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Legenerálja a magadott osztályhoz tartozó entitáslista DA-inak tejles //
|
|
// forráskódját //
|
|
//***************************************************************************//
|
|
template GenerateEntityCollectionDAs(MClass)
|
|
[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" ))]
|
|
[if (([StartRole.multiplicity] == "0..*") or ([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*"))]
|
|
internal class [GenerateEntityCollectionDAName([EndClass.name], DefineRoleName([StartRole]))] : EntityCollectionDA<[EndClass.name], [MClass.name]>
|
|
{
|
|
internal protected [GenerateEntityCollectionDAName([EndClass.name], DefineRoleName([StartRole]))]([EndClass.name] owner)
|
|
: base(owner)
|
|
{
|
|
}
|
|
|
|
private const string m_Filter = @" and ([ConvertNameToSQLTableName([MClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
|
|
|
public override void LoadCollection(IAssociatedEntityCollection<[MClass.name]> collection)
|
|
{
|
|
new [MClass.name]DBHelper().LoadByPartnerId(collection, m_Filter, Owner.ID);
|
|
}
|
|
|
|
public override void AddItem([MClass.name] entity)
|
|
{
|
|
entity.[ConvertRoleToName([EndRole])] = Owner.ID;
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
assochandler.BeforeInsert(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
assochandler.BeforeInsert(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
entity.Insert(true);
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterInsert(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
assochandler.AfterInsert(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
}
|
|
|
|
public override void DeleteItem([MClass.name] entity)
|
|
{
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
assochandler.BeforeDelete(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
assochandler.BeforeDelete(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
entity.Delete(true); // egyszeruen töröljük az asszociációs osztályt
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterDelete(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
assochandler.AfterDelete(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
}
|
|
}
|
|
|
|
[end if]
|
|
[if (([EndRole.multiplicity] == "0..*") or ([EndRole.multiplicity] == "1..*") or ([EndRole.multiplicity] == "*"))]
|
|
internal class [GenerateEntityCollectionDAName([StartClass.name], DefineRoleName([EndRole]))] : EntityCollectionDA<[StartClass.name], [MClass.name]>
|
|
{
|
|
internal protected [GenerateEntityCollectionDAName([StartClass.name], DefineRoleName([EndRole]))]([StartClass.name] owner)
|
|
: base(owner)
|
|
{
|
|
}
|
|
|
|
private const string m_Filter = @" and ([ConvertNameToSQLTableName([MClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
|
|
|
public override void LoadCollection(IAssociatedEntityCollection<[MClass.name]> collection)
|
|
{
|
|
new [MClass.name]DBHelper().LoadByPartnerId(collection, m_Filter, Owner.ID);
|
|
}
|
|
|
|
public override void AddItem([MClass.name] entity)
|
|
{
|
|
entity.[ConvertRoleToName([StartRole])] = Owner.ID;
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
assochandler.BeforeInsert(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
assochandler.BeforeInsert(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
entity.Insert(true);
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterInsert(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
assochandler.AfterInsert(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
}
|
|
|
|
public override void DeleteItem([MClass.name] entity)
|
|
{
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
assochandler.BeforeDelete(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
assochandler.BeforeDelete(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
entity.Delete(true); // egyszeruen töröljük az asszociációs osztályt
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterDelete(entity.[DefineRoleName([StartRole])], entity.[DefineRoleName([EndRole])]);
|
|
[else]
|
|
assochandler.AfterDelete(entity.[DefineRoleName([EndRole])], entity.[DefineRoleName([StartRole])]);
|
|
[end if]
|
|
}
|
|
}
|
|
[end if]
|
|
[end loop]
|
|
[end loop]
|
|
|
|
[loop (MClass -> Role as StartRole -> MAssociation as CurrentAssoc -> MAssociationEnd as EndRole -> MClass as PartnerClass where (GetStereoType([PartnerClass]) == "Entity"))]
|
|
[if ([StartRole.id] != [EndRole.id])]
|
|
[if (HasAssociationClass([CurrentAssoc]) == "")]
|
|
[if ([StartRole.multiplicity] == "*" or [StartRole.multiplicity] == "1..*" or [StartRole.multiplicity] == "0..*")]
|
|
[if (([PartnerClass.name] != [MClass.name]) or ([PartnerClass.name] == [MClass.name] and [MClass.name] != DefineRoleName([StartRole])))]
|
|
|
|
/// <summary>
|
|
/// Az osztály elvégzi az UML modell '[PartnerClass.name] -> [MClass.name] ([DefineRoleName([StartRole])])'
|
|
/// asszociációjának teljes kezelését.
|
|
/// </summary>
|
|
internal class [GenerateEntityCollectionDAName([PartnerClass.name], DefineRoleName([StartRole]))] : EntityCollectionDA<[PartnerClass.name], [MClass.name]>
|
|
{
|
|
internal protected [GenerateEntityCollectionDAName([PartnerClass.name], DefineRoleName([StartRole]))]([PartnerClass.name] owner)
|
|
: base(owner)
|
|
{
|
|
}
|
|
|
|
[if ([EndRole.multiplicity] == "0..1" or [EndRole.multiplicity] == "1")]
|
|
// Nincs kapcsolótábla
|
|
private const string m_Filter = @" and ([ConvertNameToSQLTableName([MClass.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
|
[else]
|
|
// Kapcsolótábla van
|
|
private const string m_Filter = @" and (exists (select 1 from [ConvertNameToSQLTableScript(ConvertAssociationRolesToSwitchTableName([EndRole],[StartRole]))] where [ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = [ConvertNameToSQLTableName([MClass.name])].ID and [ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName("ID")])) ";
|
|
[end if]
|
|
|
|
public override void LoadCollection(IAssociatedEntityCollection<[MClass.name]> collection)
|
|
{
|
|
new [MClass.name]DBHelper().LoadByPartnerId(collection, m_Filter, Owner.ID);
|
|
}
|
|
|
|
private static [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("Insert" DefineRoleName([StartRole]))]()
|
|
{
|
|
[GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()]();
|
|
[if ([EndRole.multiplicity] == "0..1" or [EndRole.multiplicity] == "1")]
|
|
// nincs kapcsolótábla...
|
|
result.CommandText = @"update [ConvertNameToSQLTableName([MClass.name])] set [ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))] where (ID = :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))])";
|
|
[else]
|
|
// kapcsolótábla van...
|
|
result.CommandText = @"insert into [ConvertNameToSQLTableScript(ConvertAssociationRolesToSwitchTableName([EndRole],[StartRole]))] ([ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))], [ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))]) values (:[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))], :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))])";
|
|
[end if]
|
|
result.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))]", [GetCSharpSQLIDType()]);
|
|
result.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))]", [GetCSharpSQLIDType()]);
|
|
return result;
|
|
}
|
|
|
|
private void DoAdd([PartnerClass.name] owner, [MClass.name] partner)
|
|
{
|
|
using ([GetCSharpSQLCommandType()] command = [GenerateCommandCreatorName("Insert" DefineRoleName([StartRole]))]())
|
|
{
|
|
[GenerateCommandInit("command")]
|
|
command.Parameters\["[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))]"\].Value = owner.ID;
|
|
command.Parameters\["[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))]"\].Value = partner.ID;
|
|
command.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public override void AddItem([MClass.name] entity)
|
|
{
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
[end if]
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.BeforeInsert(entity, this.Owner);
|
|
[else]
|
|
assochandler.BeforeInsert(this.Owner, entity);
|
|
[end if]
|
|
[if ([EndRole.multiplicity] == "1")]
|
|
entity.Modify[DefineRoleName([EndRole])](this.Owner);
|
|
if (entity.State == EntityState.Modified)
|
|
{
|
|
entity.UpdateAssociations(true);
|
|
}
|
|
else
|
|
{
|
|
entity.Insert(true);
|
|
}
|
|
[else]
|
|
this.DoAdd(this.Owner, entity);
|
|
[end if]
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterInsert(entity, this.Owner);
|
|
[else]
|
|
assochandler.AfterInsert(this.Owner, entity);
|
|
[end if]
|
|
}
|
|
|
|
private static [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("Delete" DefineRoleName([StartRole]))]()
|
|
{
|
|
[GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()]();
|
|
[if ([EndRole.multiplicity] == "0..1" or [EndRole.multiplicity] == "1")]
|
|
// nincs kapcsolótábla...
|
|
result.CommandText = @"update [ConvertNameToSQLTableName([MClass.name])] set [ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = null where ([ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))] and ID = :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))])";
|
|
[else]
|
|
// kapcsolótábla van...
|
|
result.CommandText = @"delete from [ConvertNameToSQLTableScript(ConvertAssociationRolesToSwitchTableName([EndRole],[StartRole]))] where ([ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))]) and ([ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))])";
|
|
[end if]
|
|
result.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))]", [GetCSharpSQLIDType()]);
|
|
result.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))]", [GetCSharpSQLIDType()]);
|
|
return result;
|
|
}
|
|
|
|
private void DoRemove([PartnerClass.name] owner, [MClass.name] partner)
|
|
{
|
|
using ([GetCSharpSQLCommandType()] command = [GenerateCommandCreatorName("Delete" DefineRoleName([StartRole]))]())
|
|
{
|
|
[GenerateCommandInit("command")]
|
|
command.Parameters\["[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))]"\].Value = owner.ID;
|
|
command.Parameters\["[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))]"\].Value = partner.ID;
|
|
command.ExecuteNonQuery();
|
|
}
|
|
}
|
|
|
|
public override void DeleteItem([MClass.name] entity)
|
|
{
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([StartRole])], [GetRoleClassName([EndRole])]>("[DefineRoleName([StartRole])]_[DefineRoleName([EndRole])]");
|
|
[else]
|
|
var assochandler = AssociationHandlerManager.Create<[GetRoleClassName([EndRole])], [GetRoleClassName([StartRole])]>("[DefineRoleName([EndRole])]_[DefineRoleName([StartRole])]");
|
|
[end if]
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.BeforeDelete(entity, this.Owner);
|
|
[else]
|
|
assochandler.BeforeDelete(this.Owner, entity);
|
|
[end if]
|
|
[if ([EndRole.multiplicity] == "1")]
|
|
entity.Delete(true);
|
|
[else]
|
|
this.DoRemove(this.Owner, entity);
|
|
[end if]
|
|
[if ([StartRole.id] < [EndRole.id])]
|
|
assochandler.AfterDelete(entity, this.Owner);
|
|
[else]
|
|
assochandler.AfterDelete(this.Owner, entity);
|
|
[end if]
|
|
}
|
|
}
|
|
|
|
[end if]
|
|
[end if]
|
|
[end if]
|
|
[end if]
|
|
[end loop]
|
|
end template
|
|
|
|
|