Example usage for org.apache.commons.io.monitor FileAlterationObserver initialize

List of usage examples for org.apache.commons.io.monitor FileAlterationObserver initialize

Introduction

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

Prototype

public void initialize() throws Exception 

Source Link

Document

Initialize the observer.

Usage

From source file:eu.optimis.ics.p2p.MyFileAlterationObserver.java

public static void main(String[] args) throws Exception {
    System.out.println("Present Working Directory is : " + System.getProperty("user.dir"));
    File directory = new File(System.getProperty("user.dir") + "/data");

    IOFileFilter files = FileFilterUtils.and(FileFilterUtils.fileFileFilter(),
            FileFilterUtils.suffixFileFilter(".txt"));

    FileAlterationObserver observer = new FileAlterationObserver(directory, files);
    observer.initialize();

    // Add Listener
    MyFileAlterationListener listener = new MyFileAlterationListener();
    observer.addListener(listener);//from   ww w. j  a va2 s  . co m

    FileAlterationMonitor monitor = new FileAlterationMonitor(1000, observer);
    monitor.addObserver(observer);

    monitor.start();

}

From source file:de.adorsys.forge.plugins.ct.ContinuousTestingPlugin.java

@Command(help = "listens to file-changes in project-root/src and triggers mvn test")
public void run(final PipeOut out) {

    String sourceDir = project.getProjectRoot().getFullyQualifiedName() + "/src";

    if (!new File(sourceDir).exists()) {
        ShellMessages.error(out, "SourceDirectory " + sourceDir + " is missing!");
    }/*  w w  w  .ja  v  a 2 s.c  o m*/

    final FileAlterationObserver observer = new FileAlterationObserver(sourceDir);
    observer.addListener(listener);

    try {
        observer.initialize();
    } catch (Exception ex) {
        handleError(out, ex);
    }

    ShellMessages.info(out, "Monitoring " + sourceDir);
    ShellMessages.info(out, "Cancel with CTRL+C");

    new Thread(new Runnable() {
        @Override
        public void run() {
            while (!shouldExit) {
                observer.checkAndNotify();
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    handleError(out, ex);
                }
            }
        }
    }).start();

    if (shell.scan() == 10) {
        shouldExit = true;
    }

}

From source file:info.fetter.logstashforwarder.FileWatcher.java

private void initializeWatchMap(File directory, IOFileFilter fileFilter, Event fields) throws Exception {
    if (!directory.isDirectory()) {
        logger.warn("Directory " + directory + " does not exist");
        return;//w w w  . j av  a2  s.co m
    }
    FileAlterationObserver observer = new FileAlterationObserver(directory, fileFilter);
    FileModificationListener listener = new FileModificationListener(this, fields);
    observer.addListener(listener);
    observerList.add(observer);
    observer.initialize();
    for (File file : FileUtils.listFiles(directory, fileFilter, null)) {
        addFileToWatchMap(newWatchMap, file, fields);
    }
}

From source file:it.geosolutions.filesystemmonitor.neutral.monitorpolling.GBFileSystemMonitorJob.java

/**
 * Try to build the Observer using informations stored into the JobDataMap
 * /* w  ww. j a  v a 2  s  .  c  o m*/
 * @note this method is not sync
 * @param jdm
 * @return
 * @throws JobExecutionException
 */
private static FileAlterationObserver buildObserver(JobDataMap jdm) throws JobExecutionException {

    FileAlterationObserver observer = null;
    final GBEventNotifier notifier;
    // first time build
    try {
        final File directory = new File(jdm.getString(FileSystemMonitorSPI.SOURCE_KEY));

        observer = new FileAlterationObserver(directory,
                new WildcardFileFilter(jdm.getString(FileSystemMonitorSPI.WILDCARD_KEY)));

        notifier = (GBEventNotifier) jdm.get(EVENT_NOTIFIER_KEY);

        final FileAlterationListener fal = new GBFileAlterationListener(notifier);

        observer.addListener(fal);
    } catch (ClassCastException cce) {
        // ClassCastException - if the identified object is not a String.
        throw exceptionPolicy(ExcPolicy.IMMEDIATELY,
                "The identified object is not a String.\n" + cce.getLocalizedMessage(), cce);

    } catch (NullPointerException npe) {
        // NullPointerException - If the pathname argument is null
        throw exceptionPolicy(ExcPolicy.IMMEDIATELY,
                "The pathname argument is null.\n" + npe.getLocalizedMessage(), npe);
    } catch (IllegalArgumentException iae) {
        // IllegalArgumentException - if the pattern is null
        throw exceptionPolicy(ExcPolicy.IMMEDIATELY, "The pattern is null.\n" + iae.getLocalizedMessage(), iae);
    } catch (Throwable e) {
        throw exceptionPolicy(ExcPolicy.IMMEDIATELY,
                "Probably the consumer cannot start.\n" + e.getLocalizedMessage(), e);
    }

    try {
        observer.initialize();
    } catch (Throwable t) {
        throw exceptionPolicy(ExcPolicy.IMMEDIATELY, "An error occurs.\n" + t.getLocalizedMessage(), t);
    }

    jdm.put(OBSERVER_KEY, observer);

    return observer;
}

From source file:org.cytoscape.app.internal.manager.AppManager.java

private void setupAlterationMonitor() {
    // Set up the FileAlterationMonitor to install/uninstall apps when apps are moved in/out of the 
    // installed/uninstalled app directories
    fileAlterationMonitor = new FileAlterationMonitor(2000L);

    File installedAppsPath = new File(getInstalledAppsPath());

    FileAlterationObserver installAlterationObserver = new FileAlterationObserver(installedAppsPath,
            new SingleLevelFileFilter(installedAppsPath), IOCase.SYSTEM);

    final AppManager appManager = this;

    // Listen for events on the "installed apps" folder
    installAlterationObserver.addListener(new FileAlterationListenerAdaptor() {
        @Override// w  ww  .  java 2  s  .  c  o  m
        public void onFileCreate(File file) {
            App parsedApp = null;
            try {
                parsedApp = appParser.parseApp(file);
            } catch (AppParsingException e) {
                return;
            }

            App registeredApp = null;
            for (App app : apps) {
                if (parsedApp.heuristicEquals(app)) {
                    registeredApp = app;

                    // Delete old file if it was still there
                    File oldFile = registeredApp.getAppFile();

                    if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) {
                        FileUtils.deleteQuietly(oldFile);
                    }

                    // Update file reference to reflect file having been moved
                    registeredApp.setAppFile(file);
                }
            }

            try {
                if (registeredApp == null) {
                    apps.add(parsedApp);
                    parsedApp.install(appManager);
                } else {
                    registeredApp.install(appManager);
                }
            } catch (AppInstallException e) {
                logger.warn(e.getLocalizedMessage());
            }

            fireAppsChangedEvent();
        }

        @Override
        public void onFileChange(File file) {
            // Can treat file replacements/changes as old file deleted, new file added
            this.onFileDelete(file);
            this.onFileCreate(file);

            fireAppsChangedEvent();
        }

        @Override
        public void onFileDelete(File file) {
            // System.out.println(file + " on delete");

            DebugHelper.print(this + " installObserverDelete", file.getAbsolutePath() + " deleted.");

            for (App app : apps) {

                if (app.getAppFile().equals(file)) {
                    app.setStatus(AppStatus.FILE_MOVED);
                }
            }

            fireAppsChangedEvent();
        }
    });

    FileAlterationObserver disableAlterationObserver = new FileAlterationObserver(getDisabledAppsPath(),
            new SingleLevelFileFilter(new File(getDisabledAppsPath())), IOCase.SYSTEM);

    // Listen for events on the "disabled apps" folder
    disableAlterationObserver.addListener(new FileAlterationListenerAdaptor() {
        @Override
        public void onFileCreate(File file) {
            App parsedApp = null;
            try {
                parsedApp = appParser.parseApp(file);
            } catch (AppParsingException e) {
                logger.warn(e.getLocalizedMessage());
                return;
            }

            DebugHelper.print(this + " disableObserver Create", parsedApp.getAppName() + " parsed");

            App registeredApp = null;
            for (App app : apps) {
                if (parsedApp.heuristicEquals(app)) {
                    registeredApp = app;

                    // Delete old file if it was still there
                    // TODO: Possible rename from filename-2 to filename?
                    File oldFile = registeredApp.getAppFile();

                    if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) {
                        DebugHelper.print(this + " disableObserverCreate",
                                registeredApp.getAppName() + " moved from "
                                        + registeredApp.getAppFile().getAbsolutePath() + " to "
                                        + parsedApp.getAppFile().getAbsolutePath() + ". deleting: " + oldFile);

                        FileUtils.deleteQuietly(oldFile);
                    }

                    // Update file reference to reflect file having been moved
                    registeredApp.setAppFile(file);
                }
            }

            try {
                if (registeredApp == null) {
                    apps.add(parsedApp);
                    parsedApp.disable(appManager);
                } else {
                    registeredApp.disable(appManager);
                }

                fireAppsChangedEvent();

            } catch (AppDisableException e) {
            }

            // System.out.println(file + " on create");
        }

        @Override
        public void onFileChange(File file) {
            // Can treat file replacements/changes as old file deleted, new file added
            this.onFileDelete(file);
            this.onFileCreate(file);

            fireAppsChangedEvent();
        }

        @Override
        public void onFileDelete(File file) {
            // System.out.println(file + " on delete");

            DebugHelper.print(this + " disableObserverDelete", file.getAbsolutePath() + " deleted.");

            for (App app : apps) {
                // System.out.println("checking " + app.getAppFile().getAbsolutePath());
                if (app.getAppFile().equals(file)) {
                    // System.out.println(app + " moved");
                    app.setStatus(AppStatus.FILE_MOVED);
                }
            }

            fireAppsChangedEvent();
        }
    });

    FileAlterationObserver uninstallAlterationObserver = new FileAlterationObserver(getUninstalledAppsPath(),
            new SingleLevelFileFilter(new File(getUninstalledAppsPath())), IOCase.SYSTEM);

    // Listen for events on the "uninstalled apps" folder
    uninstallAlterationObserver.addListener(new FileAlterationListenerAdaptor() {
        @Override
        public void onFileCreate(File file) {
            App parsedApp = null;
            try {
                parsedApp = appParser.parseApp(file);
            } catch (AppParsingException e) {
                return;
            }

            DebugHelper.print(this + " uninstallObserverCreate", parsedApp.getAppName() + " parsed");

            App registeredApp = null;
            for (App app : apps) {
                if (parsedApp.heuristicEquals(app)) {
                    registeredApp = app;

                    // Delete old file if it was still there
                    // TODO: Possible rename from filename-2 to filename?
                    File oldFile = registeredApp.getAppFile();

                    if (oldFile.exists() && !registeredApp.getAppFile().equals(parsedApp.getAppFile())) {
                        DebugHelper.print(this + " uninstallObserverCreate",
                                registeredApp.getAppName() + " moved from "
                                        + registeredApp.getAppFile().getAbsolutePath() + " to "
                                        + parsedApp.getAppFile().getAbsolutePath() + ". deleting: " + oldFile);

                        FileUtils.deleteQuietly(oldFile);
                    }

                    // Update file reference to reflect file having been moved
                    registeredApp.setAppFile(file);
                }
            }

            try {
                // Checks if the app file moved here belonged to a known app, if so, uninstall it.
                if (registeredApp == null) {
                    apps.add(parsedApp);
                    parsedApp.uninstall(appManager);
                } else {
                    registeredApp.uninstall(appManager);
                }

                fireAppsChangedEvent();

            } catch (AppUninstallException e) {
            }

            // System.out.println(file + " on create");
        }

        @Override
        public void onFileChange(File file) {
            // Can treat file replacements/changes as old file deleted, new file added
            this.onFileDelete(file);
            this.onFileCreate(file);

            fireAppsChangedEvent();
        }

        @Override
        public void onFileDelete(File file) {
            // System.out.println(file + " on delete");

            DebugHelper.print(this + " uninstallObserverDelete", file.getAbsolutePath() + " deleted.");

            for (App app : apps) {
                // System.out.println("checking " + app.getAppFile().getAbsolutePath());
                if (app.getAppFile().equals(file)) {
                    // System.out.println(app + " moved");
                    app.setStatus(AppStatus.FILE_MOVED);
                }
            }

            fireAppsChangedEvent();
        }
    });

    // setupKarafDeployMonitor(fileAlterationMonitor);

    try {
        installAlterationObserver.initialize();
        fileAlterationMonitor.addObserver(installAlterationObserver);

        disableAlterationObserver.initialize();
        fileAlterationMonitor.addObserver(disableAlterationObserver);

        uninstallAlterationObserver.initialize();
        fileAlterationMonitor.addObserver(uninstallAlterationObserver);

        fileAlterationMonitor.start();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

From source file:org.jboss.forge.addon.resource.monitor.FileMonitor.java

public ResourceMonitor registerMonitor(final ResourceFactory resourceFactory, final FileResource<?> resource,
        final ResourceFilter resourceFilter) {
    final DirectoryResource dirResource;
    IOFileFilter filter;/*  w ww .j  av a  2s.  c o  m*/
    if (resource instanceof DirectoryResource) {
        dirResource = (DirectoryResource) resource;
        filter = null;
    } else {
        dirResource = resource.getParent();
        filter = FileFilterUtils.nameFileFilter(resource.getName());
    }
    if (resourceFilter != null) {
        FileFilterResourceAdapter adapter = new FileFilterResourceAdapter(resourceFactory, resourceFilter);
        if (filter == null) {
            filter = adapter;
        } else {
            filter = FileFilterUtils.and(filter, adapter);
        }
    }
    File directory = dirResource.getUnderlyingResourceObject();
    FileAlterationObserver observer = new FileAlterationObserver(directory, filter);
    try {
        observer.initialize();
    } catch (Exception e) {
        log.log(Level.SEVERE, "Error while initializing File observer", e);
    }
    alterationMonitor.addObserver(observer);
    return new ResourceMonitorImpl(dirResource, resourceFactory, alterationMonitor, observer);
}

From source file:org.openbase.bco.manager.device.binding.openhab.util.configgen.OpenHABConfigGenerator.java

public OpenHABConfigGenerator() throws InstantiationException, InterruptedException {
    try {/*from  w  ww. j  av a2  s . com*/
        Registries.waitForData();
        this.itemConfigGenerator = new OpenHABItemConfigGenerator();
        this.recurrenceGenerationFilter = new RecurrenceEventFilter(TIMEOUT) {

            @Override
            public void relay() throws Exception {
                internalGenerate();
            }

        };

        FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(
                JPService.getProperty(JPOpenHABItemConfig.class).getValue().getParent());
        fileAlterationObserver.initialize();
        fileAlterationObserver.addListener(new FileAlterationListenerAdaptor() {

            @Override
            public void onFileDelete(File file) {
                logger.warn("Detect config file deletion!");

                try {
                    generate();
                } catch (CouldNotPerformException ex) {
                    ExceptionPrinter.printHistory("Coult not regenerate config file after deletion!", ex,
                            logger);
                }
            }
        });

        final FileAlterationMonitor monitor = new FileAlterationMonitor(10000);
        monitor.addObserver(fileAlterationObserver);
        monitor.start();

        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

            @Override
            public void run() {
                shutdown();
                try {
                    monitor.stop();
                } catch (Exception ex) {
                    ExceptionPrinter.printHistory(ex, logger);
                }
            }
        }));

    } catch (InterruptedException ex) {
        throw ex;
    } catch (Exception ex) {
        throw new InstantiationException(this, ex);
    }
}