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

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

Introduction

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

Prototype

protected FileAlterationObserver(FileEntry rootEntry, FileFilter fileFilter, IOCase caseSensitivity) 

Source Link

Document

Construct an observer for the specified directory, file filter and file comparator.

Usage

From source file:com.hj.blog.common.utils.SensitiveWordMonitor.java

public void monitor(String directory, int interval) {
    FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(directory,
            FileFilterUtils.and(FileFilterUtils.nameFileFilter(SENSITIVE_WORD_FILE_NAME)), null);
    fileAlterationObserver.addListener(this);
    FileAlterationMonitor fileAlterationMonitor = new FileAlterationMonitor(interval, fileAlterationObserver);

    try {//from  ww w . j av a2  s .  c o  m
        fileAlterationMonitor.start();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

From source file:com.moneydance.modules.features.importlist.io.FileAdmin.java

private void setFileMonitorToCurrentImportDir() {
    if (this.getBaseDirectory() == null) {
        return;/*  w ww .j a  va  2s. c  om*/
    }
    this.observer = new FileAlterationObserver(this.getBaseDirectory(), this.readableFileFilter, IOCase.SYSTEM);
    this.observer.addListener(this.listener);
    this.monitor.addObserver(this.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//from   w w w.j  a v a 2 s.com
        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();
    }
}