Move toward more specific interface

git-svn-id: https://svn.apache.org/repos/asf/creadur/tentacles/trunk@1462932 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/creadur/tentacles/FileSystem.java b/src/main/java/org/apache/creadur/tentacles/FileSystem.java
index 4b4c4bc..b3c2c36 100644
--- a/src/main/java/org/apache/creadur/tentacles/FileSystem.java
+++ b/src/main/java/org/apache/creadur/tentacles/FileSystem.java
@@ -32,41 +32,14 @@
         this.filters = new Filters();
     }
 
-    public FileFilter filesOnly() {
-        return this.filters.filesOnly();
+    public List<File> legalDocumentsUndeclaredIn(final File contents) {
+        return collect(contents,
+                this.filters.legalDocumentsUndeclaredIn(contents));
     }
 
-    public FileFilter licensesOnly() {
-        return this.filters.licensesOnly();
-    }
-
-    public FileFilter noticesOnly() {
-        return this.filters.noticesOnly();
-    }
-
-    public FileFilter legalOnly() {
-        return this.filters.legalOnly();
-    }
-
-    public FileFilter licensesDeclaredIn(final File contents) {
-        return this.filters.licensesDeclaredIn(contents);
-
-    }
-
-    public FileFilter noticesDeclaredIn(final File contents) {
-        return this.filters.noticesDeclaredIn(contents);
-    }
-
-    public FileFilter legalDocumentsUndeclaredIn(final File contents) {
-        return this.filters.legalDocumentsUndeclaredIn(contents);
-    }
-
-    public FileFilter archivesInPath(final String repositoryPathNameFilter) {
-        return this.filters.archivesInPath(repositoryPathNameFilter);
-    }
-
-    public FileFilter legalDocumentsDeclaredIn(final File contents) {
-        return this.filters.legalDocumentsDeclaredIn(contents);
+    public List<File> legalDocumentsDeclaredIn(final File contents) {
+        return collect(contents,
+                this.filters.legalDocumentsDeclaredIn(contents));
     }
 
     public List<File> collect(final File dir, final String regex) {
@@ -115,4 +88,29 @@
         final boolean isDirectory = file.isDirectory();
         assert isDirectory : "Not a directory: " + file;
     }
+
+    public List<File> documentsFrom(final File repository) {
+        return collect(repository, this.filters.filesOnly());
+    }
+
+    public List<File> licensesFrom(final File directory) {
+        return collect(directory, this.filters.licensesOnly());
+    }
+
+    public List<File> noticesOnly(final File directory) {
+        return collect(directory, this.filters.noticesOnly());
+    }
+
+    public List<File> licensesDeclaredIn(final File contents) {
+        return collect(contents, this.filters.licensesDeclaredIn(contents));
+    }
+
+    public List<File> noticesDeclaredIn(final File contents) {
+        return collect(contents, this.filters.noticesDeclaredIn(contents));
+    }
+
+    public List<File> archivesInPath(final File file,
+            final String fileRepositoryPathNameFilter) {
+        return collect(file, this.filters.archivesInPath(fileRepositoryPathNameFilter));
+    }
 }
diff --git a/src/main/java/org/apache/creadur/tentacles/Main.java b/src/main/java/org/apache/creadur/tentacles/Main.java
index 3b53b19..7b42a2d 100644
--- a/src/main/java/org/apache/creadur/tentacles/Main.java
+++ b/src/main/java/org/apache/creadur/tentacles/Main.java
@@ -121,9 +121,7 @@
 
         prepare();
 
-        final List<File> jars =
-                this.fileSystem.collect(this.repository,
-                        this.fileSystem.filesOnly());
+        final List<File> jars = this.fileSystem.documentsFrom(this.repository);
 
         final List<Archive> archives = new ArrayList<Archive>();
         for (final File file : jars) {
@@ -156,8 +154,7 @@
 
         for (final Archive archive : archives) {
             final List<File> files =
-                    this.fileSystem.collect(contents(archive.getFile()),
-                            this.fileSystem.licensesOnly());
+                    this.fileSystem.licensesFrom(contents(archive.getFile()));
             for (final File file : files) {
                 final License license = new License(this.ioSystem.slurp(file));
 
@@ -205,9 +202,7 @@
                 new HashSet<License>(archive.getLicenses());
 
         final File contents = contents(archive.getFile());
-        final List<File> files =
-                this.fileSystem.collect(contents,
-                        this.fileSystem.licensesDeclaredIn(contents));
+        final List<File> files = this.fileSystem.licensesDeclaredIn(contents);
 
         for (final File file : files) {
 
@@ -244,8 +239,7 @@
 
             final File contents = contents(archive.getFile());
             final List<File> files =
-                    this.fileSystem.collect(contents,
-                            this.fileSystem.noticesDeclaredIn(contents));
+                    this.fileSystem.noticesDeclaredIn(contents);
 
             for (final File file : files) {
 
@@ -280,10 +274,9 @@
         final Map<Notice, Notice> notices = new HashMap<Notice, Notice>();
 
         for (final Archive archive : archives) {
-            final List<File> files =
-                    this.fileSystem.collect(contents(archive.getFile()),
-                            this.fileSystem.noticesOnly());
-            for (final File file : files) {
+            final List<File> noticeDocuments =
+                    this.fileSystem.noticesOnly(contents(archive.getFile()));
+            for (final File file : noticeDocuments) {
                 final Notice notice = new Notice(this.ioSystem.slurp(file));
 
                 Notice existing = notices.get(notice);
@@ -303,24 +296,6 @@
                 .write(new File(this.local, "notices.html"));
     }
 
-    private List<URI> allNoticeFiles() {
-        final List<File> legal =
-                this.fileSystem.collect(this.content,
-                        this.fileSystem.legalOnly());
-        for (final File file : legal) {
-            log.info("Legal " + file);
-        }
-
-        final URI uri = this.local.toURI();
-        final List<URI> uris = new ArrayList<URI>();
-        for (final File file : legal) {
-            final URI full = file.toURI();
-            final URI relativize = uri.relativize(full);
-            uris.add(relativize);
-        }
-        return uris;
-    }
-
     private void prepare() throws URISyntaxException, IOException {
         final Set<File> files = new HashSet<File>();
 
@@ -339,9 +314,8 @@
             final File file =
                     new File(this.configuration.getStagingRepositoryURI());
             final List<File> collect =
-                    this.fileSystem.collect(file, this.fileSystem
-                            .archivesInPath(this.configuration
-                                    .getFileRepositoryPathNameFilter()));
+                    this.fileSystem.archivesInPath(file, this.configuration
+                            .getFileRepositoryPathNameFilter());
 
             for (final File f : collect) {
                 files.add(copyToMirror(f));
@@ -631,9 +605,8 @@
         private Map<URI, URI> mapOther() {
             final File jarContents = contents(this.file);
             final List<File> legal =
-                    Main.this.fileSystem.collect(jarContents,
-                            Main.this.fileSystem
-                                    .legalDocumentsUndeclaredIn(jarContents));
+                    Main.this.fileSystem
+                            .legalDocumentsUndeclaredIn(jarContents);
 
             final Map<URI, URI> map = new LinkedHashMap<URI, URI>();
             for (final File file : legal) {
@@ -649,9 +622,7 @@
         private Map<URI, URI> map() {
             final File jarContents = contents(this.file);
             final List<File> legal =
-                    Main.this.fileSystem.collect(jarContents,
-                            Main.this.fileSystem
-                                    .legalDocumentsDeclaredIn(jarContents));
+                    Main.this.fileSystem.legalDocumentsDeclaredIn(jarContents);
 
             final Map<URI, URI> map = new LinkedHashMap<URI, URI>();
             for (final File file : legal) {