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

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

Introduction

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

Prototype

public FileObject[] getChildren() throws FileSystemException;

Source Link

Document

Lists the children of this file.

Usage

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

/**
 * Loads the content of the given resource.
 *
 * @param resource the resource to load//from ww  w  .j  a  va2 s.co  m
 * @return the content as an object since it depends on which content is being read (ex: manifest,
 *         library, packages, class) (never <code>null</code>)
 * @throws NoSuchContentException if the content does not exist
 * @throws StoreException         if there is a problem reading the content.
 */
public RepositoryModel loadContent(RepositoryResource resource) throws NoSuchContentException, StoreException {
    if (resource == null)
        throw new NoSuchContentException(resource);

    Collection<LibraryVersionResource> lvc = new ArrayList<LibraryVersionResource>();

    FileObject root = getResourceFile(resource);

    try {
        FileObject[] organisations = root.findFiles(_fileSelector);

        for (FileObject organisation : organisations) {
            if (organisation.getType() == FileType.FOLDER) {
                OrganisationResource organisationResource = new OrganisationResource(
                        organisation.getName().getBaseName());

                FileObject[] libraries = organisation.getChildren();
                for (FileObject library : libraries) {
                    LibraryResource libraryResource = new LibraryResource(organisationResource,
                            library.getName().getBaseName());

                    FileObject[] libraryVersions = library.getChildren();
                    for (FileObject libraryVersion : libraryVersions) {
                        lvc.add(new LibraryVersionResource(libraryResource,
                                libraryVersion.getName().getBaseName()));
                    }
                }

            }
        }
    } catch (FileSystemException e) {
        throw new StoreException(e);
    }

    return new RepositoryModel(lvc);
}

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

@Test
public void canCreateAnIsoWithOneFile() throws Exception {
    final String contentString = "This is a test file";
    // Output file
    File outfile = new File(workDir, "one-file.iso");
    File contents = new File(workDir, "readme.txt");
    OutputStream os = new FileOutputStream(contents);
    IOUtil.copy(contentString, os);// w  w  w  .j  a va2s .c o m
    IOUtil.close(os);

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

    root.addFile(contents);

    StreamHandler streamHandler = new ISOImageFileHandler(outfile);
    CreateISO iso = new CreateISO(streamHandler, root);
    ISO9660Config iso9660Config = new ISO9660Config();
    iso9660Config.allowASCII(false);
    iso9660Config.setInterchangeLevel(1);
    iso9660Config.restrictDirDepthTo8(true);
    iso9660Config.setVolumeID("ISO Test");
    iso9660Config.forceDotDelimiter(true);
    RockRidgeConfig rrConfig = new RockRidgeConfig();
    rrConfig.setMkisofsCompatibility(false);
    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();
    // TODO figure out why we can't just do
    // FileObject isoFile = fsManager.resolveFile("iso:" + outfile.getPath() + "!/");
    // smells like a bug between loop-fs and commons-vfs
    FileObject isoFile = fsManager.resolveFile("iso:" + outfile.getPath() + "!/readme.txt").getParent();
    assertThat(isoFile.getType(), is(FileType.FOLDER));

    FileObject[] children = isoFile.getChildren();
    assertThat(children.length, is(1));
    assertThat(children[0].getName().getBaseName(), is("readme.txt"));
    assertThat(children[0].getType(), is(FileType.FILE));
    assertThat(IOUtil.toString(children[0].getContent().getInputStream()), is(contentString));
}

From source file:com.thinkberg.vfs.s3.tests.S3FileProviderTest.java

public void testGetFolderListingIsShallow() throws FileSystemException {
    FileObject object = ROOT.resolveFile(FOLDER);
    FileObject subFolder = object.resolveFile("subdir");
    subFolder.createFolder();/*  w w w.ja  va 2s.c o m*/
    subFolder.resolveFile("subfile.0").createFile();
    subFolder.resolveFile("subfile.1").createFile();
    subFolder.resolveFile("subfile.2").createFile();

    assertEquals(3, object.getChildren().length);
}

From source file:com.thinkberg.vfs.s3.tests.S3FileProviderTest.java

public void testMoveShallowFolder() throws FileSystemException {
    FileObject origFolder = ROOT.resolveFile(FOLDER);
    origFolder.delete(ALL_FILE_SELECTOR);
    origFolder.createFolder();// w  w  w . j a  va2  s . c o  m

    origFolder.resolveFile("file.0").createFile();
    origFolder.resolveFile("file.1").createFile();
    origFolder.resolveFile("file.2").createFile();

    assertEquals(3, origFolder.getChildren().length);

    FileObject destFolder = ROOT.resolveFile(FOLDER + "_dest");
    destFolder.delete(ALL_FILE_SELECTOR);
    assertFalse(destFolder.exists());

    origFolder.moveTo(destFolder);
    assertFalse(origFolder.exists());
    assertTrue(destFolder.exists());

    assertEquals(3, destFolder.getChildren().length);

    destFolder.delete(ALL_FILE_SELECTOR);

    assertFalse(origFolder.exists());
    assertFalse(destFolder.exists());
}

From source file:com.thinkberg.vfs.s3.tests.S3FileProviderTest.java

public void testCopyShallowFolder() throws FileSystemException {
    FileObject origFolder = ROOT.resolveFile(FOLDER);
    origFolder.delete(ALL_FILE_SELECTOR);
    origFolder.createFolder();/*from  w ww . j av  a2  s.  c  om*/

    origFolder.resolveFile("file.0").createFile();
    origFolder.resolveFile("file.1").createFile();
    origFolder.resolveFile("file.2").createFile();

    System.out.println(Arrays.asList(origFolder.getChildren()));
    assertEquals(3, origFolder.getChildren().length);

    FileObject destFolder = ROOT.resolveFile(FOLDER + "_dest");
    assertFalse(destFolder.exists());
    destFolder.copyFrom(origFolder, new DepthFileSelector(1));
    assertTrue(destFolder.exists());

    assertEquals(3, destFolder.getChildren().length);

    FileObject[] origFiles = origFolder.findFiles(new DepthFileSelector(1));
    FileObject[] destFiles = destFolder.findFiles(new DepthFileSelector(1));
    for (int i = 0; i < origFiles.length; i++) {
        assertEquals(origFiles[i].getName().getRelativeName(origFolder.getName()),
                destFiles[i].getName().getRelativeName(destFolder.getName()));
    }

    origFolder.delete(ALL_FILE_SELECTOR);
    destFolder.delete(ALL_FILE_SELECTOR);

    assertFalse(origFolder.exists());
    assertFalse(destFolder.exists());
}

From source file:com.newatlanta.appengine.vfs.provider.GaeFileObject.java

private FileObject[] getLocalChildren() throws FileSystemException {
    if (isCombinedLocal) {
        GaeFileName fileName = (GaeFileName) getName();
        String localUri = "file://" + fileName.getRootPath() + fileName.getPath();
        FileObject localFile = getFileSystem().getFileSystemManager().resolveFile(localUri);
        if (localFile.exists()) {
            return localFile.getChildren();
        }//from w w  w .  j  a  va2 s.c  o  m
    }
    return new FileObject[0];
}

From source file:com.panet.imeta.core.plugins.PluginLoader.java

/**
 * "Deploys" the plugin jar file.//w  ww.ja  v a  2s .  c  o  m
 * 
 * @param parent
 * @return
 * @throws FileSystemException
 */
private FileObject explodeJar(FileObject parent) throws FileSystemException {
    // By Alex, 7/13/07
    // Since the JVM does not support nested jars and
    // URLClassLoaders, we have to hack it
    // see
    // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4735639
    // 
    // We do so by exploding the jar, sort of like deploying it
    FileObject dest = VFS.getManager().resolveFile(Const.getKettleDirectory() + File.separator + WORK_DIR);
    dest.createFolder();

    FileObject destFile = dest.resolveFile(parent.getName().getBaseName());

    if (!destFile.exists())
        destFile.createFolder();
    else
        // delete children
        for (FileObject child : destFile.getChildren())
            child.delete(new AllFileSelector());

    // force VFS to treat it as a jar file explicitly with children,
    // etc. and copy
    destFile.copyFrom(!(parent instanceof JarFileObject)
            ? VFS.getManager().resolveFile(JAR + ":" + parent.getName().getURI())
            : parent, new AllFileSelector());

    return destFile;
}

From source file:com.panet.imeta.job.entries.sftpput.JobEntrySFTPPUT.java

public Result execute(Result previousResult, int nr, Repository rep, Job parentJob) throws KettleException {
    LogWriter log = LogWriter.getInstance();

    Result result = previousResult;
    List<RowMetaAndData> rows = result.getRows();
    result.setResult(false);/*from w  ww.  ja  v a2s  .  co m*/

    if (log.isDetailed())
        log.logDetailed(toString(), Messages.getString("JobSFTPPUT.Log.StartJobEntry"));
    ArrayList<FileObject> myFileList = new ArrayList<FileObject>();

    if (copyprevious) {
        if (rows.size() == 0) {
            if (log.isDetailed())
                log.logDetailed(toString(), Messages.getString("JobSFTPPUT.ArgsFromPreviousNothing"));
            result.setResult(true);
            return result;
        }

        try {
            RowMetaAndData resultRow = null;
            // Copy the input row to the (command line) arguments
            for (int iteration = 0; iteration < rows.size(); iteration++) {
                resultRow = rows.get(iteration);

                // Get file names
                String file_previous = resultRow.getString(0, null);
                if (!Const.isEmpty(file_previous)) {
                    FileObject file = KettleVFS.getFileObject(file_previous);
                    if (!file.exists())
                        log.logError(toString(),
                                Messages.getString("JobSFTPPUT.Log.FilefromPreviousNotFound", file_previous));
                    else {
                        myFileList.add(file);
                        if (log.isDebug())
                            log.logDebug(toString(),
                                    Messages.getString("JobSFTPPUT.Log.FilenameFromResult", file_previous));
                    }
                }
            }
        } catch (Exception e) {
            log.logError(toString(), Messages.getString("JobSFTPPUT.Error.ArgFromPrevious"));
            result.setNrErrors(1);
            return result;
        }

    }
    SFTPClient sftpclient = null;

    // String substitution..
    String realServerName = environmentSubstitute(serverName);
    String realServerPort = environmentSubstitute(serverPort);
    String realUsername = environmentSubstitute(userName);
    String realPassword = environmentSubstitute(password);
    String realSftpDirString = environmentSubstitute(sftpDirectory);
    String realWildcard = environmentSubstitute(wildcard);
    String realLocalDirectory = environmentSubstitute(localDirectory);

    try {
        // Create sftp client to host ...
        sftpclient = new SFTPClient(InetAddress.getByName(realServerName), Const.toInt(realServerPort, 22),
                realUsername);
        if (log.isDetailed())
            log.logDetailed(toString(), Messages.getString("JobSFTPPUT.Log.OpenedConnection", realServerName,
                    "" + realServerPort, realUsername));

        // login to ftp host ...
        sftpclient.login(realPassword);
        // Don't show the password in the logs, it's not good for security
        // audits
        // log.logDetailed(toString(), "logged in using password
        // "+realPassword); // Logging this seems a bad idea! Oh well.

        // move to spool dir ...
        if (!Const.isEmpty(realSftpDirString)) {
            sftpclient.chdir(realSftpDirString);
            if (log.isDetailed())
                log.logDetailed(toString(),
                        Messages.getString("JobSFTPPUT.Log.ChangedDirectory", realSftpDirString));
        } // end if

        if (!copyprevious) {
            // Get all the files in the local directory...
            myFileList = new ArrayList<FileObject>();

            FileObject localFiles = KettleVFS.getFileObject(realLocalDirectory);
            FileObject[] children = localFiles.getChildren();
            if (children != null) {
                for (int i = 0; i < children.length; i++) {
                    // Get filename of file or directory
                    if (children[i].getType().equals(FileType.FILE)) {
                        // myFileList.add(children[i].getAbsolutePath());
                        myFileList.add(children[i]);
                    }
                } // end for
            }
        }

        if (myFileList == null || myFileList.size() == 0) {
            log.logError(toString(), Messages.getString("JobSFTPPUT.Error.NoFileToSend"));
            result.setNrErrors(1);
            return result;
        }

        if (log.isDetailed())
            log.logDetailed(toString(),
                    Messages.getString("JobSFTPPUT.Log.RowsFromPreviousResult", "" + myFileList.size()));

        Pattern pattern = null;
        if (!copyprevious) {
            if (!Const.isEmpty(realWildcard)) {
                pattern = Pattern.compile(realWildcard);
            }
        }

        // Get the files in the list and execute sftp.put() for each file
        for (int i = 0; i < myFileList.size() && !parentJob.isStopped(); i++) {
            FileObject myFile = myFileList.get(i);
            String localFilename = myFile.toString();
            String destinationFilename = myFile.getName().getBaseName();
            boolean getIt = true;

            // First see if the file matches the regular expression!
            if (pattern != null) {
                Matcher matcher = pattern.matcher(destinationFilename);
                getIt = matcher.matches();
            }

            if (getIt) {
                if (log.isDebug())
                    log.logDebug(toString(),
                            Messages.getString("JobSFTPPUT.Log.PuttingFile", localFilename, realSftpDirString));

                sftpclient.put(myFile, destinationFilename);

                if (log.isDetailed())
                    log.logDetailed(toString(),
                            Messages.getString("JobSFTPPUT.Log.TransferedFile", localFilename));

                // Delete the file if this is needed!
                if (remove) {
                    myFile.delete();
                    if (log.isDetailed())
                        log.logDetailed(toString(),
                                Messages.getString("JobSFTPPUT.Log.DeletedFile", localFilename));
                } else {
                    if (addFilenameResut) {
                        // Add to the result files...
                        ResultFile resultFile = new ResultFile(ResultFile.FILE_TYPE_GENERAL, myFile,
                                parentJob.getJobname(), toString());
                        result.getResultFiles().put(resultFile.getFile().toString(), resultFile);
                        if (log.isDetailed())
                            log.logDetailed(toString(), Messages
                                    .getString("JobSFTPPUT.Log.FilenameAddedToResultFilenames", localFilename));
                    }
                }
            }
        } // end for

        result.setResult(true);
        // JKU: no idea if this is needed...!
        // result.setNrFilesRetrieved(filesRetrieved);
    } // end try
    catch (Exception e) {
        result.setNrErrors(1);
        log.logError(toString(), Messages.getString("JobSFTPPUT.Exception", e.getMessage()));
        log.logError(toString(), Const.getStackTracker(e));
    } finally {
        // close connection, if possible
        try {
            if (sftpclient != null)
                sftpclient.disconnect();
        } catch (Exception e) {
            // just ignore this, makes no big difference
        } // end catch
    } // end finallly

    return result;
}

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

/**
 * ? ? , ?  ??  ?? ?/*from   w  ww. j  av  a2  s .c  o  m*/
 * ?  ? ? ? .
 * @throws Exception
 */
@Test
public void testCaching() throws Exception {
    String testFolder = "d:/workspace/java/e-gov/eGovFramework/RTE/DEV/trunk/Foundation/egovframework.rte.fdl.filehandling/testfolder";
    FileSystemManager manager = VFS.getManager();

    FileObject scratchFolder = manager.resolveFile(testFolder);

    // testfolder ?  ? 
    scratchFolder.delete(Selectors.EXCLUDE_SELF);

    // ? Manager ?
    DefaultFileSystemManager fs = new DefaultFileSystemManager();
    fs.setFilesCache(manager.getFilesCache());

    // zip, jar, tgz, tar, tbz2, file
    if (!fs.hasProvider("file")) {
        fs.addProvider("file", new DefaultLocalFileProvider());
    }

    fs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
    fs.init();

    // ? ? ?
    FileObject foBase2 = fs.resolveFile(testFolder);
    log.debug("## scratchFolder.getName().getPath() : " + scratchFolder.getName().getPath());

    FileObject cachedFolder = foBase2.resolveFile(scratchFolder.getName().getPath());

    // ??  ?
    FileObject[] fos = cachedFolder.getChildren();
    assertFalse(contains(fos, "file1.txt"));

    // ??
    scratchFolder.resolveFile("file1.txt").createFile();

    // ? 
    // BUT cachedFolder ? ??  ?
    fos = cachedFolder.getChildren();
    assertFalse(contains(fos, "file1.txt"));

    // 
    cachedFolder.refresh();
    // ?? 
    fos = cachedFolder.getChildren();
    assertTrue(contains(fos, "file1.txt"));

}

From source file:com.vobject.appengine.java.io.File.java

private File[] listChildrenAsFileArray(final FilenameFilter filter, final FileObject dir,
        final boolean recursive) throws FileSystemException {
    if (dir.getType() == FileType.FOLDER) {
        final FileObject[] children = dir.getChildren();
        final List list = new ArrayList();
        for (int i = 0; i < children.length; i++) {
            final FileObject child = children[i];
            final String fileName = child.getName().getBaseName();
            if (filter != null) {
                if (filter.accept(null, fileName)) {
                    list.add(new File(child));
                }//  ww  w . j a  v  a 2 s  . co  m
            } else {
                list.add(new File(child));
            }
            if (child.getType() == FileType.FOLDER) {
                if (recursive) {
                    File[] childs = listChildrenAsFileArray(filter, child, recursive);
                    list.addAll(Arrays.asList(childs));
                }
            }
        }
        return (File[]) list.toArray(new File[0]);
    } else {
        return null;
    }
}