OpenImmo_1_2_0 extends XmlConverter<OpenImmoDocument, OpenImmoVersion> { protected void downgradeHausElements(Document doc) throws JaxenException { List nodes = XmlUtils.newXPath( "/io:openimmo/io:anbieter/io:immobilie/io:objektkategorie/io:objektart/io:haus[@haustyp]", doc).selectNodes(doc); for (Object item : nodes) { Element node = (Element) item; String value = StringUtils.trimToNull(node.getAttribute("haustyp")); if ("KRANKENHAUS".equalsIgnoreCase(value)) node.removeAttribute("haustyp"); else if ("PFLEGEHEIM".equalsIgnoreCase(value)) node.removeAttribute("haustyp"); else if ("SANATORIUM".equalsIgnoreCase(value)) node.removeAttribute("haustyp"); else if ("SENIORENHEIM".equalsIgnoreCase(value)) node.removeAttribute("haustyp"); else if ("BETREUTES-WOHNEN".equalsIgnoreCase(value)) node.removeAttribute("haustyp"); } }  @Override OpenImmoVersion getVersion(); @Override void downgradeToPreviousVersion(OpenImmoDocument doc); @Override void upgradeFromPreviousVersion(OpenImmoDocument doc);  }
@Test public void testDowngradeHausElements() { try { Document doc = buildTransferDocumentForDowngrade(); int count; count = XmlUtils.countNodes( "/io:openimmo/io:anbieter/io:immobilie/io:objektkategorie/io:objektart/io:haus[@haustyp='KRANKENHAUS' or @haustyp='PFLEGEHEIM' or @haustyp='SANATORIUM' or @haustyp='SENIORENHEIM' or @haustyp='BETREUTES-WOHNEN']", doc); Assert.assertEquals( "5 convertable <haus> element available before conversion.", 5, count); new OpenImmo_1_2_0().downgradeHausElements(doc); count = XmlUtils.countNodes( "/io:openimmo/io:anbieter/io:immobilie/io:objektkategorie/io:objektart/io:haus[@haustyp='KRANKENHAUS' or @haustyp='PFLEGEHEIM' or @haustyp='SANATORIUM' or @haustyp='SENIORENHEIM' or @haustyp='BETREUTES-WOHNEN']", doc); Assert.assertEquals( "0 convertable <haus> elements available after conversion.", 0, count); count = XmlUtils.countNodes( "/io:openimmo/io:anbieter/io:immobilie/io:objektkategorie/io:objektart/io:haus", doc); Assert.assertEquals( "5 converted <haus> elements available after conversion.", 5, count); } catch (Exception ex) { LOGGER.error("Test of OpenImmo_1_2_0.downgradeHausElements failed!"); LOGGER.error("> " + ex.getLocalizedMessage(), ex); Assert.fail("Test of OpenImmo_1_2_0.downgradeHausElements failed!"); } }