JPA/eclipse link/sequence/mapped superclass
Zdravim konferenciu patram uz 2 dni a aj po precitani kopy webov sa neviem dopatrat k vysledku. Urobil som si predka vsetkych entity tried, ma anotaciu @MappedSuperclass, atribut id s @Id a generovanim cez sekvenciu. Ako povedat, aby kazda entity trieda, ktora extenduje superclass, pouzial atribut id s base entity, ale s vlastnou sekvenciou. Podla mna sa to muselo riesit x-krat, pride mi to ako normalna vec, ale za ten svet neviem najst funkcy priklad. Nevie niekto, ako na to? Dakujem
Re: Validace XML souboru podle XSDcka
Title: Sign Dobrý den, řešil jsem stejný problém. XSD mám v resource, ale je možné použít i XSD z disku. Ostatní XSD leží ve stejné složce jako výchoz XSD. Java code: public static void validateXmlFile(File xmlFile) throws ParserConfigurationException, IOException, JAXBException, SAXException { //Building a Schema instance SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Source schemaFile = new StreamSource(new File(Validator.class.getResource("/xsd/mets.xsd").getPath())); Schema schema = schemaFactory.newSchema(schemaFile); //Creating a SAXParser for our input XML //First the factory final SAXParserFactory factory = SAXParserFactory.newInstance(); //Must be namespace aware to receive element names factory.setNamespaceAware(true); //Setting the Schema for validation factory.setSchema(schema); //Now the parser itself final SAXParser parser = factory.newSAXParser(); //Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); //Parsing parser.parse(xmlFile, handler); } V XSD mám: xsd:schema targetNamespace="http://www.loc.gov/METS/" xmlns="http://www.loc.gov/METS/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:nsesss="http://www.mvcr.cz/nsesss/v2" elementFormDefault="qualified" attributeFormDefault="unqualified" xsd:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd" / xsd:import namespace="http://www.mvcr.cz/nsesss/v2" schemaLocation="nsesss.xsd" / ... S pozdravem, Korecký Ing. Vladislav Korecký vedoucí týmu POR programátor - analytik GORDIC - tým POR (Portálová Řešení) GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava, Czech Republic TEL: +420 567 571 491 Dne 4. 2. 2013 14:01, Dušan Rychnovský napsal(a): Dobrý den, mám následující problém. Potřebuji ve své aplikaci validovat XML soubory oproti XSD schématu. Toto schéma je ale rozloženo do několika (cca 10ti) souborů propojených navzájem pomocí tagů include a import. Podle rad na internetu jsem sestavil níže uvedený kód (prototypu), který ovšem nefunguje dobře. Kontrolou logů vypisovaných na konzoli se zdá že řešení opravdu prochází tagy include/import (a to průchodem do hloubky), nicméně z neznámých důvodů občas některé z nich přeskočí. Dlouho jsem hledal rozdíly mezi tagy, které se úspěšně zpracují a těmi, které jsou přeskočeny. Nicméně na nic jsem nepřišel. V konkrétním případě například z těchto tří řádků se první a poslední úspěšně zpracují, zatímco prostřední je ignorován. Všechna schémata existují, jsou dostupná, validní (nicméně to by nemělo mít na chybu vliv, protože resolver vůbec nedostane za úkol tento import řešit). import namespace="schemas/src/x20130601" schemaLocation="../../x20130601/Personalnumber.xsd"/ import namespace="schemas/src/common/2008/01/03" schemaLocation="../../../contract/x20080103/Contractnumber.xsd"/ import namespace="schemas/src/20100504" schemaLocation="../../../system/x20100504/Contractidentification.xsd" / Díky tomu, že se některé importy nezpracují, pak dostávám výjimky tohoto charakteru: Exception in thread "main" org.xml.sax.SAXParseException; systemId: file:/z:/--- project path ---/schemas//x20130504/Identification.xsd; lineNumber: 18; columnNumber: 61; src-resolve: Cannot resolve the name 'dat20080103:Contractnumber' to a(n) 'element declaration' component. Deklarace chybějícího elementu se nachází v přeskočeném XSDčku. Prosím poraďte, kde hledat chybu, nebo alternativní řešení. Předem děkuji za pomoc, Dušan Rychnovský
Re: Validace XML souboru podle XSDcka
//Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); Mohl byste prosím přiložit i kód třídy MyContentHandler? Děkuji za pomoc Dušan Dne 4. února 2013 15:36 Vladislav Korecký vladislav_kore...@gordic.cznapsal(a): Dobrý den, řešil jsem stejný problém. XSD mám v resource, ale je možné použít i XSD z disku. Ostatní XSD leží ve stejné složce jako výchoz XSD. Java code: public static void validateXmlFile(File xmlFile) throws ParserConfigurationException, IOException, JAXBException, SAXException { //Building a Schema instance SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Source schemaFile = new StreamSource(new File(Validator.class.getResource(/xsd/mets.xsd).getPath())); Schema schema = schemaFactory.newSchema(schemaFile); //Creating a SAXParser for our input XML //First the factory final SAXParserFactory factory = SAXParserFactory.newInstance(); //Must be namespace aware to receive element names factory.setNamespaceAware(true); //Setting the Schema for validation factory.setSchema(schema); //Now the parser itself final SAXParser parser = factory.newSAXParser(); //Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); //Parsing parser.parse(xmlFile, handler); } V XSD mám: xsd:schema targetNamespace=http://www.loc.gov/METS/;http://www.loc.gov/METS/xmlns= http://www.loc.gov/METS/; http://www.loc.gov/METS/ xmlns:xlink=http://www.w3.org/1999/xlink;http://www.w3.org/1999/xlinkxmlns:xsd= http://www.w3.org/2001/XMLSchema; http://www.w3.org/2001/XMLSchema xmlns:nsesss=http://www.mvcr.cz/nsesss/v2;http://www.mvcr.cz/nsesss/v2elementFormDefault=qualified attributeFormDefault=unqualified xsd:import namespace=http://www.w3.org/1999/xlink;http://www.w3.org/1999/xlink schemaLocation=xlink.xsd / xsd:import namespace=http://www.mvcr.cz/nsesss/v2;http://www.mvcr.cz/nsesss/v2 schemaLocation=nsesss.xsd / ... S pozdravem, Korecký [image: GORDIC spol. s r.o.] Ing. Vladislav Korecký vladislav_kore...@gordic.cz vedoucí týmu POR programátor - analytik -- *GORDIC - tým POR (Portálová Řešení)* GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava, Czech Republic TEL: +420 567 571 491 Dne 4. 2. 2013 14:01, Dušan Rychnovský napsal(a): Dobrý den, mám následující problém. Potřebuji ve své aplikaci validovat XML soubory oproti XSD schématu. Toto schéma je ale rozloženo do několika (cca 10ti) souborů propojených navzájem pomocí tagů include a import. Podle rad na internetu jsem sestavil níže uvedený kód (prototypu), který ovšem nefunguje dobře. Kontrolou logů vypisovaných na konzoli se zdá že řešení opravdu prochází tagy include/import (a to průchodem do hloubky), nicméně z neznámých důvodů občas některé z nich přeskočí. Dlouho jsem hledal rozdíly mezi tagy, které se úspěšně zpracují a těmi, které jsou přeskočeny. Nicméně na nic jsem nepřišel. V konkrétním případě například z těchto tří řádků se první a poslední úspěšně zpracují, zatímco prostřední je ignorován. Všechna schémata existují, jsou dostupná, validní (nicméně to by nemělo mít na chybu vliv, protože resolver vůbec nedostane za úkol tento import řešit). import namespace=schemas/src/x20130601 schemaLocation=../../x20130601/Personalnumber.xsd/ import namespace=schemas/src/common/2008/01/03 schemaLocation=../../../contract/x20080103/Contractnumber.xsd/ import namespace=schemas/src/20100504 schemaLocation=../../../system/x20100504/Contractidentification.xsd / Díky tomu, že se některé importy nezpracují, pak dostávám výjimky tohoto charakteru: Exception in thread main org.xml.sax.SAXParseException; systemId: file:/z:/--- project path ---/schemas//x20130504/Identification.xsd; lineNumber: 18; columnNumber: 61; src-resolve: Cannot resolve the name 'dat20080103:Contractnumber' to a(n) 'element declaration' component. Deklarace chybějícího elementu se nachází v přeskočeném XSDčku. Prosím poraďte, kde hledat chybu, nebo alternativní řešení. Předem děkuji za pomoc, Dušan Rychnovský -- Main.java: private static final String PROJECT_ROOT_DIR_PATH = --- project-root-path ---; private static final String SCHEMAS_ROOT_PATH = --- schemas root path ---; private void validate() throws Exception { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); DocumentBuilder parser = builderFactory.newDocumentBuilder(); // parse the XML into a document object Document document = parser.parse( new File( PROJECT_ROOT_DIR_PATH + src\\test\\resources\\example.xml ) ); SchemaFactory factory =
Re: Validace XML souboru podle XSDcka
Předpokládám, že jeho obsah souvisí s validací. Zbytek kódu se mi zdá napsaný klasicky bez ohledu na importní tagy. Dušan Dne 4. února 2013 15:58 Dušan Rychnovský geraltzri...@gmail.com napsal(a): //Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); Mohl byste prosím přiložit i kód třídy MyContentHandler? Děkuji za pomoc Dušan Dne 4. února 2013 15:36 Vladislav Korecký vladislav_kore...@gordic.cznapsal(a): Dobrý den, řešil jsem stejný problém. XSD mám v resource, ale je možné použít i XSD z disku. Ostatní XSD leží ve stejné složce jako výchoz XSD. Java code: public static void validateXmlFile(File xmlFile) throws ParserConfigurationException, IOException, JAXBException, SAXException { //Building a Schema instance SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Source schemaFile = new StreamSource(new File(Validator.class.getResource(/xsd/mets.xsd).getPath())); Schema schema = schemaFactory.newSchema(schemaFile); //Creating a SAXParser for our input XML //First the factory final SAXParserFactory factory = SAXParserFactory.newInstance(); //Must be namespace aware to receive element names factory.setNamespaceAware(true); //Setting the Schema for validation factory.setSchema(schema); //Now the parser itself final SAXParser parser = factory.newSAXParser(); //Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); //Parsing parser.parse(xmlFile, handler); } V XSD mám: xsd:schema targetNamespace=http://www.loc.gov/METS/;http://www.loc.gov/METS/xmlns= http://www.loc.gov/METS/; http://www.loc.gov/METS/ xmlns:xlink=http://www.w3.org/1999/xlink;http://www.w3.org/1999/xlinkxmlns:xsd= http://www.w3.org/2001/XMLSchema; http://www.w3.org/2001/XMLSchema xmlns:nsesss=http://www.mvcr.cz/nsesss/v2;http://www.mvcr.cz/nsesss/v2elementFormDefault=qualified attributeFormDefault=unqualified xsd:import namespace=http://www.w3.org/1999/xlink;http://www.w3.org/1999/xlink schemaLocation=xlink.xsd / xsd:import namespace=http://www.mvcr.cz/nsesss/v2;http://www.mvcr.cz/nsesss/v2 schemaLocation=nsesss.xsd / ... S pozdravem, Korecký [image: GORDIC spol. s r.o.] Ing. Vladislav Korecký vladislav_kore...@gordic.cz vedoucí týmu POR programátor - analytik -- *GORDIC - tým POR (Portálová Řešení)* GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava, Czech Republic TEL: +420 567 571 491 Dne 4. 2. 2013 14:01, Dušan Rychnovský napsal(a): Dobrý den, mám následující problém. Potřebuji ve své aplikaci validovat XML soubory oproti XSD schématu. Toto schéma je ale rozloženo do několika (cca 10ti) souborů propojených navzájem pomocí tagů include a import. Podle rad na internetu jsem sestavil níže uvedený kód (prototypu), který ovšem nefunguje dobře. Kontrolou logů vypisovaných na konzoli se zdá že řešení opravdu prochází tagy include/import (a to průchodem do hloubky), nicméně z neznámých důvodů občas některé z nich přeskočí. Dlouho jsem hledal rozdíly mezi tagy, které se úspěšně zpracují a těmi, které jsou přeskočeny. Nicméně na nic jsem nepřišel. V konkrétním případě například z těchto tří řádků se první a poslední úspěšně zpracují, zatímco prostřední je ignorován. Všechna schémata existují, jsou dostupná, validní (nicméně to by nemělo mít na chybu vliv, protože resolver vůbec nedostane za úkol tento import řešit). import namespace=schemas/src/x20130601 schemaLocation=../../x20130601/Personalnumber.xsd/ import namespace=schemas/src/common/2008/01/03 schemaLocation=../../../contract/x20080103/Contractnumber.xsd/ import namespace=schemas/src/20100504 schemaLocation=../../../system/x20100504/Contractidentification.xsd / Díky tomu, že se některé importy nezpracují, pak dostávám výjimky tohoto charakteru: Exception in thread main org.xml.sax.SAXParseException; systemId: file:/z:/--- project path ---/schemas//x20130504/Identification.xsd; lineNumber: 18; columnNumber: 61; src-resolve: Cannot resolve the name 'dat20080103:Contractnumber' to a(n) 'element declaration' component. Deklarace chybějícího elementu se nachází v přeskočeném XSDčku. Prosím poraďte, kde hledat chybu, nebo alternativní řešení. Předem děkuji za pomoc, Dušan Rychnovský -- Main.java: private static final String PROJECT_ROOT_DIR_PATH = --- project-root-path ---; private static final String SCHEMAS_ROOT_PATH = --- schemas root path ---; private void validate() throws Exception { DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); DocumentBuilder parser = builderFactory.newDocumentBuilder(); // parse the XML
Re: JPA/eclipse link/sequence/mapped superclass
Dobry den, my na projektu neco podobneho pouzivame. Mame nekolik zakadnich entity, ktere lze rozsirit. Situace je nasledujici: @MappedSuperclass public abstract class BaseAssortmentGroup { public static final String ID_GENERATOR = BaseAssortmentGroup.ID_GENERATOR; @Column(name = C112_ASSORTMENTGROUPID) @Id @GeneratedValue(generator = BaseAssortmentGroup.ID_GENERATOR) private Long id; } @Table(name = T112_ASSORTMENTGROUPS) @Entity @SequenceGenerator(name = BaseAssortmentGroup.ID_GENERATOR, sequenceName = S112_ASSORTMENTGROUPID, allocationSize = 1) public class AssortmentGroup extends BaseAssortmentGroup { ... } Tohle funguje pro jednu konkretni sekvenci. Nezkousel jsem mapovat ID obecne, ale predpokladam ze vynechanim atributu generator v anotaci @GeneratedValue by to mohlo fungovat. Hezky den Jan Liska 2013/2/4 boris.bri...@gmail.com boris.bri...@gmail.com Zdravim konferenciu patram uz 2 dni a aj po precitani kopy webov sa neviem dopatrat k vysledku. Urobil som si predka vsetkych entity tried, ma anotaciu @MappedSuperclass, atribut id s @Id a generovanim cez sekvenciu. Ako povedat, aby kazda entity trieda, ktora extenduje superclass, pouzial atribut id s base entity, ale s vlastnou sekvenciou. Podla mna sa to muselo riesit x-krat, pride mi to ako normalna vec, ale za ten svet neviem najst funkcy priklad. Nevie niekto, ako na to? Dakujem
Re: Validace XML souboru podle XSDcka
Title: Sign Dobrý den, content handler není nutný pro správnou validaci, používám jej jen proto, abych si dokázal vypsat jméno a cestu k elementu, který je špatně validovaný (zatím jen vypisuji do konzole). Důležitý je tento řádek: SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Ten Vám zajistí, že se dotáhnou i ostatní XSD. Nicméně, zde je i ten content handler (je to rozvrtaná verze, právě si s ním hraji). private static class MyContentHandler extends DefaultHandler { private String element = ""; private int documentNum = 0; private ListString elementPath = new ArrayListString(); @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (localName != null !localName.isEmpty()) { element = localName; } else { element = qName; } if (StringUtils.equals(element, "Dokument")) { documentNum++; element += String.valueOf(documentNum); } elementPath.add(element); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { super.endElement(uri, localName, qName); elementPath.remove(elementPath.size() - 1); } @Override public void warning(SAXParseException exception) throws SAXException { printPath(); System.out.println(element + ": " + exception.getMessage()); } @Override public void error(SAXParseException exception) throws SAXException { printPath(); System.out.println(element + ": " + exception.getMessage()); } @Override public void fatalError(SAXParseException exception) throws SAXException { printPath(); System.out.println(element + ": " + exception.getMessage()); } public String getElement() { return element; } private void printPath() { for (String element : elementPath) { System.out.print("/"); System.out.print(element); } System.out.println(); } } Ing. Vladislav Korecký vedoucí týmu POR programátor - analytik GORDIC - tým POR (Portálová Řešení) GORDIC spol. s r.o., Erbenova 4, 586 01 Jihlava, Czech Republic TEL: +420 567 571 491 Dne 4. 2. 2013 16:00, Dušan Rychnovský napsal(a): Předpokládám, že jeho obsah souvisí s validací. Zbytek kódu se mi zdá napsaný klasicky bez ohledu na importní tagy. Dušan Dne 4. února 2013 15:58 Dušan Rychnovský geraltzri...@gmail.com napsal(a): //Creating an instance of our special handler final MyContentHandler handler = new MyContentHandler(); Mohl byste prosím přiložit i kód třídy MyContentHandler? Děkuji za pomoc Dušan Dne 4. února 2013 15:36 Vladislav Korecký vladislav_kore...@gordic.cz napsal(a): Dobrý den, řešil jsem stejný problém. XSD mám v resource, ale je možné použít i XSD z disku. Ostatní XSD leží ve stejné složce jako výchoz XSD. Java code: public static void validateXmlFile(File xmlFile) throws ParserConfigurationException, IOException,