001: /*
002: * This file is part of PFIXCORE.
003: *
004: * PFIXCORE is free software; you can redistribute it and/or modify
005: * it under the terms of the GNU Lesser General Public License as published by
006: * the Free Software Foundation; either version 2 of the License, or
007: * (at your option) any later version.
008: *
009: * PFIXCORE is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU Lesser General Public License for more details.
013: *
014: * You should have received a copy of the GNU Lesser General Public License
015: * along with PFIXCORE; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017: */
018:
019: package de.schlund.pfixcore.editor2.core.spring;
020:
021: import java.io.File;
022: import java.io.FileNotFoundException;
023: import java.io.IOException;
024:
025: import javax.xml.parsers.ParserConfigurationException;
026:
027: import org.w3c.dom.Document;
028: import org.xml.sax.SAXException;
029:
030: import de.schlund.pfixcore.editor2.core.exception.EditorIOException;
031:
032: /**
033: * Provides methods to access files on the filesystem.
034: *
035: * @author Sebastian Marsching <sebastian.marsching@1und1.de>
036: */
037: public interface FileSystemService {
038: /**
039: * Returns lock object for the specified file. Code that does any operations
040: * one file should synchronize on the lock object to make sure no other
041: * threads is attempting to access the file concurrently.
042: *
043: * @param file
044: * File get lock object for
045: */
046: public Object getLock(File file);
047:
048: /**
049: * Returns a DOM document which represents the XML content of the file.
050: *
051: * @param file
052: * File to read
053: * @return DOM Document with the content of the file
054: * @throws IOExceptionParserConfigurationException
055: * @throws SAXException
056: * @throws ParserConfigurationException
057: * @throws IOException
058: * @t
059: * @throws ParserConfigurationException
060: * hrows FileNotFoundExceptio, n
061: */
062: public Document readXMLDocumentFromFile(File file)
063: throws FileNotFoundException, SAXException, IOException;
064:
065: /**
066: * Stores DOM document to file. If file is not yet existing, it is created,
067: * otherwise it is overwritten.
068: *
069: * @param file
070: * File to write
071: * @param document
072: * DOM document containing all data that will be written to the
073: * file.
074: * @throws IOException
075: */
076: public void storeXMLDocumentToFile(File file, Document document)
077: throws IOException;
078:
079: /**
080: * Creates a directory on the filesystem
081: *
082: * @param directory
083: * Path to the directory to create
084: * @param makeParentDirectories
085: * Set to <code>true</code> to create parent directories, if
086: * necessary
087: * @throws EditorIOException
088: */
089: public void makeDirectory(File directory,
090: boolean makeParentDirectories) throws EditorIOException;
091:
092: /**
093: * Copies a file
094: *
095: * @param source
096: * File to read from
097: * @param target
098: * File to write in
099: * @throws EditorIOException
100: * If an I/O errors occurs during the copying process
101: */
102: public void copy(File source, File target) throws EditorIOException;
103: }
|