This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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