184 lines
6.2 KiB
Text
184 lines
6.2 KiB
Text
//***************************************************************************//
|
|
// A használt fájlok //
|
|
//***************************************************************************//
|
|
USES Common/std;
|
|
USES Common/Converters;
|
|
USES Common/CommonUtil;
|
|
USES Common/StringUtil;
|
|
USES Common/ModelDataRetreive;
|
|
USES Common/DBUtil;
|
|
|
|
USES Database/SQLGenerator;
|
|
|
|
proc main()
|
|
Init();
|
|
// info = "";
|
|
if ([SQL_DBType] == "MSSQL")
|
|
out = MultiLanguageViews_Mssql();
|
|
else
|
|
if ([SQL_DBType] == "ORACLE")
|
|
out = MultiLanguageViews_Oracle();
|
|
end if
|
|
end if
|
|
// info = "";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Általános inicializálás //
|
|
//***************************************************************************//
|
|
proc Init()
|
|
local dbtag = "";
|
|
//current language
|
|
setLanguage("SQL");
|
|
//mkdir([OutputDir]);
|
|
|
|
switch( [SQL_DBType] )
|
|
//ORACLE Type
|
|
case "ORACLE" :
|
|
[dbtag] = "ora";
|
|
break;
|
|
|
|
//MSSQL Type
|
|
case "MSSQL" :
|
|
[dbtag] = "mssql";
|
|
break;
|
|
|
|
//DB2 Type
|
|
case "DB2" :
|
|
[dbtag] = "db2";
|
|
break;
|
|
end switch
|
|
|
|
setOutput( [OutputDir] "/" "create.multilang." [dbtag] ".sql");
|
|
|
|
// UTF-8 BOM bájtok
|
|
setVar("BOM", "\xEF\xBB\xBF");
|
|
end proc
|
|
|
|
|
|
|
|
template MultiLanguageViews_Oracle()
|
|
[BOM]
|
|
[loop (Instances -> MClass as ENTITY where GetStereoType([ENTITY]) == "Entity" and HasMultiLanguageAttributes([ENTITY]) == _True())]
|
|
[GenerateMultiLanguageView_Oracle([ENTITY], 1)]
|
|
/
|
|
|
|
[GenerateMultiLanguageView_Oracle([ENTITY], 2)]
|
|
/
|
|
|
|
[GenerateMultiLanguageView_Oracle([ENTITY], 3)]
|
|
/
|
|
|
|
[GenerateMultiLanguageView_Oracle([ENTITY], 4)]
|
|
/
|
|
|
|
[end loop]
|
|
QUIT
|
|
|
|
end template
|
|
|
|
|
|
template GenerateMultiLanguageView_Oracle(MClass as ENTITY, LANGUAGEINDEX)
|
|
create or replace view [ConvertNameToSQLTableName([ENTITY.name])]_[LANGUAGEINDEX] as
|
|
select
|
|
[loop (ENTITY -> MAttribute as ATTRIBUTE)]
|
|
[if (IsMultiLanguage([ATTRIBUTE]) == _True() and GetLanguageIndex([ATTRIBUTE]) == 0)]
|
|
nvl([ConvertNameToSQLColumnName([ATTRIBUTE.name])]_[LANGUAGEINDEX], [ConvertNameToSQLColumnName([ATTRIBUTE.name])]) "[ConvertNameToSQLColumnName([ATTRIBUTE.name])]",
|
|
[else]
|
|
[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]
|
|
[if (IsMasterEntity([ENTITY]) == "true")]
|
|
SERIAL,
|
|
LASTCHANGED,
|
|
MODIFIER,
|
|
CREATED,
|
|
CREATOR,
|
|
[end if]
|
|
ID
|
|
from
|
|
[ConvertNameToSQLTableName([ENTITY.name])]
|
|
end template
|
|
|
|
|
|
template MultiLanguageViews_Mssql()
|
|
[BOM]
|
|
[loop (Instances -> MClass as ENTITY where GetStereoType([ENTITY]) == "Entity" and HasMultiLanguageAttributes([ENTITY]) == _True())]
|
|
[GenerateMultiLanguageView_Mssql([ENTITY], 1)]
|
|
go
|
|
|
|
[GenerateMultiLanguageView_Mssql([ENTITY], 2)]
|
|
go
|
|
|
|
[GenerateMultiLanguageView_Mssql([ENTITY], 3)]
|
|
go
|
|
|
|
[GenerateMultiLanguageView_Mssql([ENTITY], 4)]
|
|
go
|
|
|
|
[end loop]
|
|
end template
|
|
|
|
|
|
template GenerateMultiLanguageView_Mssql(MClass as ENTITY, LANGUAGEINDEX)
|
|
if exists ( select name from sysobjects where name = '[ConvertNameToSQLTableName([ENTITY.name])]_[LANGUAGEINDEX]' and type = 'V')
|
|
drop view [ConvertNameToSQLTableName([ENTITY.name])]_[LANGUAGEINDEX]
|
|
go
|
|
|
|
create view [ConvertNameToSQLTableName([ENTITY.name])]_[LANGUAGEINDEX] as
|
|
select
|
|
[loop (ENTITY -> MAttribute as ATTRIBUTE)]
|
|
[if (IsMultiLanguage([ATTRIBUTE]) == _True() and GetLanguageIndex([ATTRIBUTE]) == 0)]
|
|
isnull([ConvertNameToSQLColumnName([ATTRIBUTE.name])]_[LANGUAGEINDEX], [ConvertNameToSQLColumnName([ATTRIBUTE.name])]) "[ConvertNameToSQLColumnName([ATTRIBUTE.name])]",
|
|
[else]
|
|
[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]
|
|
[if (IsMasterEntity([ENTITY]) == "true")]
|
|
SERIAL,
|
|
LASTCHANGED,
|
|
MODIFIER,
|
|
CREATED,
|
|
CREATOR,
|
|
[end if]
|
|
ID
|
|
from
|
|
[ConvertNameToSQLTableName([ENTITY.name])]
|
|
end template
|
|
|
|
|
|
proc HasMultiLanguageAttributes(MClass as ENTITY)
|
|
loop (ENTITY -> MAttribute as ATTRIBUTE where IsMultiLanguage([ATTRIBUTE]) == _True())
|
|
return _True();
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
|