All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.openestate.io.examples.DaftIeWritingExample 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 java.util.Calendar;
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.daft_ie.DaftIeDocument;
import org.openestate.io.daft_ie.DaftIeUtils;
import org.openestate.io.daft_ie.xml.CommercialType;
import org.openestate.io.daft_ie.xml.Daft;
import org.openestate.io.daft_ie.xml.HouseType;
import org.openestate.io.daft_ie.xml.ObjectFactory;
import org.openestate.io.daft_ie.xml.OverseasRentalAdType;
import org.openestate.io.daft_ie.xml.OverseasSaleAdType;
import org.openestate.io.daft_ie.xml.PropertyType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Example for writing XML files for daft.ie.
 * 

* This example illustrates the programatic creation of documents for * daft.ie and how they are written into XML. * * @since 1.0 * @author Andreas Rudolph */ public class DaftIeWritingExample { private final static Logger LOGGER = LoggerFactory.getLogger( DaftIeWritingExample.class ); private final static String PACKAGE = "/org/openestate/io/examples"; private final static ObjectFactory FACTORY = DaftIeUtils.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( DaftIeWritingExample.class.getResource( PACKAGE + "/log4j.properties" ) ); // create a Daft object with some example data // this object corresponds to the root element in XML Daft daft = FACTORY.createDaft(); // append some example objectss for rent to the Daft object daft.setOverseasRental( FACTORY.createDaftOverseasRental() ); daft.getOverseasRental().getOverseasRentalAd().add( createAdForRent() ); daft.getOverseasRental().getOverseasRentalAd().add( createAdForRent() ); // append some example objectss for sale to the Daft object daft.setOverseasSales( FACTORY.createDaftOverseasSales() ); daft.getOverseasSales().getOverseasSaleAd().add( createAdForSale() ); daft.getOverseasSales().getOverseasSaleAd().add( createAdForSale() ); daft.getOverseasSales().getOverseasSaleAd().add( createAdForSale() ); // convert the Daft object into a XML document DaftIeDocument doc = null; try { doc = DaftIeDocument.newDocument( daft ); } 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 OverseasRentalAdType} with some example data. * * @return * created example object */ protected static OverseasRentalAdType createAdForRent() { // create an example real estate for rent OverseasRentalAdType ad = FACTORY.createOverseasRentalAdType(); ad.setAddress( "Beispielstraße 123"); ad.setAgentId( "123" ); ad.setArea( "Berlin" ); ad.setAvailableFrom( Calendar.getInstance() ); ad.setBathroomNumber( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setBedroomNumber( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setCableTelevision( RandomUtils.nextInt( 0, 2 )==1 ); ad.setCcEmail( "[email protected]" ); ad.setCommercialType( CommercialType.LAND ); ad.setContactName( "Max Mustermann" ); ad.setCountry( "DE" ); ad.setDescription( "A description about the property." ); ad.setDishwasher( RandomUtils.nextInt( 0, 2 )==1 ); ad.setDoubleBeds( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setDryer( RandomUtils.nextInt( 0, 2 )==1 ); ad.setExternalId( String.valueOf( RandomUtils.nextInt( 1, 1000 ) ) ); ad.setFurnished( OverseasRentalAdType.Furnished.FURNISHED ); ad.setHouseType( HouseType.TOWNHOUSE ); ad.setLease( BigInteger.valueOf( RandomUtils.nextInt( 100, 1000 ) ) ); ad.setMainEmail( "[email protected]" ); ad.setMicrowave( RandomUtils.nextInt( 0, 2 )==1 ); ad.setNumberPeople( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setPhone1( "030/123456" ); ad.setPhone2( "030/123457" ); ad.setPhoneInfo( "Some information about contacts via phone." ); ad.setPropertyType( PropertyType.HOUSE ); ad.setRegion( "Berlin" ); ad.setRent( BigInteger.valueOf( RandomUtils.nextInt( 100, 1000 ) ) ); ad.setRentCollectionPeriod( OverseasRentalAdType.RentPeriod.MONTHLY ); ad.setSingleBeds( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setTwinBeds( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setWashingMachine( RandomUtils.nextInt( 0, 2 )==1 ); // add some features ad.setFeatures( FACTORY.createFeaturesType() ); ad.getFeatures().getFeature().add( "another feature" ); ad.getFeatures().getFeature().add( "some more feature" ); // add some photos ad.setPhotos( FACTORY.createPhotosType() ); try { ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image1.jpg" ) ); ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image2.jpg" ) ); ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image3.jpg" ) ); } catch (MalformedURLException ex) { } return ad; } /** * Create an {@link OverseasRentalAdType} with some example data. * * @return * created example object */ protected static OverseasSaleAdType createAdForSale() { // create an example real estate for sale OverseasSaleAdType ad = FACTORY.createOverseasSaleAdType(); ad.setAcres( BigDecimal.valueOf( RandomUtils.nextDouble( 10, 1000 ) ) ); ad.setAddress( "Beispielstraße 123"); ad.setAgentId( "123" ); ad.setArea( "Berlin" ); ad.setBathroomNumber( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setBedroomNumber( BigInteger.valueOf( RandomUtils.nextInt( 0, 5 ) ) ); ad.setCcEmail( "[email protected]" ); ad.setCo2Rating( "some notes about CO2 rating" ); ad.setCommercialType( CommercialType.SHOP ); ad.setContactName( "Max Mustermann" ); ad.setCountry( "DE" ); ad.setDescription( "A description about the property." ); ad.setDirections( "some notes about directions" ); ad.setEnergyRating( "some notes about energy rating" ); ad.setExternalId( String.valueOf( RandomUtils.nextInt( 1, 1000 ) ) ); ad.setHouseType( HouseType.DETACHED ); ad.setIsNewDevelopment( RandomUtils.nextInt( 0, 2 )==1 ); ad.setMainEmail( "[email protected]" ); ad.setNewDevelopmentAvailability( "some notes about development" ); ad.setPhone1( "030/123456" ); ad.setPhone2( "030/123457" ); ad.setPhoneInfo( "Some information about contacts via phone." ); ad.setPrice( BigInteger.valueOf( RandomUtils.nextInt( 100, 1000000 ) ) ); ad.setPriceType( OverseasSaleAdType.PriceType.REGION ); ad.setPropertyStatus( OverseasSaleAdType.PropertyStatus.FOR_SALE ); ad.setPropertyType( PropertyType.HOUSE ); ad.setRegion( "Berlin" ); ad.setSquareMetres( BigDecimal.valueOf( RandomUtils.nextDouble( 10, 1000 ) ) ); ad.setUnitsAvailable( BigInteger.valueOf( RandomUtils.nextInt( 1, 50 ) ) ); ad.setViewingDetails( "some notes about viewing details" ); // add some features ad.setFeatures( FACTORY.createFeaturesType() ); ad.getFeatures().getFeature().add( "another feature" ); ad.getFeatures().getFeature().add( "some more feature" ); // add some pdf documents ad.setPdfs( FACTORY.createPdfsType() ); try { ad.getPdfs().getPdf().add( new URL( "http://www.mywebsite.org/document1.pdf" ) ); ad.getPdfs().getPdf().add( new URL( "http://www.mywebsite.org/document2.pdf" ) ); } catch (MalformedURLException ex) { } // add some photos ad.setPhotos( FACTORY.createPhotosType() ); try { ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image1.jpg" ) ); ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image2.jpg" ) ); ad.getPhotos().getPhoto().add( new URL( "http://www.mywebsite.org/image3.jpg" ) ); } catch (MalformedURLException ex) { } return ad; } /** * Write a {@link DaftIeDocument} into a {@link File}. * * @param doc * the document to write * * @param file * the file, where the document is written to */ protected static void write( DaftIeDocument doc, File file ) { LOGGER.info( "writing document with version " + doc.getDocumentVersion() ); 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 a {@link DaftIeDocument} into an {@link OutputStream}. * * @param doc * the document to write * * @param output * the stream, where the document is written to */ protected static void write( DaftIeDocument doc, OutputStream output ) { LOGGER.info( "writing document with version " + doc.getDocumentVersion() ); 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 a {@link DaftIeDocument} into a {@link Writer}. * * @param doc * the document to write * * @param output * the writer, where the document is written to */ protected static void write( DaftIeDocument doc, Writer output ) { LOGGER.info( "writing document with version " + doc.getDocumentVersion() ); 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 a {@link DaftIeDocument} into a {@link String} and print the * results to the console. * * @param doc * the document to write */ protected static void writeToConsole( DaftIeDocument doc ) { LOGGER.info( "writing document with version " + doc.getDocumentVersion() ); 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 ); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy