From 1ac16e71bb4bb6ece208da6af0ff69c88d1271a3 Mon Sep 17 00:00:00 2001 From: Andreas Rudolph Date: Tue, 1 Sep 2015 14:45:17 +0200 Subject: [PATCH] support namespace prefixes when reading XML formats The XML parsers were slightly improved in order to read XML elements with namespace prefix properly. --- .../openestate/io/casa_it/CasaItDocument.java | 2 +- .../openestate/io/daft_ie/DaftIeDocument.java | 2 +- .../io/is24_xml/Is24XmlDocument.java | 2 +- .../Is24XmlDocumentNamespaceTest.java | 96 ++++++++++ .../src/test/resources/is24-namespace.xml | 73 ++++++++ .../io/immoxml/ImmoXmlDocument.java | 2 +- .../immoxml/ImmoXmlDocumentNamespaceTest.java | 112 ++++++++++++ .../immobiliare_it/ImmobiliareItDocument.java | 2 +- .../io/immobiliare_it/ImmobiliareItUtils.java | 3 - .../ImmobiliareItDocumentNamespaceTest.java | 121 +++++++++++++ .../openestate/io/kyero/KyeroDocument.java | 2 +- .../io/kyero/converters/Kyero_3.java | 6 +- .../io/openimmo/OpenImmoFeedbackDocument.java | 2 +- .../io/openimmo/OpenImmoTransferDocument.java | 2 +- .../openimmo/converters/OpenImmo_1_2_2.java | 10 +- ...OpenImmoTransferDocumentNamespaceTest.java | 168 ++++++++++++++++++ .../openestate/io/trovit/TrovitDocument.java | 2 +- .../openestate/io/wis_it/WisItDocument.java | 2 +- 18 files changed, 588 insertions(+), 21 deletions(-) create mode 100644 IS24-XML/src/test/java/org/openestate/io/is24_xml/Is24XmlDocumentNamespaceTest.java create mode 100644 IS24-XML/src/test/resources/is24-namespace.xml create mode 100644 ImmoXML/src/test/java/org/openestate/io/immoxml/ImmoXmlDocumentNamespaceTest.java create mode 100644 ImmobiliareIT/src/test/java/org/openestate/io/immobiliare_it/ImmobiliareItDocumentNamespaceTest.java create mode 100644 OpenImmo/src/test/java/org/openestate/io/openimmo/OpenImmoTransferDocumentNamespaceTest.java diff --git a/CasaIT/src/main/java/org/openestate/io/casa_it/CasaItDocument.java b/CasaIT/src/main/java/org/openestate/io/casa_it/CasaItDocument.java index cba4d047..3942206a 100644 --- a/CasaIT/src/main/java/org/openestate/io/casa_it/CasaItDocument.java +++ b/CasaIT/src/main/java/org/openestate/io/casa_it/CasaItDocument.java @@ -60,7 +60,7 @@ public CasaItDocument( Document document ) public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "container".equals( root.getTagName() ); + return "container".equals( root.getLocalName() ); } /** diff --git a/DaftIE/src/main/java/org/openestate/io/daft_ie/DaftIeDocument.java b/DaftIE/src/main/java/org/openestate/io/daft_ie/DaftIeDocument.java index c0af8a57..19d2bf25 100644 --- a/DaftIE/src/main/java/org/openestate/io/daft_ie/DaftIeDocument.java +++ b/DaftIE/src/main/java/org/openestate/io/daft_ie/DaftIeDocument.java @@ -111,7 +111,7 @@ public DaftIeVersion getLatestVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "daft".equals( root.getTagName() ); + return "daft".equals( root.getLocalName() ); } /** diff --git a/IS24-XML/src/main/java/org/openestate/io/is24_xml/Is24XmlDocument.java b/IS24-XML/src/main/java/org/openestate/io/is24_xml/Is24XmlDocument.java index da1c69a0..d9be4ce6 100644 --- a/IS24-XML/src/main/java/org/openestate/io/is24_xml/Is24XmlDocument.java +++ b/IS24-XML/src/main/java/org/openestate/io/is24_xml/Is24XmlDocument.java @@ -60,7 +60,7 @@ public Is24XmlDocument( Document document ) public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "IS24ImmobilienTransfer".equals( root.getTagName() ); + return "IS24ImmobilienTransfer".equals( root.getLocalName() ); } /** diff --git a/IS24-XML/src/test/java/org/openestate/io/is24_xml/Is24XmlDocumentNamespaceTest.java b/IS24-XML/src/test/java/org/openestate/io/is24_xml/Is24XmlDocumentNamespaceTest.java new file mode 100644 index 00000000..c2f358d7 --- /dev/null +++ b/IS24-XML/src/test/java/org/openestate/io/is24_xml/Is24XmlDocumentNamespaceTest.java @@ -0,0 +1,96 @@ +/* + * Copyright 2015 OpenEstate.org. + * + * 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. + */ + +package org.openestate.io.is24_xml; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.openestate.io.core.XmlUtils; +import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp; +import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp.Anbieter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; + +/** + * + * @author Andreas Rudolph + */ +@RunWith( JUnit4.class ) +public class Is24XmlDocumentNamespaceTest +{ + private final static Logger LOGGER = LoggerFactory.getLogger( Is24XmlDocumentNamespaceTest.class ); + + private static Document buildExampleDocument() throws Exception + { + return XmlUtils.newDocument(Is24XmlDocumentNamespaceTest.class.getResourceAsStream( "/is24-namespace.xml" ) ); + } + + @Test + public void testToObject() + { + try + { + Is24XmlDocument doc = new Is24XmlDocument( buildExampleDocument() ); + + ImmobilienTransferTyp obj = doc.toObject(); + Assert.assertNotNull( + "Created object for transfer document.", obj ); + } + catch (Exception ex) + { + LOGGER.error( "Test of Is24XmlDocument.toObject failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of Is24XmlDocument.toObject failed!" ); + } + } + + @Test + @Ignore + public void testToXml() + { + //ObjectType obj = Is24XmlUtils.getFactory().createObjectType(); + //obj.setINFODE( "an example property" ); + //obj.setORT( "Berlin" ); + + Anbieter agent = Is24XmlUtils.getFactory().createImmobilienTransferTypAnbieter(); + agent.setScoutKundenID( "123456" ); + //agent.getImmobilien().add( e ); + + ImmobilienTransferTyp transfer = Is24XmlUtils.getFactory().createImmobilienTransferTyp(); + transfer.setAnbieter( agent ); + transfer.setEmailBeiFehler( "test@test.org" ); + transfer.setErstellerSoftware( "OpenEstate.org" ); + transfer.setErstellerSoftwareVersion( "1.0" ); + + try + { + Is24XmlDocument doc = Is24XmlDocument.newDocument( transfer ); + + String xml = doc.toXmlString( true ); + LOGGER.info( "XML: " + xml ); + } + catch (Exception ex) + { + LOGGER.error( "Test of Is24XmlDocument.toXml failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of Is24XmlDocument.toXml failed!" ); + } + } +} \ No newline at end of file diff --git a/IS24-XML/src/test/resources/is24-namespace.xml b/IS24-XML/src/test/resources/is24-namespace.xml new file mode 100644 index 00000000..9bd2df81 --- /dev/null +++ b/IS24-XML/src/test/resources/is24-namespace.xml @@ -0,0 +1,73 @@ + + + + + + + details-de + lage-de + ausstattung-de + weiteres-de + +ENERGIEAUSWEIS + +- Energieeffizienzklasse: B +- erstellt am: 02.05.2014 +- gültig bis: 31.03.2018 +- Art des Energieausweises: nach Bedarf +- Endenergiebedarf insgesamt: ca. 123 kWh/(m²a) +- Endenergiebedarf für Strom: ca. 234 kWh/(m²a) +- Endenergiebedarf für Heizung: ca. 345 kWh/(m²a) +- Baujahr: 1950 + + + + + + + + + + + + + + + + + + Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in der Nacht und dazu noch in dieser engen Gasse mitten im übel beleumundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens gedreht hatte und mit der Beute verschwinden wollte! Hatte einer seiner zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn nun um die Früchte seiner Arbeit zu erleichtern? + +Oder gehörten die Schritte hinter ihm zu einem der unzähligen Gesetzeshüter dieser Stadt, und die stählerne Acht um seine Handgelenke würde gleich zuschnappen? Er konnte die Aufforderung stehen zu bleiben schon hören. Gehetzt sah er sich um. Plötzlich erblickte er den schmalen Durchgang. Blitzartig drehte er sich nach rechts und verschwand zwischen den beiden Gebäuden. Beinahe wäre er dabei über den umgestürzten Mülleimer gefallen, der mitten im Weg lag. Er versuchte, sich in der Dunkelheit seinen Weg zu ertasten und erstarrte: Anscheinend gab es keinen anderen Ausweg aus diesem kleinen Hof als den Durchgang, durch den er gekommen war. Die Schritte wurden lauter und lauter, er sah eine dunkle Gestalt um die Ecke biegen. Fieberhaft irrten seine Augen durch die nächtliche Dunkelheit und suchten einen Ausweg. + ENERGIEAUSWEIS + +- Energieeffizienzklasse: B +- erstellt am: 05.05.2014 +- gültig bis: 20.05.2020 +- Art des Energieausweises: nach Bedarf +- Endenergiebedarf insgesamt: ca. 123 kWh/(m²a) +- Endenergiebedarf für Strom: ca. 234 kWh/(m²a) +- Endenergiebedarf für Heizung: ca. 345 kWh/(m²a) + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ImmoXML/src/main/java/org/openestate/io/immoxml/ImmoXmlDocument.java b/ImmoXML/src/main/java/org/openestate/io/immoxml/ImmoXmlDocument.java index 993a7b63..c289ced8 100644 --- a/ImmoXML/src/main/java/org/openestate/io/immoxml/ImmoXmlDocument.java +++ b/ImmoXML/src/main/java/org/openestate/io/immoxml/ImmoXmlDocument.java @@ -110,7 +110,7 @@ public ImmoXmlVersion getLatestVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "immoxml".equals( root.getTagName() ); + return "immoxml".equals( root.getLocalName() ); } /** diff --git a/ImmoXML/src/test/java/org/openestate/io/immoxml/ImmoXmlDocumentNamespaceTest.java b/ImmoXML/src/test/java/org/openestate/io/immoxml/ImmoXmlDocumentNamespaceTest.java new file mode 100644 index 00000000..f1127584 --- /dev/null +++ b/ImmoXML/src/test/java/org/openestate/io/immoxml/ImmoXmlDocumentNamespaceTest.java @@ -0,0 +1,112 @@ +/* + * Copyright 2015 OpenEstate.org. + * + * 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. + */ + +package org.openestate.io.immoxml; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.openestate.io.core.XmlUtils; +import org.openestate.io.immoxml.xml.Immoxml; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; + +/** + * + * @author Andreas Rudolph + */ +@RunWith( JUnit4.class ) +public class ImmoXmlDocumentNamespaceTest +{ + private final static Logger LOGGER = LoggerFactory.getLogger( ImmoXmlDocumentNamespaceTest.class ); + + private static Document buildExampleDocument( String version ) throws Exception + { + return XmlUtils.newDocument("\n" + + "\n" + + " \n" + + " \n" + + " \n" + + "" ); + } + + @Test + public void testDowngrade() + { + try + { + String version = ImmoXmlUtils.VERSION.toReadableVersion(); + ImmoXmlDocument doc = new ImmoXmlDocument( buildExampleDocument( version ) ); + + doc.downgrade( ImmoXmlVersion.V3_0 ); + Assert.assertEquals("downgrade from "+version+" to 3.0", ImmoXmlVersion.V3_0, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmoXmlDocument.downgrade failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmoXmlDocument.downgrade failed!" ); + } + } + + @Test + public void testToObject() + { + try + { + String version = ImmoXmlUtils.VERSION.toReadableVersion(); + + ImmoXmlDocument doc = new ImmoXmlDocument( buildExampleDocument( version ) ); + Assert.assertEquals(version, ImmoXmlUtils.VERSION, doc.getDocumentVersion() ); + + Immoxml obj = doc.toObject(); + Assert.assertNotNull( + "Created object for transfer document.", obj ); + Assert.assertEquals( + "Matching version between document and object.", doc.getDocumentVersion().toReadableVersion(), obj.getUebertragung().getVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmoXmlDocument.toObject failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmoXmlDocument.toObject failed!" ); + } + } + + @Test + public void testUpgrade() + { + try + { + String version = ImmoXmlUtils.VERSION.toReadableVersion(); + ImmoXmlDocument doc = new ImmoXmlDocument( buildExampleDocument( "1.1" ) ); + + doc.upgrade( ImmoXmlUtils.VERSION ); + Assert.assertEquals("upgrade from 1.1 to "+version, ImmoXmlUtils.VERSION, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmoXmlDocument.upgrade failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmoXmlDocument.upgrade failed!" ); + } + } +} \ No newline at end of file diff --git a/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItDocument.java b/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItDocument.java index 73f07615..4ffff6c7 100644 --- a/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItDocument.java +++ b/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItDocument.java @@ -113,7 +113,7 @@ public ImmobiliareItVersion getLatestVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "feed".equals( root.getTagName() ); + return "feed".equals( root.getLocalName() ); } /** diff --git a/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItUtils.java b/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItUtils.java index e8e68396..fd324140 100644 --- a/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItUtils.java +++ b/ImmobiliareIT/src/main/java/org/openestate/io/immobiliare_it/ImmobiliareItUtils.java @@ -20,10 +20,8 @@ import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; -import java.text.ParseException; import java.util.Calendar; import java.util.Currency; -import java.util.Date; import java.util.Locale; import javax.xml.bind.DatatypeConverter; import javax.xml.bind.JAXBContext; @@ -32,7 +30,6 @@ import javax.xml.bind.Unmarshaller; import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateUtils; import org.openestate.io.core.LocaleUtils; import org.openestate.io.core.XmlUtils; import org.openestate.io.core.XmlValidationHandler; diff --git a/ImmobiliareIT/src/test/java/org/openestate/io/immobiliare_it/ImmobiliareItDocumentNamespaceTest.java b/ImmobiliareIT/src/test/java/org/openestate/io/immobiliare_it/ImmobiliareItDocumentNamespaceTest.java new file mode 100644 index 00000000..e7d82763 --- /dev/null +++ b/ImmobiliareIT/src/test/java/org/openestate/io/immobiliare_it/ImmobiliareItDocumentNamespaceTest.java @@ -0,0 +1,121 @@ +/* + * Copyright 2015 OpenEstate.org. + * + * 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. + */ + +package org.openestate.io.immobiliare_it; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.openestate.io.core.XmlUtils; +import org.openestate.io.immobiliare_it.xml.Feed; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; + +/** + * + * @author Andreas Rudolph + */ +@RunWith( JUnit4.class ) +public class ImmobiliareItDocumentNamespaceTest +{ + private final static Logger LOGGER = LoggerFactory.getLogger( ImmobiliareItDocumentNamespaceTest.class ); + + private static Document buildExampleDocument( String version ) throws Exception + { + return XmlUtils.newDocument("\n" + + "\n" + + " " + version + "\n" + + "" ); + } + + @Test + public void testGetDocumentVersion() + { + ImmobiliareItDocument doc; + try + { + doc = new ImmobiliareItDocument( buildExampleDocument( "2.5" ) ); + Assert.assertEquals("2.5", ImmobiliareItVersion.V2_5, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmobiliareItDocument.getDocumentVersion failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmobiliareItDocument.getDocumentVersion failed!" ); + } + } + + @Test + public void testSetDocumentVersion() + { + try + { + ImmobiliareItDocument doc = new ImmobiliareItDocument( buildExampleDocument( "" ) ); + + doc.setDocumentVersion( ImmobiliareItVersion.V2_5 ); + Assert.assertEquals("2.5", ImmobiliareItVersion.V2_5, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmobiliareItDocument.setDocumentVersion failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmobiliareItDocument.setDocumentVersion failed!" ); + } + } + + @Test + public void testToObject() + { + try + { + ImmobiliareItDocument doc = new ImmobiliareItDocument( buildExampleDocument( ImmobiliareItUtils.VERSION.toReadableVersion() ) ); + Feed obj = doc.toObject(); + Assert.assertNotNull( + "Created object for transfer document.", obj ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmobiliareItDocument.toObject failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmobiliareItDocument.toObject failed!" ); + } + } + + @Test + @Ignore + public void testToXml() + { + Feed feed = ImmobiliareItUtils.getFactory().createFeed(); + //feed.setVersion( DaftIEUtils.VERSION.getReadableVersion() ); + //feed.setOverseasRental( DaftIEUtils.getFactory().createDaftOverseasRental() ); + //feed.setOverseasSales( DaftIEUtils.getFactory().createDaftOverseasSales() ); + try + { + ImmobiliareItDocument doc = ImmobiliareItDocument.newDocument( feed ); + String xml = doc.toXmlString( true ); + LOGGER.info( "XML: " + xml ); + } + catch (Exception ex) + { + LOGGER.error( "Test of ImmobiliareItDocument.toXml failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of ImmobiliareItDocument.toXml failed!" ); + } + } +} \ No newline at end of file diff --git a/Kyero/src/main/java/org/openestate/io/kyero/KyeroDocument.java b/Kyero/src/main/java/org/openestate/io/kyero/KyeroDocument.java index 485f7bac..af9c5fff 100644 --- a/Kyero/src/main/java/org/openestate/io/kyero/KyeroDocument.java +++ b/Kyero/src/main/java/org/openestate/io/kyero/KyeroDocument.java @@ -110,7 +110,7 @@ public KyeroVersion getLatestVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "root".equals( root.getTagName() ); + return "root".equals( root.getLocalName() ); } /** diff --git a/Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java b/Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java index f76bf84d..71a5aec3 100644 --- a/Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java +++ b/Kyero/src/main/java/org/openestate/io/kyero/converters/Kyero_3.java @@ -286,7 +286,7 @@ protected void downgradeUrlElements( Document doc ) throws JaxenException for (Object childItem : childNodes) { Element langNode = (Element) childItem; - if ("en".equalsIgnoreCase( langNode.getTagName() )) + if ("en".equalsIgnoreCase( langNode.getLocalName() )) enUrlValue = StringUtils.trimToNull( langNode.getTextContent() ); else if (fallbackUrlValue==null) fallbackUrlValue = StringUtils.trimToNull( langNode.getTextContent() ); @@ -413,7 +413,7 @@ protected void removeUnsupportedLanguageElements( Document doc ) throws JaxenExc for (Object childItem : childNodes) { Element langNode = (Element) childItem; - String lang = langNode.getTagName().toLowerCase(); + String lang = langNode.getLocalName().toLowerCase(); if (ArrayUtils.contains( unsupportedLanguages, lang )) { node.removeChild( langNode ); @@ -513,7 +513,7 @@ protected void upgradeTypeElements( Document doc ) throws JaxenException for (Object childItem : childNodes) { Element langNode = (Element) childItem; - if ("en".equalsIgnoreCase( langNode.getTagName() )) + if ("en".equalsIgnoreCase( langNode.getLocalName() )) enTypeValue = StringUtils.trimToNull( langNode.getTextContent() ); else if (fallbackTypeValue==null) fallbackTypeValue = StringUtils.trimToNull( langNode.getTextContent() ); diff --git a/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoFeedbackDocument.java b/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoFeedbackDocument.java index 7f70daf5..8ef3ee2a 100644 --- a/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoFeedbackDocument.java +++ b/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoFeedbackDocument.java @@ -119,7 +119,7 @@ public OpenImmoVersion getDocumentVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "openimmo_feedback".equals( root.getTagName() ); + return "openimmo_feedback".equals( root.getLocalName() ); } /** diff --git a/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoTransferDocument.java b/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoTransferDocument.java index 24c2310d..a30342a9 100644 --- a/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoTransferDocument.java +++ b/OpenImmo/src/main/java/org/openestate/io/openimmo/OpenImmoTransferDocument.java @@ -104,7 +104,7 @@ public OpenImmoVersion getDocumentVersion() public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "openimmo".equals( root.getTagName() ); + return "openimmo".equals( root.getLocalName() ); } /** diff --git a/OpenImmo/src/main/java/org/openestate/io/openimmo/converters/OpenImmo_1_2_2.java b/OpenImmo/src/main/java/org/openestate/io/openimmo/converters/OpenImmo_1_2_2.java index 19f3a162..a255dd63 100644 --- a/OpenImmo/src/main/java/org/openestate/io/openimmo/converters/OpenImmo_1_2_2.java +++ b/OpenImmo/src/main/java/org/openestate/io/openimmo/converters/OpenImmo_1_2_2.java @@ -571,7 +571,7 @@ protected void downgradeLandUndForstwirtschaftElements( Document doc ) throws Ja /** * Downgrade <objektart> elements to OpenImmo 1.2.1. *

- * The <objektart> element does only allow the samte type of child + * The <objektart> element does only allow the same type of child * element in version 1.2.1. *

* Any child type, that differs from the first child type, is removed. @@ -596,12 +596,12 @@ protected void downgradeObjektartElements( Document doc ) throws JaxenException Element node = (Element) childItem; if (type==null) { - //LOGGER.debug( "PRIMARY TYPE: " + node.getTagName() ); - type = node.getTagName(); + //LOGGER.debug( "PRIMARY TYPE: " + node.getLocalName() ); + type = node.getLocalName(); } - else if (!type.equalsIgnoreCase( node.getTagName() )) + else if (!type.equalsIgnoreCase( node.getLocalName() )) { - //LOGGER.debug( "REMOVE SECONDARY TYPE: " + node.getTagName() ); + //LOGGER.debug( "REMOVE SECONDARY TYPE: " + node.getLocalName() ); parentNode.removeChild( node ); } } diff --git a/OpenImmo/src/test/java/org/openestate/io/openimmo/OpenImmoTransferDocumentNamespaceTest.java b/OpenImmo/src/test/java/org/openestate/io/openimmo/OpenImmoTransferDocumentNamespaceTest.java new file mode 100644 index 00000000..07b446dc --- /dev/null +++ b/OpenImmo/src/test/java/org/openestate/io/openimmo/OpenImmoTransferDocumentNamespaceTest.java @@ -0,0 +1,168 @@ +/* + * Copyright 2015 OpenEstate.org. + * + * 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. + */ + +package org.openestate.io.openimmo; + +import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; +import org.openestate.io.core.XmlUtils; +import org.openestate.io.openimmo.xml.Openimmo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; + +/** + * + * @author Andreas Rudolph + */ +@RunWith( JUnit4.class ) +public class OpenImmoTransferDocumentNamespaceTest +{ + private final static Logger LOGGER = LoggerFactory.getLogger( OpenImmoTransferDocumentNamespaceTest.class ); + + private static Document buildExampleDocument( String version ) throws Exception + { + String xmlns = ("1.2".equals( version ) || "1.2.0".equals( version ) || "1.1".equals( version ))? + " xmlns:imo=\"" + OpenImmoUtils.OLD_NAMESPACE + "\"": StringUtils.EMPTY; + return XmlUtils.newDocument( + "\n" + + "\n" + + " \n" + + " \n" + + " \n" + + "" ); + } + + @Test + public void testDowngrade() + { + try + { + String version = OpenImmoVersion.V1_2_0.toReadableVersion(); + OpenImmoTransferDocument doc = new OpenImmoTransferDocument( buildExampleDocument( version ) ); + + doc.downgrade( OpenImmoVersion.V1_1 ); + Assert.assertEquals( + "downgrade from "+version+" to 1.1", OpenImmoVersion.V1_1, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of OpenImmoTransferDocument.downgrade failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of OpenImmoTransferDocument.downgrade failed!" ); + } + } + + @Test + public void testGetDocumentVersion() + { + OpenImmoTransferDocument doc; + try + { + doc = new OpenImmoTransferDocument( buildExampleDocument( "1.2.0" ) ); + Assert.assertEquals( + "1.2.0", OpenImmoVersion.V1_2_0, doc.getDocumentVersion() ); + + doc = new OpenImmoTransferDocument( buildExampleDocument( "1.1" ) ); + Assert.assertEquals( + "1.1", OpenImmoVersion.V1_1, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of OpenImmoTransferDocument.getDocumentVersion failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of OpenImmoTransferDocument.getDocumentVersion failed!" ); + } + } + + @Test + public void testSetDocumentVersion() + { + try + { + OpenImmoTransferDocument doc = new OpenImmoTransferDocument( buildExampleDocument( "1.2.0" ) ); + Assert.assertEquals( + "1.2.0", OpenImmoVersion.V1_2_0, doc.getDocumentVersion() ); + + doc.setDocumentVersion( OpenImmoVersion.V1_1 ); + Assert.assertEquals( + "1.1", OpenImmoVersion.V1_1, doc.getDocumentVersion() ); + + doc.setDocumentVersion( OpenImmoVersion.V1_2_0 ); + Assert.assertEquals( + "1.2.0", OpenImmoVersion.V1_2_0, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of OpenImmoTransferDocument.setDocumentVersion failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of OpenImmoTransferDocument.setDocumentVersion failed!" ); + } + } + + @Test + public void testToObject() + { + try + { + String version = OpenImmoVersion.V1_2_0.toReadableVersion(); + + OpenImmoTransferDocument doc = new OpenImmoTransferDocument( buildExampleDocument( version ) ); + Assert.assertEquals( + version, OpenImmoVersion.V1_2_0, doc.getDocumentVersion() ); + + Openimmo obj = doc.toObject(); + Assert.assertNotNull( + "Created object for transfer document.", obj ); + Assert.assertEquals( + "Matching version between document and object.", doc.getDocumentVersion().toReadableVersion(), obj.getUebertragung().getVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of OpenImmoTransferDocument.toObject failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of OpenImmoTransferDocument.toObject failed!" ); + } + } + + @Test + public void testUpgrade() + { + try + { + String version = OpenImmoVersion.V1_2_0.toReadableVersion(); + OpenImmoTransferDocument doc = new OpenImmoTransferDocument( buildExampleDocument( "1.1" ) ); + + doc.upgrade( OpenImmoVersion.V1_2_0 ); + Assert.assertEquals( + "upgrade from 1.1 to "+version, OpenImmoVersion.V1_2_0, doc.getDocumentVersion() ); + } + catch (Exception ex) + { + LOGGER.error( "Test of OpenImmoTransferDocument.upgrade failed!" ); + LOGGER.error( "> " + ex.getLocalizedMessage(), ex ); + Assert.fail( "Test of OpenImmoTransferDocument.upgrade failed!" ); + } + } +} \ No newline at end of file diff --git a/Trovit/src/main/java/org/openestate/io/trovit/TrovitDocument.java b/Trovit/src/main/java/org/openestate/io/trovit/TrovitDocument.java index 9cd8bf63..c40076bf 100644 --- a/Trovit/src/main/java/org/openestate/io/trovit/TrovitDocument.java +++ b/Trovit/src/main/java/org/openestate/io/trovit/TrovitDocument.java @@ -60,7 +60,7 @@ public TrovitDocument( Document document ) public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "trovit".equals( root.getTagName() ); + return "trovit".equals( root.getLocalName() ); } /** diff --git a/WisIT/src/main/java/org/openestate/io/wis_it/WisItDocument.java b/WisIT/src/main/java/org/openestate/io/wis_it/WisItDocument.java index 603e02a5..817be530 100644 --- a/WisIT/src/main/java/org/openestate/io/wis_it/WisItDocument.java +++ b/WisIT/src/main/java/org/openestate/io/wis_it/WisItDocument.java @@ -62,7 +62,7 @@ public WisItDocument( Document document ) public static boolean isReadable( Document doc ) { Element root = XmlUtils.getRootElement( doc ); - return "WIS".equals( root.getTagName() ); + return "WIS".equals( root.getLocalName() ); } /**