816 lines
37 KiB
Text
816 lines
37 KiB
Text
proc IsMultiLanguage(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "languageindex")
|
|
if ([TaggedValue.value] != "")
|
|
return _True();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
proc IsTrimmed(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "trim")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return _True();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
proc GetLanguageIndex(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "languageindex")
|
|
return [TaggedValue.value];
|
|
end loop
|
|
return "Hiba: nincs languageindex";
|
|
end proc
|
|
|
|
|
|
proc GetModelVersion()
|
|
loop (Instances -> MClass as VERSIONCLASS -> TaggedValue as VERSION where [VERSIONCLASS.name] == ToUpper([ProjectName]) "_VERSION" and ToLower([VERSION.tag]) == "version")
|
|
return [VERSION.value];
|
|
end loop
|
|
return "0";
|
|
end proc
|
|
|
|
|
|
proc IsClassView(MClass as ELEMENT)
|
|
local result;
|
|
local package;
|
|
[result] = getStereotype([ELEMENT]);
|
|
[package] = GetPackage([ELEMENT]);
|
|
|
|
if ([result] == "View")
|
|
if (IsPackageAllowed([package]) == "True")
|
|
return "View";
|
|
else
|
|
return "";
|
|
end if
|
|
end if
|
|
return [result];
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy entitásról, hogy melyik sémába kerüljön. //
|
|
// //
|
|
// DBO értékkel, ha nem a projekt package-ben van benne. //
|
|
//***************************************************************************//
|
|
proc GetSchemaName(MClass as ELEMENT)
|
|
local result;
|
|
local package;
|
|
[result] = "DBO";
|
|
[package] = GetPackage([ELEMENT]);
|
|
|
|
if([ProjectName] != [package])
|
|
[result] = [package];
|
|
end if
|
|
|
|
return [result];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy entitásról, hogy védett kódtétel-e. //
|
|
// //
|
|
// True, ha védett kódtétel; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsProtectedDictionaryItem(MClass as ENTITY)
|
|
// if (IsEntityDictionaryItem([ENTITY]) == "True")
|
|
loop (ENTITY -> TaggedValue where toLower([TaggedValue.tag]) == "saveddi")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return "True";
|
|
end if
|
|
end loop
|
|
// end if
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy asszociációról, hogy engedélyezett-e rá a kaszkád törlés, //
|
|
// vagy sem. //
|
|
// //
|
|
// True, ha engedélyezett; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsCascadeDelete(MAssociation as ASSOCIATION)
|
|
loop (ASSOCIATION -> TaggedValue where toLower([TaggedValue.tag]) == "cascadedelete")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return "True";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy modellelem adott nevű taggedvalue-jának értékét. Ha nincs //
|
|
// definiálva, akkor üres karakterláncot ad vissza. //
|
|
//***************************************************************************//
|
|
proc GetTaggedValue(MSemElement as ELEMENT, NAME)
|
|
loop (ELEMENT -> TaggedValue as TAGGEDVALUE where toLower([TAGGEDVALUE.tag]) == toLower([NAME]))
|
|
return [TAGGEDVALUE.value];
|
|
end loop
|
|
|
|
return "";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy a jelenlegi generálási kontextusban egy adott UML csomag //
|
|
// engedélyezett-e, vagy sem. //
|
|
// //
|
|
// True, ha engedélyezett, egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsPackageAllowed(PACKAGE)
|
|
switch ([PACKAGE])
|
|
case "":
|
|
switch ([ProjectName])
|
|
case "Kreta": return "True";
|
|
case "stage": return "True";
|
|
default: return "False";
|
|
end switch
|
|
case [ProjectName]: return "True";
|
|
case "stage": return "True";
|
|
end switch
|
|
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy asszociációs szerepkör nevét, ha az definiált; ha nem //
|
|
// definiált, akkot nevet generál neki a partnerosztály nevéből. //
|
|
//***************************************************************************//
|
|
proc GetRoleName(MAssociationEnd as ROLE)
|
|
return DefineRoleName([ROLE]);
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy osztály sztereotípiáját. //
|
|
//***************************************************************************//
|
|
proc GetStereoType(MClass as ELEMENT)
|
|
local result;
|
|
local package;
|
|
[result] = getStereotype([ELEMENT]);
|
|
[package] = GetPackage([ELEMENT]);
|
|
|
|
if ([result] == "Entity" or [result] == "Entity2")
|
|
if (IsPackageAllowed([package]) == "True")
|
|
return "Entity";
|
|
else
|
|
return "";
|
|
end if
|
|
end if
|
|
return [result];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútum sztereotípiáját. //
|
|
//***************************************************************************//
|
|
proc GetStereoTypeForAttribute(MAttribute as ATTRIBUTE)
|
|
local temp;
|
|
[temp] = getStereotype([ATTRIBUTE]);
|
|
return [temp];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy művelet sztereotípiáját. //
|
|
//***************************************************************************//
|
|
proc GetStereoTypeForOperation(MOperation as OPERATION)
|
|
local temp;
|
|
[temp] = getStereotype([OPERATION]);
|
|
return [temp];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy entitás nevét. //
|
|
//***************************************************************************//
|
|
proc GetEntityName(MClass as ENTITY)
|
|
return [ENTITY.name];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútum nevét. //
|
|
//***************************************************************************//
|
|
proc GetAttributeName(MAttribute as ATTRIBUTE)
|
|
return [ATTRIBUTE.name];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Megmondja, hogy egy osztály entitásnak tekintendő-e, vagy sem. //
|
|
// Az, hogy entitás-e, az attól is függ, hogy melyik UML csomagot dolgozzuk //
|
|
// fel, és az osztály melyik UML csomagban található. //
|
|
//***************************************************************************//
|
|
proc IsEntity(MClass as ENTITY)
|
|
if (GetStereoType([ENTITY]) == "Entity")
|
|
return "True";
|
|
else
|
|
return "False";
|
|
end if
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy osztály melyik UML csomagban található. //
|
|
//***************************************************************************//
|
|
proc GetPackage(MClass as ELEMENT)
|
|
loop (ELEMENT -> MPackage)
|
|
return [MPackage.name];
|
|
end loop
|
|
return "";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy attribútum rendelkezik-e UML-ben előírt //
|
|
// alapértelmezett értékkel, vagy sem. //
|
|
// //
|
|
// True, ha rendelkezik; egyébként False. //
|
|
//***************************************************************************//
|
|
proc HasDefaultValue(MAttribute)
|
|
if ([MAttribute.type] == "DictionaryItem")
|
|
loop (MAttribute -> TaggedValue where toLower([TaggedValue.tag]) == "dictdefault")
|
|
return "true";
|
|
end loop
|
|
return "false";
|
|
end if
|
|
|
|
local result = [MAttribute.defaultValue];
|
|
|
|
if ([result] == "")
|
|
return "False";
|
|
else
|
|
return "True";
|
|
end if
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy osztály kódtételnek tekintendő-e vagy sem. Ez attól //
|
|
// függ, hogy leszármazottja-e a DictionaryItemBase osztálynak. //
|
|
// //
|
|
// True, ha kódtételnek minősül; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsEntityDictionaryItem(MClass as ENTITY)
|
|
local dictitems = GetDictionaryItemTypes();
|
|
loop (Instances -> TokenSet([dictitems]) )
|
|
if ([ENTITY.name] == [TokenSet.line])
|
|
return "True";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja az osztály legősibb entitás ősének a nevét. //
|
|
//***************************************************************************//
|
|
proc GetMasterEntityNameOf(MClass as ENTITY)
|
|
if (IsMasterEntity([ENTITY]) == "false")
|
|
loop (ENTITY -> SuperClass as BASECLASS)
|
|
return GetMasterEntityNameOf([BASECLASS]);
|
|
end loop
|
|
else
|
|
return [ENTITY.name];
|
|
end if
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, az öröklodés típusát, ha neki nincs, akkor az öséét //
|
|
//***************************************************************************//
|
|
proc GetInheritance(MClass as ENTITY)
|
|
loop (ENTITY -> TaggedValue where toLower([TaggedValue.tag]) == "inheritance")
|
|
return [TaggedValue.value];
|
|
end loop
|
|
loop (ENTITY -> SuperClass as BASECLASS)
|
|
return GetInheritance([BASECLASS]);
|
|
end loop
|
|
return "";
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy entitás rendelkezik-e UML-ben definiált saját //
|
|
// integritás-ellenőrzésre irányuló igénnyel, vagy sem. //
|
|
// //
|
|
// True, ha rendelkezik; egyébként False. //
|
|
// //
|
|
// VALÓSZÍNŰLEG MÁR ELAVULT, ÉS NEM HASZNÁLT! //
|
|
//***************************************************************************//
|
|
proc HasCustomValidate(MClass as ENTITY)
|
|
loop (ENTITY -> TaggedValue where toLower([TaggedValue.tag]) == "customvalidate")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return "True";
|
|
else
|
|
return "False";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy osztály leszármazottja-e egy másik osztálynak. //
|
|
//***************************************************************************//
|
|
proc IsA(MClass as ENTITY, ASCENDANT)
|
|
if ([ENTITY.name] == [ASCENDANT])
|
|
return "True";
|
|
end if
|
|
|
|
if (IsMasterEntity([ENTITY]) == "false")
|
|
loop (ENTITY -> SuperClass as BASECLASS)
|
|
return IsA([BASECLASS], [ASCENDANT]);
|
|
end loop
|
|
else
|
|
return "False";
|
|
end if
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy csak olvasható-e vagy sem. //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsReadonlyAttribute(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "readonly")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return _True();
|
|
else
|
|
return _False();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy csak olvasható-e vagy sem. //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsComputedAttribute(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "computed")
|
|
return _True();
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy csak alapértelmezett értékkel //
|
|
// rendelkezhet, vagy sem. //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsDefaultonlyAttribute(MAttribute as ATTRIBUTE)
|
|
loop (ATTRIBUTE -> TaggedValue where toLower([TaggedValue.tag]) == "defaultonly")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return _True();
|
|
else
|
|
return _False();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy asszociációról, hogy csak olvasható-e vagy sem. //
|
|
//***************************************************************************//
|
|
proc IsReadonlyAssociation(MAssociation as ASSOCIATION)
|
|
loop (ASSOCIATION -> TaggedValue where toLower([TaggedValue.tag]) == "readonly")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return "True";
|
|
else
|
|
return "False";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy asszociációról, hogy csak alapértelmezett értékkel //
|
|
// rendelkezhet, vagy sem. //
|
|
//***************************************************************************//
|
|
proc IsDefaultonlyAssociation(MAssociation as ASSOCIATION)
|
|
loop (ASSOCIATION -> TaggedValue where toLower([TaggedValue.tag]) == "defaultonly")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return "True";
|
|
else
|
|
return "False";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy vannak-e névnek tekintendő //
|
|
// attribútumai, vagy sem. //
|
|
// //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc HasNameAttribures(MClass as ENTITY)
|
|
loop (ENTITY -> MAttribute as ATTRIBUTE where GetStereoTypeForAttribute([ATTRIBUTE]) == "DisplayName")
|
|
return "True";
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy az névnek tekintendő-e vagy sem. //
|
|
// //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsNameAttribute(MAttribute as ATTRIBUTE)
|
|
if (GetStereoTypeForAttribute([ATTRIBUTE]) == "DisplayName")
|
|
return "True";
|
|
else
|
|
return "False";
|
|
end if
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy műveletről, hogy vannak-e paraméterei, vagy sem. //
|
|
// //
|
|
// True, ha van legalább egy; egyébként False. //
|
|
//***************************************************************************//
|
|
proc HasParameters(MOperation as OPERATION)
|
|
loop (OPERATION -> OpPara as PARAMETER)
|
|
return "True";
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy műveletről, hogy van-e Object típusú paramétere, vagy sem. //
|
|
// //
|
|
// True, ha van legalább egy; egyébként False. //
|
|
//***************************************************************************//
|
|
proc HasObjectParameters(MOperation as OPERATION)
|
|
loop (OPERATION -> OpPara as PARAMETER)
|
|
if ([PARAMETER.type] == "Object")
|
|
return "True";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy osztályról, hogy vannak-e műveletei, vagy sem. //
|
|
// //
|
|
// True, ha van legalább egy; egyébként False. //
|
|
//***************************************************************************//
|
|
proc HasOperations(MClass as ENTITY)
|
|
local package;
|
|
loop (ENTITY -> MOperation as OPERATION)
|
|
[package] = getStereotype([OPERATION]);
|
|
if (IsPackageAllowed([package]) == "True")
|
|
return "True";
|
|
end if
|
|
end loop
|
|
return "False";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy kötelezően kitöltött-e vagy sem. //
|
|
// //
|
|
// True, ha kötelezően kitöltött; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsAttributeRequired(MAttribute)
|
|
loop (MAttribute -> TaggedValue where toLower([TaggedValue.tag]) == "required")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return _True();
|
|
else
|
|
return _False();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy stringattributumról, hogy unicode-e . //
|
|
// //
|
|
// False, ha nem; egyébként True. //
|
|
//***************************************************************************//
|
|
proc IsAttributeUnicode(MAttribute)
|
|
if (toLower([MAttribute.type]) == "string")
|
|
loop (MAttribute -> TaggedValue where toLower([TaggedValue.tag]) == "unicode")
|
|
if (toLower([TaggedValue.value]) == "false")
|
|
return "false";
|
|
else
|
|
return "true";
|
|
end if
|
|
end loop
|
|
return "true";
|
|
end if
|
|
return "";
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy attribútumról, hogy túl nagy hosszúság esetén kell-e vágni //
|
|
// Ha false akkor exception túl nagy hossz esetén //
|
|
// True, ha igen; egyébként False. //
|
|
//***************************************************************************//
|
|
proc IsAttributeTruncateable(MAttribute)
|
|
loop (MAttribute -> TaggedValue where toLower([TaggedValue.tag]) == "truncateable")
|
|
if (toLower([TaggedValue.value]) == "true")
|
|
return _True();
|
|
else
|
|
return _False();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
//***************************************************************************//
|
|
// Megjegyzés? //
|
|
// //
|
|
// VALÓSZÍNŰLEG MÁR ELAVULT, ÉS NEM HASZNÁLT! //
|
|
//***************************************************************************//
|
|
proc SDA_GetTaggedValueOfType(typeName, taggedvalue)
|
|
loop (Instances -> MClass Where toLower([MClass.name]) == toLower([typeName]) )
|
|
loop (MClass -> TaggedValue Where toLower([TaggedValue.tag]) == toLower([taggedvalue]))
|
|
return [TaggedValue.value];
|
|
end loop
|
|
end loop
|
|
|
|
switch (ToLower([typeName]))
|
|
case "char": return "1";
|
|
case "boolean": return "1";
|
|
case "dictionaryitem": return SDA_GetTaggedValueOfType("ID", "length");
|
|
end switch
|
|
return "";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy osztályról, hogy szerepel-e asszociációban, mint //
|
|
// asszociációs osztály. //
|
|
// //
|
|
// true, ha az osztály psszociációs osztály; egyébként false. //
|
|
//***************************************************************************//
|
|
proc IsAssociationClass(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" ))
|
|
return "true";
|
|
end loop
|
|
end loop
|
|
return "false";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Megmondja, hogy egy típus az adatbázisbázisban lehet-e üres. //
|
|
// //
|
|
// VALÓSZÍNŰLEG MÁR ELAVULT, ÉS NEM HASZNÁLT! //
|
|
//***************************************************************************//
|
|
proc IsTypeNullable(type)
|
|
// info = "\n IsTypeNullable() elavult...\n";
|
|
switch (ToLower([type]))
|
|
case "string": return "true";
|
|
case "dictionaryitem": return "true";
|
|
case "binary": return "true";
|
|
case "datetime": return "true";
|
|
end switch
|
|
return "false";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszadja egy attribútum hosszát. //
|
|
//***************************************************************************//
|
|
proc GetAttributeLength(MAttribute)
|
|
if ([MAttribute.type] == "LongString")
|
|
return "2147483647"; // Ez itt kettőaharmicegyedikenmínuszegy...
|
|
end if
|
|
local taggedvalue = "";
|
|
loop (MAttribute -> TaggedValue Where toLower([TaggedValue.tag]) == "length")
|
|
[taggedvalue] = [TaggedValue.value];
|
|
end loop
|
|
|
|
if ([taggedvalue] != "" )
|
|
return [taggedvalue];
|
|
else
|
|
return SDA_GetTaggedValueOfType([MAttribute.type], "length");
|
|
end if
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Megnöveli eggyel a paraméterként kapott változó értékét. //
|
|
//***************************************************************************//
|
|
tcl_proc incr(val)
|
|
return incr $val
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszadja egy osztály az ősosztályának a nevét. Ha nincs definiálva, //
|
|
// az elapértelmezettel tér vissza. //
|
|
//***************************************************************************//
|
|
proc GetBaseClassName(MClass, defaultname)
|
|
local bcl;
|
|
[bcl] = "";
|
|
loop(MClass -> SuperClass)
|
|
[bcl] = [SuperClass.name];
|
|
break;
|
|
end loop
|
|
if ([bcl] == "")
|
|
[bcl] = [defaultname];
|
|
end if
|
|
return [bcl];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja egy osztály ősosztályának ősosztályának nevét. Ha nincs ilyen //
|
|
// az UML-ben definiálva, akkor a megadott alapértelmezett értékkel tér //
|
|
// vissza. //
|
|
//***************************************************************************//
|
|
proc GetBaseBaseClassName(MClass, defaultname)
|
|
local bcl;
|
|
[bcl] = "";
|
|
loop(MClass -> SuperClass as baseclass)
|
|
loop (baseclass -> SuperClass)
|
|
[bcl] = [SuperClass.name];
|
|
break;
|
|
end loop
|
|
end loop
|
|
if ([bcl] == "")
|
|
[bcl] = [defaultname];
|
|
end if
|
|
return [bcl];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// A kimenetre generál, olyan commandline utasítást amlye az editort a //
|
|
// parameterkent kapott azonosító alapján a megfelelő diagramra navigálja //
|
|
//***************************************************************************//
|
|
proc GenerateEditorNavigation(ModelElementGuid)
|
|
out = "stpem.exe -ed stp -p " [stpreposdir] " -s " [stpprojname] " -C \"EditorQrlEval RTM_Navigate(\\\"" [ModelElementGuid]"\\\"); \n";
|
|
out = "pause\n";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// A parameterként kapott tokensetet végig nézi, és ha nem találja meg benne //
|
|
// a paraméterként kapott erteket, akkor beleteszi. //
|
|
//***************************************************************************//
|
|
proc AddDistinctValueToTokenSet(tokenset, value)
|
|
// belső változó, hogy figyeljem a
|
|
// tokensetben benne van-e már az elem
|
|
local IsInSet = _False();
|
|
|
|
// végig nézem, hogy az elem benne van-e a tokensetben
|
|
loop(Instances -> TokenSet([tokenset]) )
|
|
if ( [TokenSet.line] == [value] )
|
|
[IsInSet] = _True();
|
|
end if
|
|
end loop
|
|
// ha nem volt benne, akkor belerekom.
|
|
if ( [IsInSet] == _False() )
|
|
[tokenset] = [tokenset] [value] "\n";
|
|
end if
|
|
|
|
return [tokenset];
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// A paraméterként kapott tokensetben keresi a paraméterként kapott elemet. //
|
|
// Ha megtalálja igaz, ha nem találja hamis értékkel tér vissza. //
|
|
//***************************************************************************//
|
|
proc IsElementInTokenset(tokenset, element)
|
|
loop(Instances -> TokenSet([tokenset]))
|
|
if ( [TokenSet.line] == [element] )
|
|
return _True();
|
|
end if
|
|
end loop
|
|
return _False();
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Hamis értéket ad vissza, ezt a függvényt érdemes használni, egységesíti //
|
|
// a logikai hamis érték ábrázolását, eliminálja a gépelési hibát, mert //
|
|
// szintaktikai ellenőrzést visz a rendszerbe! //
|
|
//***************************************************************************//
|
|
proc _False()
|
|
return "false";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Igaz értéket ad vissza, ezt a függvényt érdemes használni, egységesíti //
|
|
// a logikai igaz érték ábrázolását, eliminálja a gépelési hibát, mert //
|
|
// szintaktikai ellenőrzést visz a rendszerbe! //
|
|
//***************************************************************************//
|
|
proc _True()
|
|
return "true";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Név és típus alapján elkészíti az XML sztinggé alakítást. //
|
|
//***************************************************************************//
|
|
proc GenerateEntityWrapperSaveToXMLExpression(ADAPTERNAME, ATTRIBUTENAME, ATTRIBUTETYPE, VALUE, DICTIONARYITEMTYPE)
|
|
switch (ToLower([ATTRIBUTETYPE]))
|
|
case "integer": return [ADAPTERNAME] ".WriteIntegerField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "string": return [ADAPTERNAME] ".WriteStringField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "datetime": return [ADAPTERNAME] ".WriteDateTimeField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "boolean": return [ADAPTERNAME] ".WriteBooleanField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "char": return [ADAPTERNAME] ".WriteCharField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "double": return [ADAPTERNAME] ".WriteDoubleField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "float": return [ADAPTERNAME] ".WriteFloatField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "id": return [ADAPTERNAME] ".WriteIDField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "dictionaryitem": return [ADAPTERNAME] ".WriteDictionaryItemField(\"" [ATTRIBUTENAME] "\", " [VALUE] ", \"" [DICTIONARYITEMTYPE] "\");";
|
|
case "binary": return [ADAPTERNAME] ".WriteBinaryField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "associationid": return [ADAPTERNAME] ".WriteAssociationID(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "associationname": return [ADAPTERNAME] ".WriteAssociationName(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "longstring": return [ADAPTERNAME] ".WriteLongStringField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
end switch
|
|
return "/* ERROR Ismeretlen típus: " [ATTRIBUTETYPE] " */";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Legenerálja azt a kódtöredéket, ami elvégzi a DirectXML-es XML sztinggé //
|
|
// alakítást. //
|
|
//***************************************************************************//
|
|
proc GenerateDirectXMLSaveToXMLExpression(ADAPTERNAME, ATTRIBUTENAME, ATTRIBUTETYPE, VALUE, DICTIONARYITEMTYPE)
|
|
switch (ToLower([ATTRIBUTETYPE]))
|
|
case "integer": return [ADAPTERNAME] ".WriteIntegerField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "string": return [ADAPTERNAME] ".WriteStringField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "datetime": return [ADAPTERNAME] ".WriteDateTimeField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "boolean": return [ADAPTERNAME] ".WriteBooleanField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "char": return [ADAPTERNAME] ".WriteCharField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "double": return [ADAPTERNAME] ".WriteDoubleField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "float": return [ADAPTERNAME] ".WriteFloatField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "id": return [ADAPTERNAME] ".WriteIDField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "dictionaryitem": return [ADAPTERNAME] ".WriteDictionaryItemField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++), \"" [DICTIONARYITEMTYPE] "\");";
|
|
case "binary": return [ADAPTERNAME] ".WriteBinaryField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "associationid": return [ADAPTERNAME] ".WriteAssociationID(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "associationname": return [ADAPTERNAME] ".WriteAssociationName(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
case "longstring": return [ADAPTERNAME] ".WriteLongStringField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++));";
|
|
|
|
/*
|
|
case "integer": return [ADAPTERNAME] ".WriteIntegerField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "string": return [ADAPTERNAME] ".WriteStringField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "datetime": return [ADAPTERNAME] ".WriteDateTimeField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "boolean": return [ADAPTERNAME] ".WriteBooleanField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "char": return [ADAPTERNAME] ".WriteCharField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "double": return [ADAPTERNAME] ".WriteDoubleField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "float": return [ADAPTERNAME] ".WriteFloatField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "id": return [ADAPTERNAME] ".WriteIDField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "dictionaryitem": return [ADAPTERNAME] ".WriteDictionaryItemField(\"" [ATTRIBUTENAME] "\", " [VALUE] ", \"" [DICTIONARYITEMTYPE] "\");";
|
|
case "binary": return [ADAPTERNAME] ".WriteBinaryField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "associationid": return [ADAPTERNAME] ".WriteAssociationID(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "associationname": return [ADAPTERNAME] ".WriteAssociationName(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
|
|
case "integer": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteIntegerField(\"" [ATTRIBUTENAME] "\", reader.GetDecimal(counter++)); } else { " [ADAPTERNAME] ".WriteIntegerField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "string": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteStringField(\"" [ATTRIBUTENAME] "\", reader.GetString(counter++)); } else { " [ADAPTERNAME] ".WriteStringField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "datetime": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteDateTimeField(\"" [ATTRIBUTENAME] "\", reader.GetDateTime(counter++)); } else { " [ADAPTERNAME] ".WriteDateTimeField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "boolean": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteBooleanField(\"" [ATTRIBUTENAME] "\", reader.GetString(counter++)); } else { " [ADAPTERNAME] ".WriteBooleanField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "char": return [ADAPTERNAME] ".WriteCharField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "double": return [ADAPTERNAME] ".WriteDoubleField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "float": return [ADAPTERNAME] ".WriteFloatField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "id": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteIDField(\"" [ATTRIBUTENAME] "\", reader.GetDecimal(counter++)); } else { " [ADAPTERNAME] ".WriteIDField(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "dictionaryitem": return [ADAPTERNAME] ".WriteDictionaryItemField(\"" [ATTRIBUTENAME] "\", " [VALUE] ", \"" [DICTIONARYITEMTYPE] "\");";
|
|
case "binary": return [ADAPTERNAME] ".WriteBinaryField(\"" [ATTRIBUTENAME] "\", " [VALUE] ");";
|
|
case "associationid": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteAssociationID(\"" [ATTRIBUTENAME] "\", reader.GetDecimal(counter++)); } else { " [ADAPTERNAME] ".WriteAssociationID(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
case "associationname": return "if (reader.IsDBNull(counter) == false) { " [ADAPTERNAME] ".WriteAssociationName(\"" [ATTRIBUTENAME] "\", reader.GetString(counter++)); } else { " [ADAPTERNAME] ".WriteAssociationName(\"" [ATTRIBUTENAME] "\", reader.GetValue(counter++)); }";
|
|
*/
|
|
end switch
|
|
return "/* ERROR Ismeretlen típus: " [ATTRIBUTETYPE] " */";
|
|
end proc
|
|
|
|
|
|
//***************************************************************************//
|
|
// Visszaadja, hogy egy attribútum kicsinek tekintendő, vagy sem. Akkor //
|
|
// tekintendő egy attribútum kicsinek, ha a hossza biztosan kisebb, mint //
|
|
// 200 bájt. (karakterlánc esetén 200 karakter) //
|
|
// //
|
|
// true, ha kicsinek tekintendő; egyébként false. //
|
|
//***************************************************************************//
|
|
proc IsAttributeSmall(MAttribute as ATTRIBUTE)
|
|
if ([ATTRIBUTE.type] == "Binary")
|
|
return "false";
|
|
end if
|
|
if ([ATTRIBUTE.type] == "String")
|
|
if (GetAttributeLength([ATTRIBUTE]) > 200)
|
|
return "false";
|
|
else
|
|
return "true";
|
|
end if
|
|
end if
|
|
return "true";
|
|
end proc
|
|
|
|
|