Example usage for org.apache.commons.vfs FileObject getContent

List of usage examples for org.apache.commons.vfs FileObject getContent

Introduction

In this page you can find the example usage for org.apache.commons.vfs FileObject getContent.

Prototype

public FileContent getContent() throws FileSystemException;

Source Link

Document

Returns this file's content.

Usage

From source file:com.github.lucapino.sheetmaker.parsers.mediainfo.MediaInfoRetriever.java

@Override
public MovieInfo getMovieInfo(String filePath) {
    MediaInfo mediaInfo = new MediaInfo();
    String fileToParse = filePath;
    // test if we have iso
    if (filePath.toLowerCase().endsWith("iso")) {
        // open iso and parse the ifo files
        Map<Integer, String> ifoFiles = new TreeMap<>();
        try {//w ww  . j av  a 2s . c o m
            FileSystemManager fsManager = VFS.getManager();
            FileObject fo = fsManager.resolveFile("iso:" + filePath + "!/");
            // create an ifo file selector
            FileSelector ifoFs = new FileFilterSelector(new FileFilter() {

                @Override
                public boolean accept(FileSelectInfo fsi) {
                    return fsi.getFile().getName().getBaseName().toLowerCase().endsWith("ifo");
                }
            });
            FileObject[] files = fo.getChild("VIDEO_TS").findFiles(ifoFs);
            for (FileObject file : files) {
                File tmpFile = new File(
                        System.getProperty("java.io.tmpdir") + File.separator + file.getName().getBaseName());
                System.out.println(file.getName().getBaseName());
                IOUtils.copy(file.getContent().getInputStream(), new FileOutputStream(tmpFile));
                mediaInfo.Open(tmpFile.getAbsolutePath());
                String format = mediaInfo.Get(MediaInfo.StreamKind.General, 0, "Format_Profile",
                        MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
                System.out.println("Format profile: " + format);
                // if format is "Program" -> it's a video file
                if (format.equalsIgnoreCase("program")) {
                    String duration = mediaInfo.Get(MediaInfo.StreamKind.General, 0, "Duration",
                            MediaInfo.InfoKind.Text, MediaInfo.InfoKind.Name);
                    System.out.println("Duration: " + duration);
                    ifoFiles.put(Integer.valueOf(duration), tmpFile.getName());
                }
                mediaInfo.Close();
            }
            if (!ifoFiles.isEmpty()) {
                if (ifoFiles.size() == 1) {
                    fileToParse = ifoFiles.values().iterator().next();
                } else {
                    // get the last entry -> the bigger one
                    Set<Integer> keys = ifoFiles.keySet();
                    Iterator<Integer> iterator = keys.iterator();
                    for (int i = 0; i < keys.size(); i++) {
                        String fileName = ifoFiles.get(iterator.next());
                        if (i == keys.size() - 1) {
                            fileToParse = fileName;
                        } else {
                            new File(fileName).delete();
                        }
                    }
                }
            }
        } catch (IOException | NumberFormatException ex) {

        }
    }
    // here fileToParse is correct
    mediaInfo.Open(fileToParse);
    System.out.println(mediaInfo.Inform());

    return new MovieInfoImpl(mediaInfo, filePath);
}

From source file:com.pongasoft.kiwidoc.builder.KiwidocBuilder.java

/**
 * Builds the kiwidoc for the given library
 *
 * @param library (optional, <code>null</code> ok) dependencies
 * @return the model builder/*from  w  w w  .  jav  a 2  s.  c o m*/
 * @throws BuilderException when there is a problem indexing
 */
public LibraryModelBuilder buildKiwidoc(Library library) throws IOException, BuilderException {
    Set<BuiltFrom> builtFrom = EnumSet.noneOf(BuiltFrom.class);
    Manifest manifest = null;

    LibraryModelBuilder libFromByteCode = null;

    // if we have the library itself (jar file)
    if (library.classes != null) {
        builtFrom.add(BuiltFrom.BYTECODE);

        // manifest
        FileObject manifestResource = library.classes.resolveFile("META-INF/MANIFEST.MF");
        if (manifestResource.exists()) {
            manifest = new Manifest();
            InputStream is = manifestResource.getContent().getInputStream();
            try {
                manifest.read(new BufferedInputStream(is));
            } finally {
                is.close();
            }
        }

        // byte code
        libFromByteCode = new LibraryModelBuilder(library.libraryVersionResource);
        new ByteCodeParser().parseClasses(libFromByteCode, library.classes);
    }

    LibraryModelBuilder libFromSource = null;
    // if we have the source code
    if (library.sources != null) {
        try {
            libFromSource = new LibraryModelBuilder(library.libraryVersionResource);
            if (libFromByteCode != null)
                libFromSource.setJdkVersion(libFromByteCode.getJdkVersion());
            else
                libFromSource.setJdkVersion(library.jdkVersion);

            int sourceCount = new SourceCodeParser().parseSources(libFromSource, library.sources,
                    library.overviewFilename, library.publicOnly ? library.javadoc : null, library.classpath);

            if (sourceCount == 0) {
                libFromSource = null;
                log.warn("No sources found in " + library.sources);
            } else {
                builtFrom.add(BuiltFrom.SOURCE);
            }
        } catch (IOException e) {
            throw e;
        } catch (Throwable th) {
            throw new BuilderException(th);
        }
    }

    // compute which version to use (source code wins if available)
    LibraryModelBuilder lib = new LibraryModelBuilder(library.libraryVersionResource);

    if (libFromByteCode != null) {
        lib = libFromByteCode;
    }

    if (libFromSource != null) {
        lib = libFromSource;
    }

    log.info("Processed source|bytecode: " + (libFromSource == null ? "N/A" : libFromSource.getClassCount())
            + " | " + (libFromByteCode == null ? "N/A" : libFromByteCode.getClassCount()));

    // TODO MED YP: use byte code for resolving unresolved types during javadoc processing  

    // if we have the original javadoc (used for determining exported classes)
    if (library.javadoc != null) {
        builtFrom.add(BuiltFrom.JAVADOC);

        for (PackageModelBuilder packageModelBuilder : lib.getAllPackages()) {
            for (ClassModelBuilder classModelBuilder : packageModelBuilder.getAllClasses()) {
                String javadocFile = classModelBuilder.getFqcn();
                javadocFile = javadocFile.replace('.', '/');
                javadocFile = javadocFile.replace('$', '.'); // for inner classes
                javadocFile += ".html";

                try {
                    classModelBuilder.setExportedClass(
                            library.javadoc.resolveFile(javadocFile, NameScope.DESCENDENT).exists());
                } catch (FileSystemException e) {
                    log.warn("Error while setting exported class on " + javadocFile + " ["
                            + classModelBuilder.getFqcn() + "]", e);
                }
            }
        }
    }

    // dependencies
    lib.setDependencies(library.dependencies);

    // manifest
    lib.setManifest(manifest);

    // built from
    lib.addBuiltFrom(builtFrom);

    return lib;
}

From source file:com.rapleaf.ramhdfs.RamFileSystem.java

@Override
public FSDataOutputStream create(Path f, FsPermission permission, boolean overwrite, int bufferSize,
        short replication, long blockSize, Progressable progress) throws IOException {
    if (exists(f) && !overwrite) {
        throw new IOException("File already exists:" + f);
    }//from   ww w  .  j a  v  a 2s  .  co  m
    Path parent = f.getParent();
    if (parent != null && !mkdirs(parent)) {
        throw new IOException("Mkdirs failed to create " + parent.toString());
    }
    FileObject fo = pathToFileObject(f);
    fo.createFile();
    fo.getContent().setLastModifiedTime(System.currentTimeMillis());
    setPermission(f, permission);
    return new FSDataOutputStream(new BufferedOutputStream(new RamFSOutputStream(fo), bufferSize), statistics);
}

From source file:com.github.stephenc.javaisotools.iso9660.impl.CreateISOTest.java

@Test
public void canCreateAnIsoWithSomeFiles() throws Exception {
    // Output file
    File outfile = new File(workDir, "test.iso");
    File contentsA = new File(workDir, "a.txt");
    OutputStream os = new FileOutputStream(contentsA);
    IOUtil.copy("Hello", os);
    IOUtil.close(os);//  w  ww.  j av a  2s.co m
    File contentsB = new File(workDir, "b.txt");
    os = new FileOutputStream(contentsB);
    IOUtil.copy("Goodbye", os);
    IOUtil.close(os);

    // Directory hierarchy, starting from the root
    ISO9660RootDirectory.MOVED_DIRECTORIES_STORE_NAME = "rr_moved";
    ISO9660RootDirectory root = new ISO9660RootDirectory();

    ISO9660Directory dir = root.addDirectory("root");
    dir.addFile(contentsA);
    dir.addFile(contentsB);

    StreamHandler streamHandler = new ISOImageFileHandler(outfile);
    CreateISO iso = new CreateISO(streamHandler, root);
    ISO9660Config iso9660Config = new ISO9660Config();
    iso9660Config.allowASCII(false);
    iso9660Config.setInterchangeLevel(2);
    iso9660Config.restrictDirDepthTo8(true);
    iso9660Config.setVolumeID("ISO Test");
    iso9660Config.forceDotDelimiter(true);
    RockRidgeConfig rrConfig = new RockRidgeConfig();
    rrConfig.setMkisofsCompatibility(true);
    rrConfig.hideMovedDirectoriesStore(true);
    rrConfig.forcePortableFilenameCharacterSet(true);

    JolietConfig jolietConfig = new JolietConfig();
    jolietConfig.setVolumeID("Joliet Test");
    jolietConfig.forceDotDelimiter(true);

    iso.process(iso9660Config, rrConfig, jolietConfig, null);

    assertThat(outfile.isFile(), is(true));
    assertThat(outfile.length(), not(is(0L)));

    FileSystemManager fsManager = VFS.getManager();
    FileObject isoFile = fsManager.resolveFile("iso:" + outfile.getPath() + "!/root");

    FileObject t = isoFile.getChild("a.txt");
    assertThat(t, CoreMatchers.<Object>notNullValue());
    assertThat(t.getType(), is(FileType.FILE));
    assertThat(t.getContent().getSize(), is(5L));
    assertThat(IOUtil.toString(t.getContent().getInputStream()), is("Hello"));
    t = isoFile.getChild("b.txt");
    assertThat(t, CoreMatchers.<Object>notNullValue());
    assertThat(t.getType(), is(FileType.FILE));
    assertThat(t.getContent().getSize(), is(7L));
    assertThat(IOUtil.toString(t.getContent().getInputStream()), is("Goodbye"));
}

From source file:com.github.stephenc.javaisotools.iso9660.impl.CreateISOTest.java

@Test
public void canCreateAnIsoWithLoadsOfFiles() throws Exception {
    final int numFiles = entropy.nextInt(50) + 50;
    // Output file
    File outfile = new File(workDir, "big.iso");
    File rootDir = new File(workDir, "big");
    assertThat(rootDir.isDirectory() || rootDir.mkdirs(), is(true));

    // Directory hierarchy, starting from the root
    ISO9660RootDirectory.MOVED_DIRECTORIES_STORE_NAME = "rr_moved";
    ISO9660RootDirectory root = new ISO9660RootDirectory();
    for (int i = 0; i < numFiles; i++) {
        File content = new File(rootDir, Integer.toString(i) + ".bin");
        int length = entropy.nextInt(1024 * 10 + 1);
        byte[] contents = new byte[length];
        entropy.nextBytes(contents);//from  w ww. ja  v a 2 s .c  o m
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(content);
            fos.write(contents);
        } finally {
            IOUtil.close(fos);
        }
        root.addFile(content);
    }

    StreamHandler streamHandler = new ISOImageFileHandler(outfile);
    CreateISO iso = new CreateISO(streamHandler, root);
    ISO9660Config iso9660Config = new ISO9660Config();
    iso9660Config.allowASCII(false);
    iso9660Config.setInterchangeLevel(2);
    iso9660Config.restrictDirDepthTo8(true);
    iso9660Config.setVolumeID("ISO Test");
    iso9660Config.forceDotDelimiter(true);
    RockRidgeConfig rrConfig = new RockRidgeConfig();
    rrConfig.setMkisofsCompatibility(true);
    rrConfig.hideMovedDirectoriesStore(true);
    rrConfig.forcePortableFilenameCharacterSet(true);

    JolietConfig jolietConfig = new JolietConfig();
    jolietConfig.setVolumeID("Joliet Test");
    jolietConfig.forceDotDelimiter(true);

    iso.process(iso9660Config, rrConfig, jolietConfig, null);

    assertThat(outfile.isFile(), is(true));
    assertThat(outfile.length(), not(is(0L)));

    FileSystemManager fsManager = VFS.getManager();
    for (int i = 0; i < numFiles; i++) {
        File content = new File(rootDir, Integer.toString(i) + ".bin");
        FileObject t = fsManager.resolveFile("iso:" + outfile.getPath() + "!/" + Integer.toString(i) + ".bin");
        assertThat(t, CoreMatchers.<Object>notNullValue());
        assertThat(t.getType(), is(FileType.FILE));
        assertThat(t.getContent().getSize(), is(content.length()));
        assertThat(IOUtil.toByteArray(t.getContent().getInputStream()),
                is(IOUtil.toByteArray(new FileInputStream(content))));
    }
}

From source file:be.ibridge.kettle.trans.step.sortrows.SortRows.java

private boolean addBuffer(Row r) {
    if (r != null) {
        data.buffer.add(r); // Save row
    }//from w  w w . jav a2 s .co m
    if (data.files.size() == 0 && r == null) // No more records: sort buffer
    {
        quickSort(data.buffer);
    }

    // time to write to disk: buffer is full!
    if (data.buffer.size() == meta.getSortSize() // Buffer is full: sort & dump to disk 
            || (data.files.size() > 0 && r == null && data.buffer.size() > 0) // No more records: join from disk 
    ) {
        // First sort the rows in buffer[]
        quickSort(data.buffer);

        // Then write them to disk...
        DataOutputStream dos;
        GZIPOutputStream gzos;
        int p;

        try {
            FileObject fileObject = KettleVFS.createTempFile(meta.getPrefix(), ".tmp",
                    StringUtil.environmentSubstitute(meta.getDirectory()));

            data.files.add(fileObject); // Remember the files!
            OutputStream outputStream = fileObject.getContent().getOutputStream();
            if (meta.getCompress()) {
                gzos = new GZIPOutputStream(new BufferedOutputStream(outputStream));
                dos = new DataOutputStream(gzos);
            } else {
                dos = new DataOutputStream(outputStream);
                gzos = null;
            }

            // How many records do we have?
            dos.writeInt(data.buffer.size());

            for (p = 0; p < data.buffer.size(); p++) {
                if (p == 0) {
                    // Save the metadata, keep it in memory
                    data.rowMeta.add(new Row(((Row) data.buffer.get(p))));
                }
                // Just write the data, nothing else
                ((Row) data.buffer.get(p)).writeData(dos);
            }
            // Close temp-file
            dos.close(); // close data stream
            if (gzos != null) {
                gzos.close(); // close gzip stream
            }
            outputStream.close(); // close file stream
        } catch (Exception e) {
            logError("Error processing temp-file: " + e.toString());
            return false;
        }

        data.buffer.clear();
    }

    return true;
}

From source file:egovframework.rte.fdl.filehandling.FilehandlingServiceTest.java

@Test
public void testCaching3() throws Exception {
    FileSystemManager manager = VFS.getManager();
    String testFolder = "d:/workspace/java/e-gov/eGovFramework/RTE/DEV/trunk/Foundation/egovframework.rte.fdl.filehandling/test";
    FileObject scratchFolder = manager.resolveFile(testFolder);

    // releaseable
    FileObject dir1 = scratchFolder.resolveFile("file1.txt");

    // avoid cache removal
    FileObject dir2 = scratchFolder.resolveFile("file2.txt");
    dir2.getContent();

    // check if the cache still holds the right instance
    FileObject dir2_2 = scratchFolder.resolveFile("file2.txt");
    assertTrue(dir2 == dir2_2);/*from  w ww  . j  a  v  a  2  s.c  o m*/

    // check if the cache still holds the right instance
    /* FileObject dir1_2 = scratchFolder.resolveFile("file1.txt");
     assertFalse(dir1 == dir1_2);*/
}

From source file:be.ibridge.kettle.trans.step.sortrows.SortRows.java

private Row getBuffer() {
    int i, f;//from  ww  w.  j  ava  2s .  c  om
    int smallest;
    Row r1, r2;
    Row retval;

    // Open all files at once and read one row from each file...
    if (data.files.size() > 0 && (data.dis.size() == 0 || data.fis.size() == 0)) {
        logBasic("Opening " + data.files.size() + " tmp-files...");

        try {
            for (f = 0; f < data.files.size() && !isStopped(); f++) {
                FileObject fileObject = (FileObject) data.files.get(f);
                String filename = KettleVFS.getFilename(fileObject);
                if (log.isDetailed())
                    logDetailed("Opening tmp-file: [" + filename + "]");
                InputStream fi = fileObject.getContent().getInputStream();
                DataInputStream di;
                data.fis.add(fi);
                if (meta.getCompress()) {
                    GZIPInputStream gzfi = new GZIPInputStream(new BufferedInputStream(fi));
                    di = new DataInputStream(gzfi);
                    data.gzis.add(gzfi);
                } else {
                    di = new DataInputStream(fi);
                }
                data.dis.add(di);

                // How long is the buffer?
                int buffersize = di.readInt();

                if (log.isDetailed())
                    logDetailed("[" + filename + "] expecting " + buffersize + " rows...");

                if (buffersize > 0) {
                    // Read a row from each temp-file
                    Row metadata = (Row) data.rowMeta.get(f);
                    data.rowbuffer.add(new Row(di, metadata.size(), metadata)); // new row
                }
            }
        } catch (Exception e) {
            logError("Error reading back tmp-files : " + e.toString());
            e.printStackTrace();
        }
    }

    if (data.files.size() == 0) {
        if (data.buffer.size() > 0) {
            retval = (Row) data.buffer.get(0);
            data.buffer.remove(0);
        } else {
            retval = null;
        }
    } else {
        if (data.rowbuffer.size() == 0) {
            retval = null;
        } else {
            // We now have "filenr" rows waiting: which one is the smallest?
            //
            for (i = 0; i < data.rowbuffer.size() && !isStopped(); i++) {
                Row b = (Row) data.rowbuffer.get(i);
                if (log.isRowLevel())
                    logRowlevel("--BR#" + i + ": " + b.toString());
            }
            //

            smallest = 0;
            r1 = (Row) data.rowbuffer.get(smallest);
            for (f = 1; f < data.rowbuffer.size() && !isStopped(); f++) {
                r2 = (Row) data.rowbuffer.get(f);

                if (r2 != null && r2.compare(r1, data.fieldnrs, meta.getAscending()) < 0) {
                    smallest = f;
                    r1 = (Row) data.rowbuffer.get(smallest);
                }
            }
            retval = r1;

            data.rowbuffer.remove(smallest);
            if (log.isRowLevel())
                logRowlevel("Smallest row selected on [" + smallest + "] : " + retval);

            // now get another Row for position smallest

            FileObject file = (FileObject) data.files.get(smallest);
            DataInputStream di = (DataInputStream) data.dis.get(smallest);
            InputStream fi = (InputStream) data.fis.get(smallest);
            GZIPInputStream gzfi = (meta.getCompress()) ? (GZIPInputStream) data.gzis.get(smallest) : null;

            try {
                Row metadata = (Row) data.rowMeta.get(smallest);
                data.rowbuffer.add(smallest, new Row(di, metadata.size(), metadata));
            } catch (KettleFileException fe) // empty file or EOF mostly
            {
                try {
                    di.close();
                    fi.close();
                    if (gzfi != null)
                        gzfi.close();
                    file.delete();
                } catch (IOException e) {
                    logError("Unable to close/delete file #" + smallest + " --> " + file.toString());
                    setErrors(1);
                    stopAll();
                    return null;
                }

                data.files.remove(smallest);
                data.dis.remove(smallest);
                data.fis.remove(smallest);
                if (gzfi != null)
                    data.gzis.remove(smallest);
                data.rowMeta.remove(smallest);
            }
        }
    }
    return retval;
}

From source file:cc.aileron.dao.db.sql.G2DaoSqlMapImpl.java

@Override
public void compile(final Class<?> targetClass)
        throws IOException, ResourceNotFoundException, TemplateSyntaxEexception, ParserMethodNotFoundException {
    final String sqlDir = getDir(targetClass);
    if (StringUtils.isEmpty(sqlDir)) {
        return;//from  ww  w. j  av  a 2 s. co  m
    }

    logger.trace("compile : {} @ {}", targetClass, sqlDir);

    final Enumeration<URL> urls = Thread.currentThread().getContextClassLoader().getResources(sqlDir);

    while (urls.hasMoreElements()) {
        final URL url = urls.nextElement();
        final Resource resource = ResourceConvertUtils.convertUrl(url);
        for (final FileObject file : resource.toFileObject().getChildren()) {
            final String name = file.getName().getBaseName().split("\\.")[0];

            logger.trace("load sql-file : {}.sql", name);

            if (!file.getType().equals(FileType.FILE) || !file.getName().getExtension().equals("sql")) {
                continue;
            }

            /*
             * SQL??
             */
            final Template template = compiler.compile(resource(file.getContent()).toString());

            /*
             * findBy -> find ????
             */
            final String key = name.replaceFirst("^findBy", "find").replaceFirst("^countBy", "count")
                    .replaceFirst("^updateBy", "update").replaceFirst("^deleteBy", "delete")
                    .replaceFirst("^executeBy", "execute");

            final HashMap<String, Template> m = sqlMap.get(targetClass);
            m.put(key, template);
            m.put(name, template);
        }
    }
}

From source file:egovframework.rte.fdl.filehandling.FilehandlingServiceTest.java

/**
 * @throws Exception/*from  w ww. j a va2 s. c o m*/
 */
@Test
public void testTouch() throws Exception {

    String path = tmppath + "/movedfile.txt";
    FileObject file = EgovFileUtil.getFileObject(path);

    long setTime = EgovFileUtil.touch(path);

    assertEquals(file.getContent().getLastModifiedTime(), setTime);

}