001    /*----------------    FILE HEADER  ------------------------------------------
002    
003     This file is part of deegree.
004     Copyright (C) 2001-2008 by:
005     EXSE, Department of Geography, University of Bonn
006     http://www.giub.uni-bonn.de/deegree/
007     lat/lon GmbH
008     http://www.lat-lon.de
009    
010     This library is free software; you can redistribute it and/or
011     modify it under the terms of the GNU Lesser General Public
012     License as published by the Free Software Foundation; either
013     version 2.1 of the License, or (at your option) any later version.
014    
015     This library is distributed in the hope that it will be useful,
016     but WITHOUT ANY WARRANTY; without even the implied warranty of
017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
018     Lesser General Public License for more details.
019    
020     You should have received a copy of the GNU Lesser General Public
021     License along with this library; if not, write to the Free Software
022     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
023    
024     Contact:
025    
026     Andreas Poth
027     lat/lon GmbH
028     Aennchenstr. 19
029     53115 Bonn
030     Germany
031     E-Mail: poth@lat-lon.de
032    
033     Prof. Dr. Klaus Greve
034     Department of Geography
035     University of Bonn
036     Meckenheimer Allee 166
037     53115 Bonn
038     Germany
039     E-Mail: greve@giub.uni-bonn.de
040    
041     
042     ---------------------------------------------------------------------------*/
043    package org.deegree.tools.importer;
044    
045    import java.io.BufferedOutputStream;
046    import java.io.File;
047    import java.io.FileOutputStream;
048    import java.io.IOException;
049    import java.util.ArrayList;
050    
051    import org.deegree.framework.log.ILogger;
052    import org.deegree.framework.log.LoggerFactory;
053    
054    
055    
056    /**
057     * 
058     * The <code>FileExporter</code> writes a new file.
059     * 
060     * @author <a href="mailto:buesching@lat-lon.de">Lyn Buesching</a>
061     * @author last edited by: $Author: buesching $
062     * 
063     * @version $Revision: 1.1 $, $Date: 2007-10-10 14:21:26 $
064     * 
065     */
066    public class FileExporter implements Exporter {
067    
068        private static final ILogger LOG = LoggerFactory.getLogger( FileExporter.class );
069        
070        /**
071         * @param objectToExport    contains a ListArray of objects, 
072         *          where the first object contains an Array of bytes to 
073         *          export and the second object the information 
074         *          of the target to export  
075         * @return true, when expor is successful; otherwise false
076         */
077        public boolean export( Object objectToExport ) {
078            Boolean result = false;
079            byte[] byteArray = (byte[]) ((ArrayList<Object>) objectToExport).get( 0 );
080            String target = (String) ((ArrayList<Object>) objectToExport).get( 1 );
081            LOG.logInfo( Messages.getString("FileExporter.EXPORT", target) );
082            File file = new File( target );
083            if ( !file.exists() ) {
084                try {
085                    FileOutputStream fileOS = new FileOutputStream( file );
086                    BufferedOutputStream bufferedOS = new BufferedOutputStream( fileOS );
087                    bufferedOS.write( byteArray, 0, byteArray.length );
088                    bufferedOS.close();
089                    fileOS.close();
090                    result = true;
091                } catch ( IOException e ) {
092                    LOG.logError( Messages.getString("FileExporter.ERROR_WRITE_FILE", target, e.getMessage() ) );
093                    e.printStackTrace();
094                }
095            } else {
096                LOG.logInfo( Messages.getString("FileExporter.ERROR_EXPORT_FILE", target) );
097            }
098            return result;
099        }
100    
101    }