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