public boolean isOutdated()

in src/org/jetbrains/ether/ProjectWrapper.java [762:806]


        public boolean isOutdated(final boolean tests, final ProjectWrapper history) {
            if (history == null) {
                return true;
            }

            final ModuleWrapper past = history.getModule(myName);

            if (past == null) {
                return true;
            }

            final boolean outputChanged = !safeEquals(past.getOutputPath(), getOutputPath());
            final boolean testOutputChanged = tests && !safeEquals(past.getTestOutputPath(), getTestOutputPath());
            final boolean sourceChanged = !past.getSourceFiles().equals(getSourceFiles());
            final boolean testSourceChanged = tests && !past.getTestSourceFiles().equals(getTestSourceFiles());
            final boolean sourceOutdated = mySource.isOutdated() || !mySource.getOutdatedFiles(past.mySource).isEmpty();
            final boolean testSourceOutdated = tests && (myTest.isOutdated() || !myTest.getOutdatedFiles(past.myTest).isEmpty());
            final boolean unsafeDependencyChange = (
                    new Object() {
                        public boolean run(final List<ClasspathItemWrapper> today, final List<ClasspathItemWrapper> yesterday) {
                            final Iterator<ClasspathItemWrapper> t = today.iterator();
                            final Iterator<ClasspathItemWrapper> y = yesterday.iterator();

                            while (true) {
                                if (!y.hasNext())
                                    return false;

                                if (!t.hasNext())
                                    return true;

                                if (!safeEquals(t.next(), y.next()))
                                    return true;
                            }
                        }
                    }.run(dependsOn(tests), past.dependsOn(tests))
            );

            return sourceOutdated ||
                    testSourceOutdated ||
                    sourceChanged ||
                    testSourceChanged ||
                    outputChanged ||
                    testOutputChanged ||
                    unsafeDependencyChange;
        }