init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,74 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a megadott entitás törlését elvégzo DA muveletet. //
|
||||
//***************************************************************************//
|
||||
template GenerateDeleteEntity(MClass as ENTITY)
|
||||
#region DeleteEntity
|
||||
|
||||
private const string m_FizikaiDeleteCommandText = @"DELETE FROM [ConvertNameToSQLTableName([ENTITY.name])] WHERE (ID = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
private const string m_LogikaiDeleteCommandText = @"
|
||||
UPDATE [ConvertNameToSQLTableName([ENTITY.name])]
|
||||
SET TOROLT = 'T' ,
|
||||
SERIAL = SERIAL + 1,
|
||||
[if(GetTaggedValue([ENTITY], "dkt") == "true")]
|
||||
DELETER = :[ConvertNameToCommandParameterName("Deleter")],
|
||||
DELETED = :[ConvertNameToCommandParameterName("Deleted")],
|
||||
[end if]
|
||||
LASTCHANGED = :[ConvertNameToCommandParameterName("LastChanged")],
|
||||
MODIFIER = :[ConvertNameToCommandParameterName("Modifier")]
|
||||
WHERE (ID = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
|
||||
public override void DeleteEntity([ENTITY.name] entity, bool logikai = true)
|
||||
{
|
||||
var _deleteCommandText = logikai ? m_LogikaiDeleteCommandText : m_FizikaiDeleteCommandText;
|
||||
using ([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(_deleteCommandText))
|
||||
{
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]).Value = entity.ID;
|
||||
|
||||
if (logikai)
|
||||
{
|
||||
DateTime lastchanged = DateTime.Now;
|
||||
var modifier = UserContext.Instance.UniqueIdentifier;
|
||||
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("LastChanged")]", [GetCSharpDatasetType("DateTime", "")]).Value = lastchanged;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Modifier")]", [GetCSharpSQLIDType()]).Value = modifier;
|
||||
[if(GetTaggedValue([ENTITY], "dkt") == "true")]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Deleted")]", [GetCSharpDatasetType("DateTime", "")]).Value = lastchanged;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Deleter")]", [GetCSharpSQLIDType()]).Value = modifier;
|
||||
[end if]
|
||||
}
|
||||
|
||||
if (command.ExecuteNonQuery() != 1)
|
||||
{
|
||||
throw new EntityNotFoundException("[ENTITY.name]", entity.ID);
|
||||
}
|
||||
}
|
||||
|
||||
[if (IsMasterEntity([ENTITY]) == "false" && GetInheritance([ENTITY]) != "tpc")]
|
||||
|
||||
entity.InheritedDA.DeleteEntity(entity, logikai);
|
||||
[end if]
|
||||
}
|
||||
|
||||
[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"))]
|
||||
private const string m_DeleteBy[DefineRoleName([STARTROLE])]And[DefineRoleName([ENDROLE])]CommandText = @"
|
||||
delete from [ConvertNameToSQLTableName([ENTITY.name])]
|
||||
where
|
||||
([ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))])
|
||||
and
|
||||
([ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]) ";
|
||||
|
||||
public void DeleteBy[DefineRoleName([STARTROLE])]And[DefineRoleName([ENDROLE])](int [ConvertRoleToName([STARTROLE])], int [ConvertRoleToName([ENDROLE])])
|
||||
{
|
||||
using ([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_DeleteBy[DefineRoleName([STARTROLE])]And[DefineRoleName([ENDROLE])]CommandText))
|
||||
{
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]", [GetCSharpSQLIDType()]).Value = [ConvertRoleToName([STARTROLE])];
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", [GetCSharpSQLIDType()]).Value = [ConvertRoleToName([ENDROLE])];
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
[end loop]
|
||||
[end loop]
|
||||
#endregion
|
||||
end template
|
|
@ -0,0 +1,268 @@
|
|||
//***************************************************************************//
|
||||
// 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
|
||||
|
||||
|
|
@ -0,0 +1,385 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a magadott osztályhoz tartozó DataAccessor tejles //
|
||||
// forráskódját //
|
||||
//***************************************************************************//
|
||||
template GenerateEntityDA(MClass as ENTITY)
|
||||
[BOM]using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Kreta.Framework;
|
||||
using Kreta.Framework.Collections;
|
||||
using Kreta.Framework.Collections.Generic;
|
||||
using Kreta.Framework.Entities;
|
||||
using Kreta.Framework.Entities.Associations;
|
||||
using Kreta.Framework.Entities.Generic;
|
||||
|
||||
namespace SDA.[ProjectName].Entities
|
||||
{
|
||||
[GenerateDBHelper([ENTITY])]
|
||||
|
||||
internal class [ENTITY.name]DA : EntityDataAccessor<[ENTITY.name]>
|
||||
{
|
||||
private static [ENTITY.name]DBHelper m_dbhelper = new [ENTITY.name]DBHelper();
|
||||
|
||||
protected override IEntityDBHelper<[ENTITY.name]> dbhelper
|
||||
{
|
||||
get { return m_dbhelper; }
|
||||
}
|
||||
|
||||
#region Load
|
||||
|
||||
[GenerateLoadByID([ENTITY])]
|
||||
|
||||
[GenerateLoadBaseSet([ENTITY])]
|
||||
|
||||
#endregion
|
||||
|
||||
[GenerateInsertEntity([ENTITY])]
|
||||
|
||||
[GenerateUpdateEntity([ENTITY])]
|
||||
|
||||
[GenerateDeleteEntity([ENTITY])]
|
||||
|
||||
[GenerateUpdateAssociations([ENTITY])]
|
||||
|
||||
#region Asszociációkkal kapcsolatos adatbázisműveletek (entitásspecifikus)
|
||||
|
||||
[GenerateEntityLoaders([ENTITY])]
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
[GenerateEntityCollectionDAs([ENTITY])]
|
||||
}
|
||||
|
||||
end template
|
||||
|
||||
template GenerateDynamicColums(MClass, entityname)
|
||||
[loop (MClass->MAttribute)]
|
||||
{ "[MAttribute.name]", "[ConvertNameToSQLTableName([entityname])].[ConvertNameToSQLColumnName([MAttribute.name])]" },
|
||||
[end loop]
|
||||
[if (IsMasterEntity([MClass]) == "false")]
|
||||
[loop (MClass -> SuperClass as MBaseClass)]
|
||||
[if (GetInheritance([MClass]) == "tpc")]
|
||||
[GenerateDynamicColums([MBaseClass], [MClass.name])][break]
|
||||
[else]
|
||||
[GenerateDynamicColums([MBaseClass], [MBaseClass.name])][break]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end if]
|
||||
end template
|
||||
|
||||
//***************************************************************************//
|
||||
//***************************************************************************//
|
||||
template GenerateDBHelper(MClass as ENTITY)
|
||||
internal sealed class [ENTITY.name]DBHelper : EntityDBHelper<[ENTITY.name]>
|
||||
{
|
||||
private Dictionary<string, string> dynamicColumns = new Dictionary<string, string>()
|
||||
{
|
||||
[GenerateDynamicColums([ENTITY], [ENTITY.name])]
|
||||
};
|
||||
|
||||
private const string dynamicQueryCommandText =
|
||||
"select " +
|
||||
"[ConvertNameToSQLTableName([ENTITY.name])].ID, " +
|
||||
"{COLUMNS}" +
|
||||
[GenerateDynamicFieldListWithBaseClassFields([ENTITY], [ENTITY.name])]
|
||||
"from " +
|
||||
"[ConvertNameToSQLTableName([ENTITY.name])] " +
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
"[GenerateSuperClassTableList([ENTITY])] " +
|
||||
[break]
|
||||
[end loop]
|
||||
"where " +
|
||||
"(1 = 1) ";
|
||||
|
||||
private const string emptyQueryCommandText =
|
||||
"select " +
|
||||
"[ConvertNameToSQLTableName([ENTITY.name])].ID, " +
|
||||
[GenerateFieldListWithBaseClassFields([ENTITY], [ENTITY.name])]
|
||||
"from " +
|
||||
"[ConvertNameToSQLTableName([ENTITY.name])] " +
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
"[GenerateSuperClassTableList([ENTITY])] " +
|
||||
[break]
|
||||
[end loop]
|
||||
"where " +
|
||||
"(1 = 1) ";
|
||||
|
||||
public override string EmptyQueryCommandText
|
||||
{
|
||||
get
|
||||
{
|
||||
return emptyQueryCommandText;
|
||||
}
|
||||
}
|
||||
|
||||
public override string DynamicQueryCommandText
|
||||
{
|
||||
get
|
||||
{
|
||||
return dynamicQueryCommandText;
|
||||
}
|
||||
}
|
||||
|
||||
public override IDictionary<string, string> DynamicColumns
|
||||
{
|
||||
get
|
||||
{
|
||||
return dynamicColumns;
|
||||
}
|
||||
}
|
||||
|
||||
protected override [ENTITY.name] CreateEntityInstance()
|
||||
{
|
||||
return [ENTITY.name].GiveAnInstance();
|
||||
}
|
||||
|
||||
#region Lekérdezés
|
||||
|
||||
public override void LoadEntityFields([ENTITY.name] entity, [GetCSharpSQLDataReaderType()] reader)
|
||||
{
|
||||
[GenerateLoadEntityCore([ENTITY], 1, "entity", "reader")]
|
||||
}
|
||||
|
||||
public override void LoadEntityFields([ENTITY.name] entity, [GetCSharpSQLDataReaderType()] reader, ColumnFilterMode columnFilterMode, IEnumerable<string> columns)
|
||||
{
|
||||
int index = 1;
|
||||
if (columns == null)
|
||||
{
|
||||
columns = new List<string>(index);
|
||||
}
|
||||
[GenerateDynamicLoadEntityCore([ENTITY], "entity", "reader")]
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Paraméter kötés
|
||||
|
||||
public override void BindAttributes([ENTITY.name] entity, [GetCSharpSQLCommandType()] command)
|
||||
{
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [MBaseClass.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
|
||||
[if (IsAttributeRequired([ATTRIBUTE]) == _True())]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], false);
|
||||
[else]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], entity.m_[ATTRIBUTE.name] == null);
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [ENTITY.name])]
|
||||
|
||||
[if (IsAttributeRequired([ATTRIBUTE]) == _True())]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], false);
|
||||
[else]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], entity.m_[ATTRIBUTE.name] == null);
|
||||
[end if]
|
||||
[end loop]
|
||||
}
|
||||
|
||||
public override void DynamicBindAttributes([ENTITY.name] entity, [GetCSharpSQLCommandType()] command)
|
||||
{
|
||||
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [MBaseClass.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
if (entity.HasChangedas("[ATTRIBUTE.name]"))
|
||||
{
|
||||
sb.Append("[ConvertNameToSQLColumnName([ATTRIBUTE.name])] = :[ConvertNameToCommandParameterName([ATTRIBUTE.name])],");
|
||||
|
||||
[if (IsAttributeRequired([ATTRIBUTE]) == _True())]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], false);
|
||||
[else]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], entity.m_[ATTRIBUTE.name] == null);
|
||||
[end if]
|
||||
}
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [ENTITY.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
|
||||
if (entity.HasChanged("[ATTRIBUTE.name]"))
|
||||
{
|
||||
sb.Append("[ConvertNameToSQLColumnName([ATTRIBUTE.name])] = :[ConvertNameToCommandParameterName([ATTRIBUTE.name])],");
|
||||
|
||||
[if (IsAttributeRequired([ATTRIBUTE]) == _True())]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], false);
|
||||
[else]
|
||||
DAUtil.BindParameter(command, "[ConvertNameToCommandParameterName([ATTRIBUTE.name])]", [GetCSharpDatasetType([ATTRIBUTE.type],IsAttributeUnicode([ATTRIBUTE]))][SDA_GetFieldLength([ATTRIBUTE])], entity.m_[ATTRIBUTE.name], entity.m_[ATTRIBUTE.name] == null);
|
||||
[end if]
|
||||
|
||||
}
|
||||
[end if]
|
||||
[end loop]
|
||||
command.CommandText = command.CommandText.Replace("{COLUMNS}", sb.ToString());
|
||||
}
|
||||
|
||||
public override void BindAssociations([ENTITY.name] entity, [GetCSharpSQLCommandType()] command)
|
||||
{
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNERCLASS where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNERCLASS]) == "Entity"))]
|
||||
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
|
||||
[if ([ENDROLE.multiplicity] == "1")]
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", entity.Internal[ConvertRoleToName([ENDROLE])]);
|
||||
[else]
|
||||
[if ([ENDROLE.multiplicity] == "0..1")]
|
||||
[if (([STARTROLE.multiplicity] == "1..*") or ([STARTROLE.multiplicity] == "*") or ([STARTROLE.multiplicity] == "0..*"))]
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", entity.Internal[ConvertRoleToName([ENDROLE])]);
|
||||
[end if]
|
||||
[end if]
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNERCLASS where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNERCLASS]) == "Entity"))]
|
||||
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
|
||||
[if ([ENDROLE.multiplicity] == "1")]
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", entity.Internal[ConvertRoleToName([ENDROLE])]);
|
||||
[else]
|
||||
[if ([ENDROLE.multiplicity] == "0..1")]
|
||||
[if (([STARTROLE.multiplicity] == "1..*") or ([STARTROLE.multiplicity] == "*") or ([STARTROLE.multiplicity] == "0..*"))]
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", entity.Internal[ConvertRoleToName([ENDROLE])]);
|
||||
[end if]
|
||||
[end if]
|
||||
[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" ))]
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", entity.[ConvertRoleToName([ENDROLE])]);
|
||||
DAUtil.BindIdParameter(command, "[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]", entity.[ConvertRoleToName([STARTROLE])]);
|
||||
[end loop]
|
||||
[end loop]
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
end template
|
||||
|
||||
|
||||
//***************************************************************************//
|
||||
// Legenerálja egy adott entitás lekérdezéseit, összerendeléseit, //
|
||||
// szétkapcsolásait. //
|
||||
//***************************************************************************//
|
||||
template GenerateEntityLoaders(MClass as ENTITY)
|
||||
#region Mint asszociációs osztály
|
||||
[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" ))]
|
||||
[if (([STARTROLE.multiplicity] == "0..1") or ([STARTROLE.multiplicity] == "1"))]
|
||||
private const string m_LoadBy[DefineRoleName([ENDROLE])]Filter = @" and ([ConvertNameToSQLTableName([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
|
||||
\[Obsolete("Teszteletlen, Cimby-t értesíteni kell erről, de azonnal!")\]
|
||||
public bool LoadBy[DefineRoleName([ENDROLE])]([ENDCLASS.name] partner, [ENTITY.name] entity)
|
||||
{
|
||||
return dbhelper.LoadByPartnerId(entity, m_LoadBy[ConvertRoleToName([ENDROLE])]Filter, partner.ID);
|
||||
}
|
||||
|
||||
[end if]
|
||||
[if (([ENDROLE.multiplicity] == "0..1") or ([ENDROLE.multiplicity] == "1"))]
|
||||
private const string m_LoadBy[DefineRoleName([STARTROLE])]Filter = @" and ([ConvertNameToSQLTableName([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
|
||||
public bool LoadBy[DefineRoleName([STARTROLE])]([STARTCLASS.name] partner, [ENTITY.name] entity)
|
||||
{
|
||||
return dbhelper.LoadByPartnerId(entity, m_LoadBy[DefineRoleName([STARTROLE])]Filter, partner.ID);
|
||||
}
|
||||
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
#endregion
|
||||
|
||||
[loop (ENTITY -> Role as STARTROLE -> MAssociation as CURRENTASSOCIATION -> MAssociationEnd as ENDROLE -> MClass as PARTNERCLASS where (([STARTROLE.id] != [ENDROLE.id]) and GetStereoType([PARTNERCLASS]) == "Entity"))]
|
||||
[if (HasAssociationClass([CURRENTASSOCIATION]) == "")]
|
||||
[if ([STARTROLE.multiplicity] == "1" or [STARTROLE.multiplicity] == "0..1")]
|
||||
[if ([ENDROLE.multiplicity] == "1")]
|
||||
// a kapcsolómező nálunk van
|
||||
private const string m_LoadBy[ConvertRoleToName([ENDROLE])]Filter = @" and ([ConvertNameToSQLTableName([ENTITY.name])].[ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
[else]
|
||||
[if ([STARTROLE.multiplicity] == "0..1" and ([ENDROLE.multiplicity] == "0..1"))]
|
||||
// kapcsolótábla van
|
||||
private const string m_LoadBy[ConvertRoleToName([ENDROLE])]Filter = @" and (exists (select 1 from [ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE], [STARTROLE]))] where [ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = [ConvertNameToSQLTableName([ENTITY.name])].ID and [ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] = :[ConvertNameToCommandParameterName("ID")])) ";
|
||||
[else]
|
||||
[if ([ENTITY.name] != [PARTNERCLASS.name])]
|
||||
// kapcsolómező a másik táblában van, és nem önmagára mutat
|
||||
private const string m_LoadBy[ConvertRoleToName([ENDROLE])]Filter = @" and (exists (select 1 from [ConvertNameToSQLTableName([PARTNERCLASS.name])] where [ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = [ConvertNameToSQLTableName([ENTITY.name])].ID and [ConvertNameToSQLTableName([PARTNERCLASS.name])].ID = :[ConvertNameToCommandParameterName("ID")])) ";
|
||||
[else]
|
||||
// önmagára mutat
|
||||
private const string m_LoadBy[ConvertRoleToName([ENDROLE])]Filter = @" and (exists (select 1 from [ConvertNameToSQLTableName([PARTNERCLASS.name])] T_TEMP where T_TEMP.[ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = [ConvertNameToSQLTableName([ENTITY.name])].ID and T_TEMP.ID = :[ConvertNameToCommandParameterName("ID")])) ";
|
||||
[end if]
|
||||
[end if]
|
||||
[end if]
|
||||
|
||||
public bool LoadBy[ConvertRoleToName([ENDROLE])](int id, [ENTITY.name] entity)
|
||||
{
|
||||
return dbhelper.LoadByPartnerId(entity, m_LoadBy[ConvertRoleToName([ENDROLE])]Filter, id);
|
||||
}
|
||||
|
||||
[if (([STARTROLE.multiplicity] == "0..1") and ([ENDROLE.multiplicity] == "0..1"))]
|
||||
private const string m_Associate[DefineRoleName([ENDROLE])]CommandText = @"
|
||||
insert into [ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE], [STARTROLE]))]
|
||||
( [ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))], [ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] )
|
||||
values ( :[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))], :[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))] )";
|
||||
|
||||
public void Associate[DefineRoleName([ENDROLE])]([ENTITY.name] entity, [PARTNERCLASS.name] partner)
|
||||
{
|
||||
using([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_Associate[DefineRoleName([ENDROLE])]CommandText))
|
||||
{
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]", [GetCSharpSQLIDType()]).Value = entity.ID;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", [GetCSharpSQLIDType()]).Value = partner.ID;
|
||||
command.ExecuteNonQuery(); // EntityDA.tdl 207
|
||||
}
|
||||
}
|
||||
|
||||
private const string m_DeAssociate[DefineRoleName([ENDROLE])]CommandText = @"
|
||||
delete from [ConvertNameToSQLTableName(ConvertAssociationRolesToSwitchTableName([ENDROLE], [STARTROLE]))]
|
||||
where ([ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))])";
|
||||
|
||||
public void DeAssociate[DefineRoleName([ENDROLE])]([ENTITY.name] entity)
|
||||
{
|
||||
using([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_DeAssociate[DefineRoleName([ENDROLE])]CommandText))
|
||||
{
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]", [GetCSharpSQLIDType()]).Value = entity.ID;
|
||||
command.ExecuteNonQuery(); // EntityDA.tdl 219
|
||||
}
|
||||
}
|
||||
|
||||
[end if]
|
||||
[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" ))]
|
||||
public bool LoadBy[DefineRoleName([STARTROLE])]([STARTCLASS.name] start, [ENDCLASS.name] end, [ENTITY.name] entity)
|
||||
{
|
||||
using ([GetCSharpSQLCommandType()] command = dbhelper.CreateEmptyQueryCommand())
|
||||
{
|
||||
command.CommandText += @" and ([ConvertNameToSQLColumnName(ConvertRoleToName([STARTROLE]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]) and ([ConvertNameToSQLColumnName(ConvertRoleToName([ENDROLE]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]) ";
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([STARTROLE]))]", [GetCSharpSQLIDType()]).Value = start.ID;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName(ConvertRoleToName([ENDROLE]))]", [GetCSharpSQLIDType()]).Value = end.ID;
|
||||
|
||||
return dbhelper.LoadSingleEntity(entity, command); // EntityDA.tdl 457
|
||||
}
|
||||
}
|
||||
|
||||
public bool LoadBy[DefineRoleName([ENDROLE])]([ENDCLASS.name] start, [STARTCLASS.name] end, [ENTITY.name] entity)
|
||||
{
|
||||
return this.LoadBy[DefineRoleName([STARTROLE])](end, start, entity);
|
||||
}
|
||||
|
||||
[end loop]
|
||||
[end loop]
|
||||
end template
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA-hoz az insert művelet megvalósítását. //
|
||||
//***************************************************************************//
|
||||
template GenerateInsertEntity(MClass as ENTITY)
|
||||
#region InsertEntity
|
||||
|
||||
private const string m_InsertCommandText = @"
|
||||
insert into [ConvertNameToSQLTableName([ENTITY.name])] (
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [MBaseClass.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
[ConvertNameToSQLColumnName([ATTRIBUTE.name])],
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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" ))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))],
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [ENTITY.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
[ConvertNameToSQLColumnName([ATTRIBUTE.name])],
|
||||
[end if]
|
||||
[end loop]
|
||||
[loop (ENTITY -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[loop (ENTITY -> 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" ))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))],
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
TOROLT,
|
||||
SERIAL,
|
||||
CREATED,
|
||||
[if (IsMasterEntity([ENTITY]) == "true" || GetInheritance([ENTITY]) == "tpc")]
|
||||
CREATOR)
|
||||
[else]
|
||||
CREATOR,
|
||||
ID)
|
||||
[end if]
|
||||
values (
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [MBaseClass.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
:[ConvertNameToCommandParameterName([ATTRIBUTE.name])],
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))))]
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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" ))]
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> MAttribute as ATTRIBUTE where [ATTRIBUTE.name] != [ENTITY.name])]
|
||||
[if (IsComputedAttribute([ATTRIBUTE]) == _False())]
|
||||
:[ConvertNameToCommandParameterName([ATTRIBUTE.name])],
|
||||
[end if]
|
||||
[end loop]
|
||||
[loop (ENTITY -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity] == "*") or ([StartRole.multiplicity] == "0..*"))))]
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[loop (ENTITY -> 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" ))]
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
:[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
:[ConvertNameToCommandParameterName("Torolt")],
|
||||
:[ConvertNameToCommandParameterName("Serial")],
|
||||
:[ConvertNameToCommandParameterName("Created")],
|
||||
[if (IsMasterEntity([ENTITY]) == "true" || GetInheritance([ENTITY]) == "tpc")]
|
||||
:[ConvertNameToCommandParameterName("Creator")]);
|
||||
|
||||
SELECT SCOPE_IDENTITY() as ID;
|
||||
[else]
|
||||
:[ConvertNameToCommandParameterName("Creator")],
|
||||
:[ConvertNameToCommandParameterName("ID")] ) -- Leszármaztatott entitás ID-ja
|
||||
[end if]
|
||||
|
||||
";
|
||||
|
||||
public override void InsertEntity([ENTITY.name] entity)
|
||||
{
|
||||
[if (IsMasterEntity([ENTITY]) == "false" && GetInheritance([ENTITY]) != "tpc")]
|
||||
entity.InheritedDA.InsertEntity(entity);
|
||||
[else]
|
||||
entity.Serial = 0;
|
||||
[if (GetTaggedValue([ENTITY], "anonymous") == "all" || GetTaggedValue([ENTITY], "anonymous") == "insert")]
|
||||
SetEntityCreator(entity, DateTime.Now, "??????");
|
||||
[else]
|
||||
SetEntityCreator(entity, DateTime.Now, UserContext.Instance.UniqueIdentifier);
|
||||
[end if]
|
||||
[end if]
|
||||
|
||||
using ([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_InsertCommandText))
|
||||
{
|
||||
dbhelper.BindAttributes(entity, command);
|
||||
dbhelper.BindAssociations(entity, command);
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Torolt")]", [GetCSharpDatasetType("Boolean", "")]).Value = false;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Serial")]", [GetCSharpDatasetType("Integer", "")]).Value = 0;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Created")]", [GetCSharpDatasetType("DateTime", "")]).Value = entity.EntityCreated;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Creator")]", [GetCSharpDatasetType("ID", "")]).Value = entity.EntityCreator;
|
||||
[if (IsMasterEntity([ENTITY]) == "true" || GetInheritance([ENTITY]) == "tpc")]
|
||||
|
||||
entity.ID = Convert.ToInt32(command.ExecuteScalar());
|
||||
[else]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpDatasetType("ID", "")]).Value = entity.ID; // leszármaztatott entitás ID-ja
|
||||
|
||||
command.ExecuteNonQuery();
|
||||
[end if]
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
|
@ -0,0 +1,26 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA-hoz az alaphalmaz lekérdezését megvalósító műveletet. //
|
||||
//***************************************************************************//
|
||||
template GenerateLoadBaseSet(MClass as ENTITY)
|
||||
\[Obsolete("Ezt ne használjátok, mert mindenhova bele kellene fogalmazni a tanév szűrést is! Meg fog majd szűnni!")\]
|
||||
public override void LoadWithFilter(IEntityCollection<[ENTITY.name]> collection, string filter, Dictionary<string, object> commandParameters = null)
|
||||
{
|
||||
using (SDA.DataProvider.SDACommand command = dbhelper.CreateEmptyQueryCommand())
|
||||
{
|
||||
command.CommandText += filter;
|
||||
dbhelper.CreateParameterBinding(command, commandParameters);
|
||||
dbhelper.LoadEntityCollection(collection, command);
|
||||
}
|
||||
}
|
||||
|
||||
\[Obsolete("Ezt ne használjátok, mert mindenhova bele kellene fogalmazni a tanév szűrést is! Meg fog majd szűnni!")\]
|
||||
public override void LoadWithFilter(IEntityCollection<[ENTITY.name]> collection, string filter, ColumnFilterMode columnFilterMode, IEnumerable<string> columns, Dictionary<string, object> commandParameters = null)
|
||||
{
|
||||
using (SDA.DataProvider.SDACommand command = dbhelper.CreateDynamicQueryCommand(columnFilterMode, columns))
|
||||
{
|
||||
command.CommandText += filter;
|
||||
dbhelper.CreateParameterBinding(command, commandParameters);
|
||||
dbhelper.LoadEntityCollection(collection, command, columnFilterMode, columns);
|
||||
}
|
||||
}
|
||||
end template
|
|
@ -0,0 +1,34 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA rétegbe egy entitás lekérdezését azonosító alapján //
|
||||
//***************************************************************************//
|
||||
template GenerateLoadByID(MClass as ENTITY)
|
||||
public override bool LoadEntity([ENTITY.name] entity, int entityId)
|
||||
{
|
||||
return LoadById(entity, entityId);
|
||||
}
|
||||
|
||||
public override bool FilteredLoadEntity([ENTITY.name] entity, int entityId, ColumnFilterMode columnFilterMode, IEnumerable<string> columns)
|
||||
{
|
||||
return LoadById(entity, entityId, columnFilterMode, columns);
|
||||
}
|
||||
|
||||
public bool LoadById([ENTITY.name] entity, int entityId)
|
||||
{
|
||||
using (SDA.DataProvider.SDACommand command = dbhelper.CreateEmptyQueryCommand())
|
||||
{
|
||||
command.CommandText += " and ([ConvertNameToSQLTableName([ENTITY.name])].ID = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]).Value = entityId;
|
||||
return dbhelper.LoadSingleEntity(entity, command);
|
||||
}
|
||||
}
|
||||
|
||||
public bool LoadById([ENTITY.name] entity, int entityId, ColumnFilterMode columnFilterMode, IEnumerable<string> columns)
|
||||
{
|
||||
using (SDA.DataProvider.SDACommand command = dbhelper.CreateDynamicQueryCommand(columnFilterMode, columns))
|
||||
{
|
||||
command.CommandText += " and ([ConvertNameToSQLTableName([ENTITY.name])].ID = :[ConvertNameToCommandParameterName("ID")]) ";
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]).Value = entityId;
|
||||
return dbhelper.LoadSingleEntity(entity, command, columnFilterMode, columns);
|
||||
}
|
||||
}
|
||||
end template
|
|
@ -0,0 +1,132 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA-hoz a zárolási műveletet. //
|
||||
//***************************************************************************//
|
||||
template GenerateNoWaitForLock(ENTITYNAME)
|
||||
#region No wait for lock
|
||||
|
||||
private string GetNoWaitForLockCommandText()
|
||||
{
|
||||
string result = null;
|
||||
switch (SDAServer.Instance.Configuration.DataBaseType)
|
||||
{
|
||||
case DataBaseType.MSSQL:
|
||||
{
|
||||
result = "select SERIAL from [ConvertNameToSQLTableName([ENTITYNAME])] with(updlock) where ID = :[ConvertNameToCommandParameterName("ID")] {0} ";
|
||||
break;
|
||||
}
|
||||
case DataBaseType.ORACLE:
|
||||
case DataBaseType.NATIVEORACLE:
|
||||
{
|
||||
result = "select SERIAL from [ConvertNameToSQLTableName([ENTITYNAME])] where ID = :[ConvertNameToCommandParameterName("ID")] {0} for update nowait ";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new NotSupportedException(SDAServer.Instance.Configuration.DataBaseType.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
result = String.Format(result, "");
|
||||
return result;
|
||||
}
|
||||
|
||||
public int NoWaitForLock([ENTITYNAME] entity)
|
||||
{
|
||||
//Console.WriteLine("*** NoWaitForLock 35");
|
||||
using ([GetCSharpSQLCommandType()] command = DataAccessor.CreateCommand(this.GetNoWaitForLockCommandText()))
|
||||
{
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]).Value = entity.ID;
|
||||
int result = -1;
|
||||
using ([GetCSharpSQLDataReaderType()] reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
result = Convert.ToInt32(reader.GetValue(0));
|
||||
if (reader.Read())
|
||||
{
|
||||
throw new Kreta.Framework.DataIntegrityException("Egyediség megsértése: [ENTITYNAME].");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Kreta.Framework.Exceptions.EntityNotFoundException("[ENTITYNAME]", entity.ID);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* REFACTOR
|
||||
template GenerateNoWaitForLock(classname)
|
||||
#region No wait for lock
|
||||
[GenerateCommandGetterProperty("NoWaitForLock")]
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>A műveletet elvégző SQL parancs.</returns>
|
||||
private [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("NoWaitForLock")]()
|
||||
{
|
||||
[GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()]();
|
||||
result.CommandType = CommandType.Text;
|
||||
result.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]);
|
||||
switch (SDAServer.Instance.Configuration.DataBaseType)
|
||||
{
|
||||
case DataBaseType.MSSQL:
|
||||
{
|
||||
result.CommandText = "select SERIAL from [ConvertNameToSQLTableName([classname])] with(updlock) where ID = :[ConvertNameToCommandParameterName("ID")] ";
|
||||
break;
|
||||
}
|
||||
case DataBaseType.ORACLE:
|
||||
case DataBaseType.NATIVEORACLE:
|
||||
{
|
||||
result.CommandText = "select SERIAL from [ConvertNameToSQLTableName([classname])] where ID = :[ConvertNameToCommandParameterName("ID")] ";
|
||||
result.CommandText += " for update nowait";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
throw new NotSupportedException(SDAServer.Instance.Configuration.DataBaseType.ToString());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public int NoWaitForLock([classname] entity)
|
||||
{
|
||||
[GetCSharpSQLDataReaderType()] reader = null;
|
||||
[GetCSharpSQLCommandType()] command = this.[ConvertNameToCommandName("NoWaitForLock")];
|
||||
[GenerateCommandInit("command")]
|
||||
command.Parameters\["[ConvertNameToCommandParameterName("ID")]"\].Value = entity.ID;
|
||||
|
||||
int result = -1;
|
||||
using (reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
result = Convert.ToInt32(reader.GetValue(0));
|
||||
System.Diagnostics.Debug.Assert(reader.Read() == false, "Több ilyen entitást találtam az adatbázisban..."); // XXX
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Kreta.Framework.Exceptions.EntityNotFoundException("[classname]", entity.ID);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
||||
*/
|
|
@ -0,0 +1,89 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja egy entitás asszociációinak módosítóműveletét a DA-ban //
|
||||
//***************************************************************************//
|
||||
template GenerateUpdateAssociations(MClass as ENTITY)
|
||||
#region UpdateAssociations
|
||||
|
||||
private const string m_UpdateAssociationCommandText = @"
|
||||
update [ConvertNameToSQLTableName([ENTITY.name])]
|
||||
set
|
||||
[if (GetInheritance([ENTITY]) == "tpc")]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity]=="*") or ([StartRole.multiplicity]=="0..*"))))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[loop (ENTITY -> SuperClass as MBaseClass)]
|
||||
[loop (MBaseClass -> 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" ))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end loop]
|
||||
[end if]
|
||||
[loop (ENTITY -> 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") or (([EndRole.multiplicity] == "0..1") and (([StartRole.multiplicity] == "1..*") or ([StartRole.multiplicity]=="*") or ([StartRole.multiplicity]=="0..*"))))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[end if]
|
||||
[end if]
|
||||
[end loop]
|
||||
[loop (ENTITY -> 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" ))]
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([EndRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([EndRole]))],
|
||||
[ConvertNameToSQLColumnName(ConvertRoleToName([StartRole]))] = :[ConvertNameToCommandParameterName(ConvertRoleToName([StartRole]))],
|
||||
[end loop]
|
||||
[end loop]
|
||||
SERIAL = ISNULL(SERIAL,0) + 1,
|
||||
LASTCHANGED = :[ConvertNameToCommandParameterName("LastChanged")],
|
||||
MODIFIER = :[ConvertNameToCommandParameterName("Modifier")]
|
||||
where
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
(ID = :[ConvertNameToCommandParameterName("ID")]) and (ISNULL(SERIAL,0) = :[ConvertNameToCommandParameterName("Serial")])
|
||||
[else]
|
||||
(ID = :[ConvertNameToCommandParameterName("ID")])
|
||||
[end if]
|
||||
";
|
||||
|
||||
public override bool UpdateAssociations([ENTITY.name] entity)
|
||||
{
|
||||
[if (IsMasterEntity([ENTITY]) == "false")]
|
||||
if (entity.InheritedDA.UpdateAssociations(entity) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
[end if]
|
||||
|
||||
using ([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_UpdateAssociationCommandText))
|
||||
{
|
||||
dbhelper.BindAssociations(entity, command);
|
||||
|
||||
DateTime lastchanged = DateTime.Now;
|
||||
var modifier = UserContext.Instance.UniqueIdentifier;
|
||||
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpDatasetType("ID", "")]).Value = entity.ID;
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Serial")]", [GetCSharpDatasetType("Integer", "")]).Value = entity.Serial;
|
||||
[end if]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("LastChanged")]", [GetCSharpDatasetType("DateTime", "")]).Value = lastchanged;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Modifier")]", [GetCSharpDatasetType("ID", "")]).Value = modifier;
|
||||
|
||||
bool result = (command.ExecuteNonQuery() == 1);
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
if (result == true)
|
||||
{
|
||||
entity.Serial++;
|
||||
SetEntityModifier(entity, lastchanged, modifier);
|
||||
}
|
||||
[end if]
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
|
@ -0,0 +1,64 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja egy entitás módosító műveletét a DA-ban //
|
||||
//***************************************************************************//
|
||||
template GenerateUpdateEntity(MClass as ENTITY)
|
||||
#region UpdateEntity
|
||||
|
||||
private const string m_UpdateAttributesCommandText = @"
|
||||
update [ConvertNameToSQLTableName([ENTITY.name])]
|
||||
set
|
||||
{COLUMNS}
|
||||
SERIAL = ISNULL(SERIAL,0) + 1,
|
||||
LASTCHANGED = :[ConvertNameToCommandParameterName("LastChanged")],
|
||||
MODIFIER = :[ConvertNameToCommandParameterName("Modifier")],
|
||||
TOROLT = :[ConvertNameToCommandParameterName("Torolt")]
|
||||
where
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
(ID = :[ConvertNameToCommandParameterName("ID")]) and (ISNULL(SERIAL,0) = :[ConvertNameToCommandParameterName("Serial")])
|
||||
[else]
|
||||
(ID = :[ConvertNameToCommandParameterName("ID")])
|
||||
[end if]
|
||||
";
|
||||
|
||||
public override bool UpdateEntity([ENTITY.name] entity)
|
||||
{
|
||||
[if (IsMasterEntity([ENTITY]) == "false")]
|
||||
if (entity.InheritedDA.UpdateEntity(entity) == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
[end if]
|
||||
using ([GetCSharpSQLCommandType()] command = DAUtil.CreateCommand(m_UpdateAttributesCommandText))
|
||||
{
|
||||
bool result = true;
|
||||
dbhelper.DynamicBindAttributes(entity, command);
|
||||
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
[if (GetTaggedValue([ENTITY], "anonymous") == "all" || GetTaggedValue([ENTITY], "anonymous") == "update")]
|
||||
SetEntityModifier(entity, DateTime.Now, "??????");
|
||||
[else]
|
||||
SetEntityModifier(entity, DateTime.Now, UserContext.Instance.UniqueIdentifier);
|
||||
[end if]
|
||||
[end if]
|
||||
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpDatasetType("ID", "")]).Value = entity.ID;
|
||||
[if (IsMasterEntity([ENTITY]) == "true")]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Serial")]", [GetCSharpDatasetType("Integer", "")]).Value = entity.Serial;
|
||||
[end if]
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("LastChanged")]", [GetCSharpDatasetType("DateTime", "")]).Value = entity.EntityLastChanged;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Modifier")]", [GetCSharpDatasetType("ID", "")]).Value = entity.EntityModifier;
|
||||
command.Parameters.Add("[ConvertNameToCommandParameterName("Torolt")]", [GetCSharpDatasetType("Boolean", "")]).Value = entity.Torolt;
|
||||
|
||||
result = (command.ExecuteNonQuery() == 1);
|
||||
[if(IsMasterEntity([ENTITY]) == "true")]
|
||||
if (result == true)
|
||||
entity.Serial++;
|
||||
[end if]
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
|
@ -0,0 +1,47 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA-hoz a zárolási műveletet. //
|
||||
// //
|
||||
// NINCS HASZNÁLVA! //
|
||||
//***************************************************************************//
|
||||
template GenerateWaitForLock(classname)
|
||||
#region Wait for lock
|
||||
[GenerateCommandGetterProperty("WaitForLock")]
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>A műveletet elvégző SQL parancs.</returns>
|
||||
private [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("WaitForLock")]()
|
||||
{
|
||||
[GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()]();
|
||||
result.CommandType = CommandType.Text;
|
||||
result.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]);
|
||||
result.Parameters.Add("[ConvertNameToCommandParameterName("TimeOut")]", [GetCSharpSQLIDType()]);// XXX nem hasznalt parameter!
|
||||
result.CommandText =
|
||||
"select " +
|
||||
"SERIAL " +
|
||||
"from " +
|
||||
"[ConvertNameToSQLTableName([classname])] " +
|
||||
"where " +
|
||||
"ID = :[ConvertNameToCommandParameterName("ID")] " +
|
||||
"for update";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void WaitForLock([classname] entity, int timeout)
|
||||
{
|
||||
[GetCSharpSQLCommandType()] command = this.[ConvertNameToCommandName("WaitForLock")];
|
||||
[GenerateCommandInit("command")]
|
||||
command.Parameters\["[ConvertNameToCommandParameterName("ID")]"\].Value = entity.ID;
|
||||
command.Parameters\["[ConvertNameToCommandParameterName("TimeOut")]"\].Value = timeout;
|
||||
|
||||
command.ExecuteNonQuery(); // XXX nincs rendesen kigyurva!
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
//***************************************************************************//
|
||||
// Legenerálja a DA-hoz a zárolási műveletet. //
|
||||
// //
|
||||
// NINCS HASZNÁLVA! //
|
||||
//***************************************************************************//
|
||||
template GenerateWaitLock(classname)
|
||||
#region Wait lock
|
||||
[GenerateCommandGetterProperty("WaitLock")]
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>A műveletet elvégző SQL parancs.</returns>
|
||||
private [GetCSharpSQLCommandType()] [GenerateCommandCreatorName("WaitLock")]()
|
||||
{
|
||||
[GetCSharpSQLCommandType()] result = new [GetCSharpSQLCommandType()]();
|
||||
result.CommandType = CommandType.Text;
|
||||
result.Parameters.Add("[ConvertNameToCommandParameterName("ID")]", [GetCSharpSQLIDType()]);
|
||||
result.CommandText =
|
||||
"select " +
|
||||
"SERIAL " +
|
||||
"from " +
|
||||
"[ConvertNameToSQLTableName([classname])] " +
|
||||
"where " +
|
||||
"ID = :[ConvertNameToCommandParameterName("ID")] " +
|
||||
"for update";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public void WaitLock([classname] entity)
|
||||
{
|
||||
[GetCSharpSQLCommandType()] command = this.[ConvertNameToCommandName("WaitLock")];
|
||||
[GenerateCommandInit("command")]
|
||||
command.Parameters\["[ConvertNameToCommandParameterName("ID")]"\].Value = entity.ID;
|
||||
|
||||
command.ExecuteNonQuery(); // XXX nincs rendesen kigyurva!
|
||||
}
|
||||
|
||||
#endregion
|
||||
end template
|
Loading…
Add table
Add a link
Reference in a new issue