public boolean needsToBeDeleted()

in fam/src/main/java/org/apache/commons/jci2/fam/monitor/FilesystemAlterationObserverImpl.java [166:231]


        public boolean needsToBeDeleted() {

            if (!file.exists()) {
                // deleted or has never existed yet

//                log.debug(file + " does not exist or has been deleted");

                deleteChildrenAndNotify();

                // mark to be deleted by parent
                return true;
            } else {
                // exists
                final long currentModified = file.lastModified();

                if (currentModified != lastModified) {
                    // last modified has changed
                    lastModified = currentModified;

//                    log.debug(file + " has new last modified");

                    // types only changes when also the last modified changes
                    final int newType = (file.isDirectory()?TYPE_DIRECTORY:TYPE_FILE);

                    if (lastType != newType) {
                        // the type has changed

//                        log.debug(file + " has a new type");

                        deleteChildrenAndNotify();

                        lastType = newType;

                        // and then an add as the new type

                        if (newType == TYPE_DIRECTORY) {
                            notifyOnDirectoryCreate(this);
                            compareChildren();
                        } else {
                            notifyOnFileCreate(this);
                        }

                        return false;
                    }

                    if (newType == TYPE_DIRECTORY) {
                        notifyOnDirectoryChange(this);
                        compareChildren();
                    } else {
                        notifyOnFileChange(this);
                    }

                    return false;

                } else {

                    // so exists and has not changed

//                    log.debug(file + " does exist and has not changed");

                    compareChildren();

                    return false;
                }
            }
        }