kreta/Tools/CodeGeneration/Templates/Common/CommonUtil.tdl
2024-03-13 00:33:46 +01:00

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