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.

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

– 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”

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

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

– 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