org.openestate.io.examples.Is24XmlWritingExample Maven / Gradle / Ivy
/*
* Copyright 2015-2016 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.examples;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.output.NullOutputStream;
import org.apache.commons.io.output.NullWriter;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.SystemUtils;
import org.apache.log4j.PropertyConfigurator;
import org.openestate.io.is24_xml.Is24XmlDocument;
import org.openestate.io.is24_xml.Is24XmlUtils;
import org.openestate.io.is24_xml.xml.AktionsTyp;
import org.openestate.io.is24_xml.xml.AusstattungsqualitaetsTyp;
import org.openestate.io.is24_xml.xml.BauphaseTyp;
import org.openestate.io.is24_xml.xml.EnergieausweistypTyp;
import org.openestate.io.is24_xml.xml.GenehmigungTyp;
import org.openestate.io.is24_xml.xml.HausKategorienTyp;
import org.openestate.io.is24_xml.xml.HausKauf;
import org.openestate.io.is24_xml.xml.HausMiete;
import org.openestate.io.is24_xml.xml.HeizungsartTyp;
import org.openestate.io.is24_xml.xml.ISOLaenderCodeTyp;
import org.openestate.io.is24_xml.xml.ImmobilieBaseTyp;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp;
import org.openestate.io.is24_xml.xml.ImmobilienTransferTyp.Anbieter;
import org.openestate.io.is24_xml.xml.ObjectFactory;
import org.openestate.io.is24_xml.xml.ObjektZustandTyp;
import org.openestate.io.is24_xml.xml.StatusTyp;
import org.openestate.io.is24_xml.xml.StellplatzKategorieTyp;
import org.openestate.io.is24_xml.xml.WaehrungTyp;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Example for writing IS24-XML files.
*
* This example illustrates the programatic creation of IS24-XML documents and
* how they are written into XML.
*
* @since 1.0
* @author Andreas Rudolph
*/
public class Is24XmlWritingExample
{
private final static Logger LOGGER = LoggerFactory.getLogger( Is24XmlWritingExample.class );
private final static String PACKAGE = "/org/openestate/io/examples";
private final static ObjectFactory FACTORY = Is24XmlUtils.getFactory();
private final static boolean PRETTY_PRINT = true;
/**
* Start the example application.
*
* @param args
* command line arguments
*/
public static void main( String[] args )
{
// init logging
PropertyConfigurator.configure(
Is24XmlWritingExample.class.getResource( PACKAGE + "/log4j.properties" ) );
// create a ImmobilienTransferTyp object with some example data
// this object corresponds to the root element in XML
ImmobilienTransferTyp transfer = FACTORY.createImmobilienTransferTyp();
transfer.setEmailBeiFehler( "[email protected]" );
transfer.setErstellerSoftware( "OpenEstate-IO" );
transfer.setErstellerSoftwareVersion( "1.1" );
transfer.setAnbieter( createAnbieter() );
// convert the ImmobilienTransferTyp object into a XML document
Is24XmlDocument doc = null;
try
{
doc = Is24XmlDocument.newDocument( transfer );
}
catch (Exception ex)
{
LOGGER.error( "Can't create XML document!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
// write XML document into a java.io.File
try
{
write( doc, File.createTempFile( "output-", ".xml" ) );
}
catch (IOException ex)
{
LOGGER.error( "Can't create temporary file!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
// write XML document into a java.io.OutputStream
write( doc, new NullOutputStream() );
// write XML document into a java.io.Writer
write( doc, new NullWriter() );
// write XML document into a string and send it to the console
writeToConsole( doc );
}
/**
* Create an {@link Anbieter} with some example data.
*
* @return
* created example object
*/
protected static Anbieter createAnbieter()
{
// create an example agency
Anbieter anbieter = FACTORY.createImmobilienTransferTypAnbieter();
anbieter.setScoutKundenID( "123456" );
// add some real estates to the agency
anbieter.getImmobilie().add( createImmobilieHausKauf() );
anbieter.getImmobilie().add( createImmobilieHausKauf() );
anbieter.getImmobilie().add( createImmobilieHausMiete() );
anbieter.getImmobilie().add( createImmobilieHausMiete() );
return anbieter;
}
/**
* Create an {@link HausKauf} with some example data.
*
* @return
* created example object
*/
protected static HausKauf createImmobilieHausKauf()
{
// create an example real estate
HausKauf.Type obj = FACTORY.createHausKaufType();
initImmobilie( obj );
obj.setAlsFerienwohnungGeeignet( RandomUtils.nextInt( 0, 2 )==1 );
obj.setAnzahlBadezimmer( RandomUtils.nextLong( 1, 5 ) );
obj.setAnzahlGaragenStellplaetze( RandomUtils.nextLong( 0, 3 ) );
obj.setAnzahlSchlafzimmer( RandomUtils.nextLong( 1, 5 ) );
obj.setAusstattungsqualitaet( AusstattungsqualitaetsTyp.LUXUS );
obj.setBarrierefrei( RandomUtils.nextInt( 0, 2 )==1 );
obj.setBaujahr( RandomUtils.nextLong( 1900, 2010 ) );
obj.setBauphase( BauphaseTyp.HAUS_FERTIG_GESTELLT );
obj.setDenkmalschutzobjekt( RandomUtils.nextInt( 0, 2 )==1 );
obj.setEtagenzahl( RandomUtils.nextLong( 1, 10 ) );
obj.setFreiAb( "notes about availability" );
obj.setGaesteWC( RandomUtils.nextInt( 0, 2 )==1);
obj.setGrundstuecksFlaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 100, 1500 ) ) );
obj.setHausKategorie( HausKategorienTyp.MEHRFAMILIENHAUS );
obj.setHeizungsart( HeizungsartTyp.ETAGENHEIZUNG );
obj.setJahrLetzteModernisierung( RandomUtils.nextLong( 1980, 2000 ) );
obj.setKeller( RandomUtils.nextInt( 0, 2 )==1 );
obj.setMitEinliegerwohnung( RandomUtils.nextInt( 0, 2 )==1 );
obj.setNutzflaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 100, 1000 ) ) );
obj.setObjektzustand( ObjektZustandTyp.NEUWERTIG );
obj.setParkplatz( StellplatzKategorieTyp.TIEFGARAGE );
obj.setRollstuhlgerecht( RandomUtils.nextInt( 0, 2 )==1 );
obj.setVermietet( RandomUtils.nextInt( 0, 2 )==1 );
obj.setWohnflaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 500 ) ) );
obj.setZimmer( BigDecimal.valueOf( RandomUtils.nextDouble( 1, 10 ) ) );
obj.setBefeuerungsArt( FACTORY.createBefeuerungsArtTyp() );
obj.getBefeuerungsArt().setOel( FACTORY.createBefeuerungsArtTypOel( Boolean.TRUE ) );
obj.getBefeuerungsArt().setGas( FACTORY.createBefeuerungsArtTypGas( Boolean.TRUE ) );
obj.setEnergieausweis( FACTORY.createEnergieausweisTyp() );
obj.getEnergieausweis().setEnergieausweistyp( EnergieausweistypTyp.ENERGIEVERBRAUCHSKENNWERT );
obj.getEnergieausweis().setEnergieverbrauchskennwert( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 500 ) ) );
obj.getEnergieausweis().setWarmwasserEnthalten( RandomUtils.nextInt( 0, 2 )==1 );
obj.setKaufpreise( FACTORY.createVermarktungWohnKaufTyp() );
obj.getKaufpreise().setKaufpreis( BigDecimal.valueOf( RandomUtils.nextDouble( 100000, 9999999 ) ) );
obj.getKaufpreise().setMieteinnahmenProMonat( BigDecimal.valueOf( RandomUtils.nextDouble( 5000, 50000 ) ) );
obj.getKaufpreise().setStellplatzKaufpreis( BigDecimal.valueOf( RandomUtils.nextDouble( 1000, 10000 ) ) );
obj.getKaufpreise().setWohngeld( BigDecimal.valueOf( RandomUtils.nextDouble( 500, 5000 ) ) );
return FACTORY.createHausKauf( obj );
}
/**
* Create an {@link HausMiete} with some example data.
*
* @return
* created example object
*/
protected static HausMiete createImmobilieHausMiete()
{
// create an example real estate
HausMiete.Type obj = FACTORY.createHausMieteType();
initImmobilie( obj );
obj.setAnzahlBadezimmer( RandomUtils.nextLong( 1, 5 ) );
obj.setAnzahlGaragenStellplaetze( RandomUtils.nextLong( 0, 3 ) );
obj.setAnzahlSchlafzimmer( RandomUtils.nextLong( 1, 5 ) );
obj.setAusstattungsqualitaet( AusstattungsqualitaetsTyp.GEHOBEN );
obj.setBarrierefrei( RandomUtils.nextInt( 0, 2 )==1 );
obj.setBaujahr( RandomUtils.nextLong( 1900, 2010 ) );
obj.setBetreutesWohnen( RandomUtils.nextInt( 0, 2 )==1 );
obj.setEinbaukueche( RandomUtils.nextInt( 0, 2 )==1);
obj.setEtagenzahl( RandomUtils.nextLong( 1, 10 ) );
obj.setFreiAb( "notes about availability" );
obj.setGaesteWC( RandomUtils.nextInt( 0, 2 )==1);
obj.setGrundstuecksFlaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 100, 1500 ) ) );
obj.setHausKategorie( HausKategorienTyp.EINFAMILIENHAUS );
obj.setHaustiere( GenehmigungTyp.NACH_VEREINBARUNG );
obj.setHeizungsart( HeizungsartTyp.ZENTRALHEIZUNG );
obj.setJahrLetzteModernisierung( RandomUtils.nextLong( 1980, 2000 ) );
obj.setKeller( RandomUtils.nextInt( 0, 2 )==1 );
obj.setNutzflaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 150, 500 ) ) );
obj.setObjektzustand( ObjektZustandTyp.GEPFLEGT );
obj.setParkplatz( StellplatzKategorieTyp.CARPORT );
obj.setRollstuhlgerecht( RandomUtils.nextInt( 0, 2 )==1 );
obj.setWohnflaeche( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 300 ) ) );
obj.setZimmer( BigDecimal.valueOf( RandomUtils.nextDouble( 1, 5 ) ) );
obj.setBefeuerungsArt( FACTORY.createBefeuerungsArtTyp() );
obj.getBefeuerungsArt().setErdwaerme( FACTORY.createBefeuerungsArtTypErdwaerme( Boolean.TRUE ) );
obj.getBefeuerungsArt().setPelletheizung( FACTORY.createBefeuerungsArtTypPelletheizung( Boolean.TRUE ) );
obj.setEnergieausweis( FACTORY.createEnergieausweisTyp() );
obj.getEnergieausweis().setEnergieausweistyp( EnergieausweistypTyp.ENERGIEVERBRAUCHSKENNWERT );
obj.getEnergieausweis().setEnergieverbrauchskennwert( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 500 ) ) );
obj.getEnergieausweis().setWarmwasserEnthalten( RandomUtils.nextInt( 0, 2 )==1 );
obj.setMietpreise( FACTORY.createVermarktungWohnMieteTyp() );
obj.getMietpreise().setHeizkosten( BigDecimal.valueOf( RandomUtils.nextDouble( 100, 500 ) ) );
obj.getMietpreise().setHeizkostenInWarmmieteEnthalten( RandomUtils.nextInt( 0, 2 )==1 );
obj.getMietpreise().setKaltmiete( BigDecimal.valueOf( RandomUtils.nextDouble( 150, 1500 ) ) );
obj.getMietpreise().setKaution( "notes about deposit" );
obj.getMietpreise().setNebenkosten( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 500 ) ) );
obj.getMietpreise().setStellplatzMiete( BigDecimal.valueOf( RandomUtils.nextDouble( 50, 500 ) ) );
obj.getMietpreise().setWarmmiete( BigDecimal.valueOf( RandomUtils.nextDouble( 250, 2500 ) ) );
return FACTORY.createHausMiete( obj );
}
protected static void initImmobilie( ImmobilieBaseTyp immobilie )
{
immobilie.setAdressdruck( RandomUtils.nextInt( 0, 2 )==1 );
immobilie.setAktiveGruppen( "active groups" );
immobilie.setAnbieterObjektID( "123" );
immobilie.setAusstattung( "notes about features" );
immobilie.setGruppierungsID( RandomUtils.nextLong( 1, 9999 ) );
immobilie.setImportmodus( AktionsTyp.AKTUALISIEREN );
immobilie.setLage( "notes about location" );
immobilie.setObjektbeschreibung( "notes about the property" );
immobilie.setProvision( "commission" );
immobilie.setProvisionshinweis( "notes about commission" );
immobilie.setProvisionspflichtig( RandomUtils.nextInt( 0, 2 )==1 );
immobilie.setScoutObjektID( BigInteger.valueOf( 456 ) );
immobilie.setSonstigeAngaben( "further notes" );
immobilie.setStatusHP( StatusTyp.AKTIV );
immobilie.setStatusIS24( StatusTyp.AKTIV );
immobilie.setStatusVBM( StatusTyp.INAKTIV );
immobilie.setUeberschrift( "title of the property" );
immobilie.setWaehrung( WaehrungTyp.EUR );
immobilie.setAdresse( FACTORY.createImmobilienAdresseTyp() );
immobilie.getAdresse().setHausnummer( "1" );
immobilie.getAdresse().setInternationaleRegion( "Berlin" );
immobilie.getAdresse().setLaenderkennzeichen( ISOLaenderCodeTyp.DEU );
immobilie.getAdresse().setOrt( "Berlin" );
immobilie.getAdresse().setPostleitzahl( "12345" );
immobilie.getAdresse().setStrasse( "name of the street" );
immobilie.setApiSuchfelder( FACTORY.createImmobilieBaseTypApiSuchfelder( FACTORY.createApiSuchfelderTyp() ) );
immobilie.getApiSuchfelder().getValue().setApiSuchfeld1( FACTORY.createApiSuchfelderTypApiSuchfeld1( "value1" ) );
immobilie.getApiSuchfelder().getValue().setApiSuchfeld2( FACTORY.createApiSuchfelderTypApiSuchfeld2( "value2" ) );
immobilie.getApiSuchfelder().getValue().setApiSuchfeld3( FACTORY.createApiSuchfelderTypApiSuchfeld3( "value3" ) );
immobilie.setKontaktperson( FACTORY.createKontaktAdresseTyp() );
immobilie.getKontaktperson().setAnrede( "addressing" );
immobilie.getKontaktperson().setEMail( "[email protected]" );
immobilie.getKontaktperson().setHausnummer( "1" );
immobilie.getKontaktperson().setLaenderkennzeichen( ISOLaenderCodeTyp.DEU );
immobilie.getKontaktperson().setMobiltelefon( "030/123456" );
immobilie.getKontaktperson().setNachname( "Mustermann" );
immobilie.getKontaktperson().setOrt( "Berlin" );
immobilie.getKontaktperson().setPostleitzahl( "13125" );
immobilie.getKontaktperson().setStrasse( "name of the street" );
immobilie.getKontaktperson().setTelefax( "030/123457" );
immobilie.getKontaktperson().setTelefon( "030/123458" );
immobilie.getKontaktperson().setVorname( "Max" );
try
{
immobilie.getKontaktperson().setHomepage( new URL( "http://mywebsite.com" ) );
}
catch (MalformedURLException ex)
{}
immobilie.setManuelleGeoCodierung( FACTORY.createManuellGeoCodingTyp() );
immobilie.getManuelleGeoCodierung().setTermsRegion( "name of region" );
immobilie.getManuelleGeoCodierung().setTermsStadt( "name of city" );
immobilie.getManuelleGeoCodierung().setTermsStadtTeil( "name of district" );
}
/**
* Write an {@link Is24XmlDocument} into a {@link File}.
*
* @param doc
* the document to write
*
* @param file
* the file, where the document is written to
*/
protected static void write( Is24XmlDocument doc, File file )
{
LOGGER.info( "writing document" );
try
{
doc.toXml( file, PRETTY_PRINT );
LOGGER.info( "> written to: " + file.getAbsolutePath() );
}
catch (Exception ex)
{
LOGGER.error( "Can't write document into a file!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
}
/**
* Write an {@link Is24XmlDocument} into an {@link OutputStream}.
*
* @param doc
* the document to write
*
* @param output
* the stream, where the document is written to
*/
protected static void write( Is24XmlDocument doc, OutputStream output )
{
LOGGER.info( "writing document" );
try
{
doc.toXml( output, PRETTY_PRINT );
LOGGER.info( "> written to a java.io.OutputStream" );
}
catch (Exception ex)
{
LOGGER.error( "Can't write document into an OutputStream!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
}
/**
* Write an {@link Is24XmlDocument} into a {@link Writer}.
*
* @param doc
* the document to write
*
* @param output
* the writer, where the document is written to
*/
protected static void write( Is24XmlDocument doc, Writer output )
{
LOGGER.info( "writing document" );
try
{
doc.toXml( output, PRETTY_PRINT );
LOGGER.info( "> written to a java.io.Writer" );
}
catch (Exception ex)
{
LOGGER.error( "Can't write document into an OutputStream!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
}
/**
* Write an {@link Is24XmlDocument} into a {@link String} and print the
* results to the console.
*
* @param doc
* the document to write
*/
protected static void writeToConsole( Is24XmlDocument doc )
{
LOGGER.info( "writing document" );
try
{
String xml = doc.toXmlString( PRETTY_PRINT );
LOGGER.info( StringUtils.repeat( "-", 50 )
+ SystemUtils.LINE_SEPARATOR + xml );
}
catch (Exception ex)
{
LOGGER.error( "Can't write document into a string!" );
LOGGER.error( "> " + ex.getLocalizedMessage(), ex );
System.exit( 1 );
}
}
}