001package co.codewizards.cloudstore.core.oio;
002
003import static co.codewizards.cloudstore.core.util.AssertUtil.*;
004
005import java.io.IOException;
006import java.net.URI;
007
008
009/**
010 * @author Sebastian Schefczyk
011 *
012 */
013public class OioFileFactory {
014
015        public static final String FILE_SEPARATOR = java.io.File.separator;
016
017        public static final char FILE_SEPARATOR_CHAR = java.io.File.separatorChar;
018
019
020        /** Factory method, substitutes the constructor of {@link java.io.File}. */
021        public static File createFile(final String pathname) {
022                return OioRegistry.getInstance().getFileFactory().createFile(pathname);
023        }
024
025        /** Factory method, substitutes the constructor of {@link java.io.File}. */
026        public static File createFile(final String parent, final String ... children) {
027                assertNotNull(parent, "parent");
028
029                final FileFactory fileFactory = OioRegistry.getInstance().getFileFactory();
030                File result = null;
031                if (children != null) {
032                        for (final String child : children) {
033                                if (result == null)
034                                        result = fileFactory.createFile(parent, child);
035                                else
036                                        result = fileFactory.createFile(result, child);
037                        }
038                }
039
040                if (result == null)
041                        result = createFile(parent);
042
043                return result;
044        }
045
046        /** Factory method, substitutes the constructor of {@link java.io.File}. */
047        public static File createFile(final File parent, final String ... children) {
048                assertNotNull(parent, "parent");
049
050                final FileFactory fileFactory = OioRegistry.getInstance().getFileFactory();
051                File result = parent;
052                if (children != null) {
053                        for (final String child : children)
054                                result = fileFactory.createFile(result, child);
055                }
056                return result;
057        }
058
059        /** Factory method, substitutes the constructor of {@link java.io.File}. */
060        public static File createFile(final java.io.File file) {
061                return OioRegistry.getInstance().getFileFactory().createFile(file);
062        }
063
064        /** Factory method, substitutes the constructor of {@link java.io.File}. */
065        public static File createFile(final URI uri) {
066                return OioRegistry.getInstance().getFileFactory().createFile(uri);
067        }
068
069        /** Creates a temporary directory. */
070        public static File createTempDirectory(final String prefix) throws IOException {
071                return OioRegistry.getInstance().getFileFactory().createTempDirectory(prefix);
072        }
073
074        /** Creates a temporary file. */
075        public static File createTempFile(final String prefix, final String suffix) throws IOException {
076                return OioRegistry.getInstance().getFileFactory().createTempFile(prefix, suffix);
077        }
078        /** Creates a temporary file within specified parent directory. */
079        public static File createTempFile(final String prefix, final String suffix, final File dir) throws IOException {
080                return OioRegistry.getInstance().getFileFactory().createTempFile(prefix, suffix, dir);
081        }
082
083        /**
084         * Lists the file system roots (wraps {@link java.io.File#listRoots()}).
085         * @return the file system roots. Never <code>null</code>.
086         */
087        public static File[] listRootFiles() {
088                return OioRegistry.getInstance().getFileFactory().listRootFiles();
089        }
090}