TQL - Tritius Query Language
Last modified by Martin Mahr on 2024/10/21 22:21
Obecné informace
Jedná se o vlastní jazyk Tritia, který umožňuje transformace na jazyk Java a SQL.
- lze použít následující metody
- viz TQL - metody (funkce) (definice rozhraní)
- součástí definice je návratový typ, který indikuje, jak je možné provádět porovnání
- ne všechny podmínky lze transformovat na Java nebo SQL
- valná většina (přes 90%) podmínek lze použít v obou jazycích
- na SQL lze transformovat všechny podmínky, které nevrací NULL - viz. TQL - atributy (zdrojový kód)
- při ukládání objektu se provádí validace, zda je možné podmínku v tomto případě použít
- syntaxe jazyka je nejvíce podobná SQL, ale je trochu polidštěna a doplněna o operátory zkracující zápis
- názvy atributů a funkcí jsou vždy case-sensitive (záleží na velikosti písmen)
- u názvů atributů bez parametrů se nepoužívají závorky
- u názvů atributů bez parametrů se nepoužívají závorky
String workTypeName()
-
-
- příklad:
-
workTypeName = 'KN'
-
- u názvů metod (s parametry) se závorky musí používat
- u názvů metod (s parametry) se závorky musí používat
boolean workHasSubfieldValueInSubfieldIds(String value, Integer... ids);
-
-
- příklad:
-
workHasSubfieldValueInSubfieldIds('drt', -286200, -127000)
- vlastní výrazy jazyka (IN, LIKE, IS, NOT, NULL, AND, OR, ...) jsou case-insensitive (nezáleží na velikosti písmen)
Příklady podmínek
Porovnávání logických hodnot
Vždy se používá true/false
itemActive = true itemActive = false
Operátor LIKE
- Tento operátor se nepoužívá, místo něj se používají tři operátory:
- STARTS
- ENDS
- CONTAINS
- lze použít operátor NOT jako negaci výrazu
- pro následující typ dokumentu 'kniha' výrazy vrací TRUE
workTypeName CONTAINS 'kniha' workTypeName STARTS 'kn' workTypeName STARTS 'kniha' workTypeName ENDS 'ha' workTypeName ENDS 'kniha' workTypeName NOT CONTAINS 'sešit' workTypeName NOT STARTS 'se' workTypeName NOT ENDS 'it'
Operátor LIKE IN
- rozšiřuje operátor LIKE o výraz IN, aby byl zkrácen zápis dlouhých podmínek
- pro následující typ dokumentu 'kniha' výrazy vrací TRUE
workTypeName CONTAINS IN ('kniha', 'PE') workTypeName CONTAINS IN ('ni', 'PE') workTypeName STARTS IN ('kniha', 'PE') workTypeName STARTS IN ('kni', 'PE') workTypeName ENDS IN ('ha', 'PE') workTypeName ENDS IN ('kniha', 'PE') workTypeName NOT CONTAINS IN ('článek', 'PE') workTypeName NOT STARTS IN ('čl', 'PE') workTypeName NOT ENDS IN ('ek', 'PE')
Operátor IN
- lze použít pro řetězcové i číselné hodnoty
- lze použít operátor NOT jako negaci výrazu
workTypeId IN (10, 11, 12) workTypeId NOT IN (10, 11, 12) workTypeName IN ('AN', 'BR') workTypeName NOT IN ('AN', 'BR')
Operátor BETWEEN
- lze použít pro číselné a datumové hodnoty
- pro vyhodnocení výrazu se používá <= a >=
- pro ID typu dokumentu: 10, 11, 12 vrací TRUE
workTypeId BETWEEN (10, 12) currentDate BETWEEN ('18.08.2019', '20.08.2019')
Kontroly na NULL
- jazyku nevadí ani případ, kdy je výraz NULL (výraz se vyhodnotí jako FALSE) - kontrola na NULL není třeba
- i když je jazyk bezpečný na NULL hodnoty, občas je třeba provést kontrolu na NULL hodnotu (zejména při použití operátoru OR)
- lze použít operátor NOT jako negaci výrazu
itemLocationName = 'Moje lokace' itemLocationName IS NULL itemLocationName IS NOT NULL itemLocationName IS NULL OR itemLocationName = 'Moje lokace' itemBorrowCategoryExternalId IS NULL OR itemBorrowCategoryExternalId != 'N'
Porovnávací výrazy
- lze použít výrazy:
- =
- !=
- <>
- <
- >
- <=
- >=
- funkce na levé straně výrazu
- LENGTH()
- UPPER()
- LOWER()
- funkce na pravé straně výrazu
- nowAddMonths()
workTypeId = 1 workTypeId > 1 workTypeId >= 1 workTypeId <> 1 LENGTH(userLastname) > 10 UPPER(userLastname) = 'NOVÁK' LOWER(userLastname) = 'novák' workDateCreated > nowAddMonths(-3)
Vlastní funkce
- výsledkem volání těchto funkcí je vždy TRUE nebo FALSE
workHasSubfieldValueInSubfieldIds('drt', -286200, -127000) workHasSubfieldValueInSubfieldIds('drt', -286200, -127000) AND workTypeId = -1 userElectronicBorrowingsCount(10, -3) >= 2