Example usage for org.apache.commons.io.monitor FileEntry setChildren

List of usage examples for org.apache.commons.io.monitor FileEntry setChildren

Introduction

In this page you can find the example usage for org.apache.commons.io.monitor FileEntry setChildren.

Prototype

public void setChildren(FileEntry[] children) 

Source Link

Document

Set the directory's files.

Usage

From source file:com.owncloud.android.services.observer.AdvancedFileAlterationObserver.java

/**
 * Create a new file entry for the specified file.
 *
 * @param parent The parent file entry//  w  w  w.  j  a  v  a  2  s . com
 * @param file   The file to create an entry for
 * @return A new file entry
 */
private FileEntry createFileEntry(final FileEntry parent, final File file) {
    final FileEntry entry = parent.newChildInstance(file);
    entry.refresh(file);
    final FileEntry[] children = doListFiles(file, entry);
    entry.setChildren(children);
    return entry;
}

From source file:com.owncloud.android.services.observer.AdvancedFileAlterationObserver.java

/**
 * Compare two file lists for files which have been created, modified or deleted.
 *
 * @param parent   The parent entry//www  . j  av a2 s . co m
 * @param previous The original list of files
 * @param files    The current list of files
 */
private void checkAndNotify(final FileEntry parent, final FileEntry[] previous, final File[] files, int delay) {
    if (files != null && files.length > 0) {
        int c = 0;
        final FileEntry[] current = files.length > 0 ? new FileEntry[files.length] : EMPTY_ENTRIES;
        for (final FileEntry entry : previous) {
            while (c < files.length && comparator.compare(entry.getFile(), files[c]) > 0) {
                current[c] = createFileEntry(parent, files[c]);
                doCreate(current[c], delay);
                c++;
            }
            if (c < files.length && comparator.compare(entry.getFile(), files[c]) == 0) {
                doMatch(entry, files[c], delay);
                checkAndNotify(entry, entry.getChildren(), listFiles(files[c]), delay);
                current[c] = entry;
                c++;
            } else {
                checkAndNotify(entry, entry.getChildren(), FileUtils.EMPTY_FILE_ARRAY, delay);
                doDelete(entry);
            }
        }
        for (; c < files.length; c++) {
            current[c] = createFileEntry(parent, files[c]);
            doCreate(current[c], delay);
        }
        parent.setChildren(current);
    }
}