ARCHIV

LICENČNÍ PODMÍNKY

Copyright [2019] [Syntea software group a.s.]

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS,  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

– Opravena zpětná kompatibilita deklarace typu s verzi X-definic 2.0 (klíčové slovo “parse:”).
– Opravena chyba v situaci, kdy za chybějícím elementem následuji nepovinné elementy, které v datech také nejsou.

– Do interface XMData přidána metoda getRefTypeName(), která vrátí jméno deklarovaného typu (pokud byl na něj odkaz, nebo null).
– V interface XMData byla zrušena metoda getEnumerationValues(), kterou pokud vím nikdo nepoužíval (pokud ano, pak ji tam vrátim).
– Deklarace maker nyní může být (a doporučujeme, aby byla) uvedena v sekci xd:declaration. Viditelnost (scope) takto deklarovaných maker závisí na parametru v atributu xd:scope (muze byt “local” nebo “global”;
global je default hodnota). Přiklad:
<xd:declaration xd:scope=”local” >
<xd:macro xd:name=”xyz”> options moreattributes <xd:macro>
… /*zde muzou nasledovat deklarace promennych a metod jako obvykle */
</xd:declaration>
Platnost makra je v rámci celé X-definice nebo v případě global v rámci vsech X-definic přeložených do jednoho XDPool.
– Opravena chyba při určité kombinaci parametru metody XDFactory.compileXD(…).
– V X-komponentách a registrovaných tabulkách reportu se nyní generuje konec řádky v závislosti na platformě systému (t.j. pro Windows CR LF a pro Unix jen LF).

– Opravena chyba  ve třídě XDGenCollection.
– Opraven NullpointerException v UniqueSet (pokud je hodnota položky null).

– interface cz.syntea.xdef.xml.KXmlConstants je nyní deprecated a hodnoty jsou přesunuty do cz.syntea.xdef.XDConstants.
– do X-skriptu jsou nad objekty type uniqueSet doplneny metody: toContainer() z mapy klíčů vrátí vytvořený objekt Container size() z mapy klíčů vrátí počet položek

– doplněna validační metoda “xdType”, která zkontroluje, zda příslušná hodnota je validní specifikace některého z předdeklarovaných typů X-definic. Jako výsledek je uložen do parsovaného výsledku objekt, odpovídajicí příslušnému parseru.

– do cz.syntea.xdef.XDFactory jsou doplněny statické metody: XDBuilder getXDBuilder(Properties props, ReportWriter reporter)(tedy je možné k builderu připojit reporter).

XDPool compileXD(ReportWriter reporter, Properties props, Object… params) Opět je možné přidat reporter a v tomto případě překlad při chybách nekončí výjimkou, ale vráti reporter s chybami. Tedy např.:

ArrayReporter ar = new ArrayReporter();
Properties props = new Properties();
XDPool xp = XDFactory(ar, props, xdefs) //  jsou source data X-definic
if (ar.errorWarnings()) {
// chyby v X-definicích …
}

– Rozšířen zápis typu “uniqueSet” o možnost deklarace proměnných připojených ke klíči (viz BNF pravidlo “UniqueSetVar”):
UniqueSetDeclaration ::= “uniqueSet” S Identifier S? UniqueSetDeclarationBody
UniqueSetDeclarationBody ::=
(“{” UniqueSetItem (S?”;” UniqueSetItem)* (S?”;”S?)? S? “}”) | Method
/* The method must be a parser. */
UniqueSetItem ::= S? (UniqueSetVar | UniqueSetKey)
UniqueSetKey ::= S? Identifier (S?”:”S? ((“?” | “optional”) S? )? Method )?
/* The method must be a parser. */
UniqueSetVar ::= S? “var” S TypeIdentifier S Identifier
(S? “,” S? TypeIdentifier S Identifier)*
Příklad:
<xd:declaration> uniqueSet u {a: string(); var Parser x} </xd:declaration>

<def Name=’u.a.ID();’ Type=’xdType(); onTrue u.x=getParsedValue();’ />

<Param Name=’u.a.CHKID();’ Value=’u.x; ‘/>

– v X-komponentách se nyní generuje hodnota typu “int” místo původního Java typu “Long” jako “Integer”.

– byla přidána utilita cz.syntea.xdef.util.GUIEditor, která umožňuje editovata debugovat projekty s X-definicemi.

– atributy se zpracovávají podle pořadi jak jsou deklarovány v X-definici.

– do třídy cz.syntea.xdef.sys.BFFGrammar přidána metoda trace(PrintStream out) je-li parametr out ruzny od null, trace informace se tiskne, je-li null trace informace se negeneruje. Metoda usnadnuje ladeni BNF gramatiky.

– do skriptu přidána metoda “getTextContent()”, která vrátí spojený string z textových uzlů aktuálniho elementu a všech potomků.

 

– Soubory se zdrojovými Java programy jsou nyní v kódu UTF-8.

– ZDROJOVÉ KÓDY SOUČASTÍ JARU.
– proprietární implementace parseru XML byla nahrazena SAX parserem a builderem z knihovny javax. Z tohoto důvodu byly v balíčku cz.syntea.xdef.xml zrušeny třidy:
KXmlParser
KDOMParser
KReaderParams
KXmlContentHandler
– třída GenDTD2XDEF byla přesuta do balícku cz.syntea.xdef.util
– třída StreamParser byla v balíčku cz.syntea.xdef.sys zrušena, funkce StringParseru byla rozšířena o možnost parsovat stream.
– do properties byla doplněna položka “xdef.locationsdetails” (hodnoty “true” nebo “false”, viz XDConstants XDPROPERTY_LOCATIONDETAILS). Pokud je položka nastavena na hodnotu “true”, pak se při hlášení chyb v průběhu zpracování vstupního dokumentu doplní přesné údaje o pozici atributu ve vstupním XML dokumentu. Zpracování je však trochu pomalejší. Jinak se uvede pouze poloha příslušného XML elementu. Defaultni nastavení je “false”. Pokud je nastaven tento parametr při překladu X-definic, je tato hodnota použita při zpracování dat.
– do XDPool byla doplněna metoda, která vrátí hodnotu nastavenou v XDPool: boolean isLocationsdetails()
– implementovaná metoda “pushParsedObject” v BGF gramatice byla přejmenována na “push” a pokud nemá parametr, uloží do vnitřního stacku string, parsovaný  přislušným pravidlem, jinak se uloži hodnota z parametru. Metoda PushParsedString byla zrušena, je nahrazena netodou “push” bez parametru.
– implementovaná metoda “popParsedObject” v BGF gramatice byla přejmenována na “pop”.

– opravena chyba v X-komponentě, která používá X-definici s option”moreAttributes”

– doplněno nastavení property “xdef.ignoreunresovedentities”  na “true” nebo “false”. Defaultní hodnota je “false” – viz XDConstants:
XDPROPERTY_IGNOREUNRESOLVEDENTITIES
XDPROPERTYVALUE_IGNOREUNRESOLVEDENTITIES_FALSE
XDPROPERTYVALUE_IGNOREUNRESOLVEDENTITIES_TRUE
– pokud je “true”, pak jsou v DTD odkazy na neexistující soubor ignorovány
– metody:
setResolveIncludes(boolean x)
setDisplayMode(byte mode)
setMinYear(int x);
setMaxYear(int x);
setSpecialDates(SDatetime[] x);
narušovaly reentrantnost objektu XDPool a byly proto odstraněny, příslušné  parametry je nutné nastavit pomocí properties

– opravena chyba v hlášení některých chyb např. pokud X-definice běží pod servletem

– opravena chyba metody getCounter() v sekci “match”
– doplněna chybějící podpora některých neobvyklých znakových tabulek

– opraveno v některých případech nesprávné hlášení chyby XDEF235 (Nejednoznačná X-definice)

– ve Skriptu X-definic je doplněn typ hodnoty “Locale”, hodnotu je možné vytvořit ve skriptu pomocí nasledujicích konstruktorů:
new Locale(language) nebo,
new Locale(language, country) nebo,
new Locale(language, country, variant), kde language jsou dvě malá písmena odpovídajicí ISO-639, country jsou dvě velká písmena odpovídajicí ISO-3166, variant je string se specifickým kódem podle poskytovatele Java knihoven
– do Skriptu X-definic jsou doplněny metody:
format(mask, v1, …) vytvoří string z argumentu v1, … podle dane masky,
format(local, mask, v1, …) vytvoří string z argumentu v1, … podle dané masky a podle specific geographical, political or cultural region in the parameter local (typ Locale)
printf(mask, v1,…) vytiskne na standardni vystup string vytvoreny z argumentu v1, … podle dané masky
printf(local, mask, v1,…) vytiskne na standardni vystup string vytvoreny z argumentu v1, … podle dané masky
printf(Output, mask, v1,…) vytiskne na stream Output string vytvořený z argumentu v1, … podle dané masky
printf(Output, local, mask, v1,…) vytiskne na stream Output string vytvořený z argumentu v1, … podle dané masky
Output.printf(mask, v1,…) vytiskne na stream Output string vytvořený z argumentu v1, … podle dané masky
Output.printf(local, mask, v1,…) vytiskne na stream Output string vytvořený z argumentu v1, … podle dané masky

– opravena chyba NullPoinerException v některých případech ve Skriptu v metodě Parseru check(x), pokud byla volaná s hodnotou v parametru
– opravená chyba, když typ a parsovací methoda na niž validačni typ odkazuje do deklarační sekce, která je specifikována až po odkazu

– opravena chyba NullPoinerException v některých případech ve Skriptu v metodě Parseru check(x), pokud byla volaná s hodnotou v parametru
– opravená chyba, když typ a parsovací methoda na niž validačni typ odkazuje do deklarační sekce, která je specifikována až po odkazu

– opravena chyba v konstrukčním režimu v některých připadech při kostrukci z Containeru

– provedena refaktorace package:
cz.syntea.common.msg -> cz.syntea.xdef.msg
cz.syntea.common.sys -> cz.syntea.xdef.sys
cz.syntea.common.xml -> cz.syntea.xdef.xml
– opravena chyba v přikazu Skriptu “external method”, pokud je typ výsledku specifikován jako “cz.syntea.xdef.xx” (xx je typ hodnoty), nebo pokud je typ deklarován jako XDContainer
– opravena chyba v cz.syntea.common.sys.SManager při čtení externích souborů s jazykovou mutací reportu
– pomocí metod setProperty nebo setProperties třidy XDDocument je nyní možné nastavit externí soubory s jazykovými mutacemi a výchozí jazyk reportu

– provedena refaktorace package:
cz.syntea.common.msg -> cz.syntea.xdef.msg
cz.syntea.common.sys -> cz.syntea.xdef.sys
cz.syntea.common.xml -> cz.syntea.xdef.xml
– opravena chyba v přikazu Skriptu “external method”, pokud je typ výsledku specifikován jako “cz.syntea.xdef.xx” (xx je typ hodnoty), nebo pokud je typ deklarován jako XDContainer
– opravena chyba v cz.syntea.common.sys.SManager při čtení externích souborů s jazykovou mutací reportu
– pomocí metod setProperty nebo setProperties třidy XDDocument je nyní možné nastavit externí soubory s jazykovými mutacemi a výchozí jazyk reportu

– přechod na X-definice verze 3.1 z verze 2.0