Kod źródłowy Wiki TQL - Tritius Query Language

Ostatnio modyfikowane 2025/11/19 14:47 przez Jan Slezák

Ukryj ostatnich autorów
Martin Mahr 3.1 1 = Informacje ogólne =
Jan Šimeček 1.1 2
Martin Mahr 3.1 3 Jest to własny język Tritia, który umożliwia transformację do języka **Java **i **SQL**.
Jan Šimeček 1.1 4
Martin Mahr 3.1 5 * można zastosować następujące metody
6 ** patrz [[TQL – metody (funkcje)>>doc:.TQL-metody-funkce.WebHome]] ([[definicja interfejsu>>https://gitlab.tritius.cz/tr/tritius/-/blob/master/project/tritius-query-language/src/main/java/cz/tritius/tql/EvaluatingMethods.java]])
7 ** częścią definicji jest typ zwracany, który wskazuje, w jaki sposób można przeprowadzić porównanie
8 * nie wszystkie warunki można przekształcić na Java lub SQL
9 ** zdecydowana większość (ponad 90%) warunków może być stosowana w obu językach
10 ** na SQL można przekształcić wszystkie warunki, które nie zwracają wartości NULL – patrz TQL – atrybuty (kod źródłowy)
11 * podczas zapisywania obiektu przeprowadzana jest walidacja, czy w danym przypadku można zastosować warunek
12 * składnia języka jest najbardziej zbliżona do SQL, ale jest nieco uproszczona i uzupełniona o operatory skracające zapis
13 * **nazwy atrybutów** i funkcji są zawsze wrażliwe „**case-sensitive**” (zależy od wielkości liter)
14 ** w nazwach atrybutów bez parametrów nie stosuje się nawiasów
15 *
Jan Šimeček 1.1 16
17 {{{String workTypeName()}}}
Jan Šimeček 2.1 18
19 *
20 **
Martin Mahr 3.1 21 *** przykład:
Jan Šimeček 2.1 22 ***
Jan Šimeček 1.1 23
24 {{{workTypeName = 'KN'}}}
Jan Šimeček 2.1 25
26 *
Martin Mahr 3.1 27 ** w nazwach metod (z parametrami) należy stosować nawiasy
Jan Šimeček 2.1 28 ***
Jan Šimeček 1.1 29
30 {{{boolean workHasSubfieldValueInSubfieldIds(String value, Integer... ids);}}}
Jan Šimeček 2.1 31
32 *
33 **
Martin Mahr 3.1 34 *** przykład:
Jan Šimeček 2.1 35 ***
Jan Šimeček 1.1 36
37 {{{workHasSubfieldValueInSubfieldIds('drt', -286200, -127000)}}}
Jan Šimeček 2.1 38
Martin Mahr 3.1 39 * własne **wyrażenia języka** (IN, LIKE, IS, NOT, NULL, AND, OR, ...) są „**case-insensitive**” (nie rozróżniają wielkości liter)
Jan Šimeček 1.1 40
Martin Mahr 3.1 41 = Przykłady warunków =
Jan Šimeček 1.1 42
Martin Mahr 3.1 43 == Porównanie wartości logicznych ==
Jan Šimeček 1.1 44
Martin Mahr 3.1 45 Zawsze stosuje się true/false.
Jan Šimeček 1.1 46
Jan Šimeček 2.1 47 |
Jan Šimeček 1.1 48
49 {{{itemActive = true
50 itemActive = false}}}
51
Martin Mahr 3.1 52 == Operator LIKE ==
Jan Šimeček 1.1 53
Martin Mahr 3.1 54 * Ten operator nie jest używany, zamiast niego stosuje się trzy operatory:
Jan Šimeček 1.1 55 ** STARTS
56 ** ENDS
57 ** CONTAINS
Martin Mahr 3.1 58 * można użyć operatora NOT jako negacji wyrażenia
59 * dla następującego typu dokumentu „**książka**” wyrażenia zwracają TRUE
Jan Šimeček 1.1 60
Jan Šimeček 2.1 61 |
Jan Šimeček 1.1 62
63 {{{workTypeName CONTAINS 'kniha'
64 workTypeName STARTS 'kn'
65 workTypeName STARTS 'kniha'
66 workTypeName ENDS 'ha'
67 workTypeName ENDS 'kniha'
68
69 workTypeName NOT CONTAINS 'sešit'
70 workTypeName NOT STARTS 'se'
71 workTypeName NOT ENDS 'it'}}}
72
Martin Mahr 3.1 73 == Operator LIKE IN ==
Jan Šimeček 1.1 74
Martin Mahr 3.1 75 * rozszerza operator LIKE o wyrażenie IN, aby skrócić zapis długich warunków
76 * dla następującego typu dokumentu „**książka**” wyrażenia zwracają TRUE
77
Jan Šimeček 1.1 78
Jan Šimeček 2.1 79 |
Jan Šimeček 1.1 80
81 {{{workTypeName CONTAINS IN ('kniha', 'PE')
82 workTypeName CONTAINS IN ('ni', 'PE')
83 workTypeName STARTS IN ('kniha', 'PE')
84 workTypeName STARTS IN ('kni', 'PE')
85 workTypeName ENDS IN ('ha', 'PE')
86 workTypeName ENDS IN ('kniha', 'PE')
87
88 workTypeName NOT CONTAINS IN ('článek', 'PE')
89 workTypeName NOT STARTS IN ('čl', 'PE')
90 workTypeName NOT ENDS IN ('ek', 'PE')}}}
91
Martin Mahr 3.1 92 == Operator IN ==
Jan Šimeček 1.1 93
Martin Mahr 3.1 94 * można stosować dla wartości łańcuchowych i liczbowych
95 * można stosować operator NOT jako negację wyrażenia
Jan Šimeček 1.1 96
Jan Šimeček 2.1 97 |
Jan Šimeček 1.1 98
99 {{{workTypeId IN (10, 11, 12)
100 workTypeId NOT IN (10, 11, 12)
101
102 workTypeName IN ('AN', 'BR')
103 workTypeName NOT IN ('AN', 'BR')}}}
104
Martin Mahr 3.1 105 == Operator BETWEEN ==
Jan Šimeček 1.1 106
Martin Mahr 3.1 107 * można stosować dla wartości liczbowych i dat
108 * do oceny wyrażenia stosuje się <= i >=
109 ** dla identyfikatora typu dokumentu: 10, 11, 12 zwraca TRUE
Jan Šimeček 1.1 110
Jan Šimeček 2.1 111 |
Jan Šimeček 1.1 112
113 {{{workTypeId BETWEEN (10, 12)
114 currentDate BETWEEN ('18.08.2019', '20.08.2019')}}}
115
Martin Mahr 3.1 116 == Kontrole na NULL ==
Jan Šimeček 1.1 117
Martin Mahr 3.1 118 * język nie ma nic przeciwko sytuacji, w której wyrażenie ma wartość NULL (wyrażenie jest oceniane jako FALSE) – sprawdzanie wartości NULL nie jest konieczne
119 * mimo że język jest bezpieczny w przypadku wartości NULL, czasami konieczne jest sprawdzenie wartości NULL (szczególnie w przypadku użycia operatora OR)
120 * można użyć operatora NOT jako negacji wyrażenia
Jan Šimeček 1.1 121
Jan Šimeček 2.1 122 |
Jan Šimeček 1.1 123
124 {{{itemLocationName = 'Moje lokace'
125 itemLocationName IS NULL
126 itemLocationName IS NOT NULL
127 itemLocationName IS NULL OR itemLocationName = 'Moje lokace'
128 itemBorrowCategoryExternalId IS NULL OR itemBorrowCategoryExternalId != 'N'}}}
129
Martin Mahr 3.1 130 == Wyrażenia porównawcze ==
Jan Šimeček 1.1 131
Martin Mahr 3.1 132 * można używać wyrażeń:
Jan Šimeček 1.1 133 ** =
134 ** !=
135 ** <>
136 ** <
137 ** >
138 ** <=
139 ** >=
Martin Mahr 3.1 140 * funkcja po lewej stronie wyrażenia
Jan Šimeček 1.1 141 ** LENGTH()
142 ** UPPER()
143 ** LOWER()
Martin Mahr 3.1 144 * funkcja po prawej stronie wyrażenia
Jan Šimeček 1.1 145 ** nowAddMonths()
146
Jan Šimeček 2.1 147 |
Jan Šimeček 1.1 148
149 {{{workTypeId = 1
150 workTypeId > 1
151 workTypeId >= 1
152 workTypeId <> 1
153
154 LENGTH(userLastname) > 10
155
156 UPPER(userLastname) = 'NOVÁK'
157
158 LOWER(userLastname) = 'novák'
159
160 workDateCreated > nowAddMonths(-3)}}}
161
Martin Mahr 3.1 162 == Własne funkcje ==
Jan Šimeček 1.1 163
Martin Mahr 3.1 164 * wynikiem wywołania tych funkcji jest zawsze TRUE lub FALSE
Jan Šimeček 1.1 165
Jan Šimeček 2.1 166 |
Jan Šimeček 1.1 167
168 {{{workHasSubfieldValueInSubfieldIds('drt', -286200, -127000)
169 workHasSubfieldValueInSubfieldIds('drt', -286200, -127000) AND workTypeId = -1
170
171 userElectronicBorrowingsCount(10, -3) >= 2}}}
172
173