src/core/net/sf/basedb/util/bfs/GenericDiskDataWriterFactory.java

Code
Comments
Other
Rev Date Author Line
5198 15 Dec 09 nicklas 1 /**
5198 15 Dec 09 nicklas 2   $Id$
5198 15 Dec 09 nicklas 3
5198 15 Dec 09 nicklas 4   Copyright (C) 2009 Nicklas Nordborg
5198 15 Dec 09 nicklas 5
5198 15 Dec 09 nicklas 6   This file is part of BASE - BioArray Software Environment.
5198 15 Dec 09 nicklas 7   Available at http://base.thep.lu.se/
5198 15 Dec 09 nicklas 8
5198 15 Dec 09 nicklas 9   BASE is free software; you can redistribute it and/or
5198 15 Dec 09 nicklas 10   modify it under the terms of the GNU General Public License
5198 15 Dec 09 nicklas 11   as published by the Free Software Foundation; either version 3
5198 15 Dec 09 nicklas 12   of the License, or (at your option) any later version.
5198 15 Dec 09 nicklas 13
5198 15 Dec 09 nicklas 14   BASE is distributed in the hope that it will be useful,
5198 15 Dec 09 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
5198 15 Dec 09 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5198 15 Dec 09 nicklas 17   GNU General Public License for more details.
5198 15 Dec 09 nicklas 18
5198 15 Dec 09 nicklas 19   You should have received a copy of the GNU General Public License
5198 15 Dec 09 nicklas 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5198 15 Dec 09 nicklas 21 */
5198 15 Dec 09 nicklas 22 package net.sf.basedb.util.bfs;
5198 15 Dec 09 nicklas 23
5198 15 Dec 09 nicklas 24 import java.io.FileNotFoundException;
5198 15 Dec 09 nicklas 25 import java.io.FileOutputStream;
5198 15 Dec 09 nicklas 26 import java.io.IOException;
5198 15 Dec 09 nicklas 27 import java.io.OutputStream;
5198 15 Dec 09 nicklas 28
5198 15 Dec 09 nicklas 29 /**
5198 15 Dec 09 nicklas 30   Generic implementation of a data writer factory that create
5198 15 Dec 09 nicklas 31   files on the local file system. The default file name generation
5198 15 Dec 09 nicklas 32   will generate file names of the form 'sdata-1.txt', 'sdata-2.txt',
5198 15 Dec 09 nicklas 33   and so on.
5198 15 Dec 09 nicklas 34   
5198 15 Dec 09 nicklas 35   @author Nicklas
5198 15 Dec 09 nicklas 36   @version 2.15
5198 15 Dec 09 nicklas 37   @base.modified $Date$
5198 15 Dec 09 nicklas 38 */
5198 15 Dec 09 nicklas 39 public class GenericDiskDataWriterFactory<T>
5198 15 Dec 09 nicklas 40   extends AbstractDataWriterFactory<T>
5198 15 Dec 09 nicklas 41 {
5198 15 Dec 09 nicklas 42
5198 15 Dec 09 nicklas 43   private final java.io.File dir;
5198 15 Dec 09 nicklas 44   
5198 15 Dec 09 nicklas 45   /**
5198 15 Dec 09 nicklas 46     Create a new factory that creates files in the given
5198 15 Dec 09 nicklas 47     directory. The directory should already exist.
5198 15 Dec 09 nicklas 48     @param dir The directory to create files in
5198 15 Dec 09 nicklas 49     @throws NullPointerException If the dir parameter is null
5198 15 Dec 09 nicklas 50     @throws FileNotFoundException If the given path is not an existing directory
5198 15 Dec 09 nicklas 51   */
5212 12 Jan 10 nicklas 52   public GenericDiskDataWriterFactory(java.io.File dir, FilenameGenerator<T> filenameGenerator)
5198 15 Dec 09 nicklas 53     throws IOException
5198 15 Dec 09 nicklas 54   {
5212 12 Jan 10 nicklas 55     super(filenameGenerator);
5198 15 Dec 09 nicklas 56     if (dir == null) throw new NullPointerException("dir");
5198 15 Dec 09 nicklas 57     if (!dir.isDirectory()) throw new FileNotFoundException(dir.toString());
5198 15 Dec 09 nicklas 58     this.dir = dir;
5198 15 Dec 09 nicklas 59   }
5198 15 Dec 09 nicklas 60   
5198 15 Dec 09 nicklas 61   /**
5198 15 Dec 09 nicklas 62     Create a new file in the data directory with the given file
5198 15 Dec 09 nicklas 63     name.
5198 15 Dec 09 nicklas 64     @throws IOException If the file already exists or if it can't
5198 15 Dec 09 nicklas 65       be created
5198 15 Dec 09 nicklas 66   */
5198 15 Dec 09 nicklas 67   @Override
5198 15 Dec 09 nicklas 68   protected OutputStream getOutputStream(String filename) 
5198 15 Dec 09 nicklas 69     throws IOException
5198 15 Dec 09 nicklas 70   {
5198 15 Dec 09 nicklas 71     java.io.File file = new java.io.File(dir, filename);
5198 15 Dec 09 nicklas 72     if (file.exists()) throw new IOException("File exists: " + file);
5198 15 Dec 09 nicklas 73     return new FileOutputStream(file);
5198 15 Dec 09 nicklas 74   }
5198 15 Dec 09 nicklas 75 }