use some java 7

Signed-off-by: olivier lamy <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/maven-indexer/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-indexer/commit/a49cfdc3
Tree: http://git-wip-us.apache.org/repos/asf/maven-indexer/tree/a49cfdc3
Diff: http://git-wip-us.apache.org/repos/asf/maven-indexer/diff/a49cfdc3

Branch: refs/heads/master
Commit: a49cfdc39a8fa0a33a388e768101b917aca5cf19
Parents: 8f5417f
Author: olivier lamy <[email protected]>
Authored: Mon Jul 17 18:40:27 2017 +1000
Committer: olivier lamy <[email protected]>
Committed: Mon Jul 17 18:40:27 2017 +1000

----------------------------------------------------------------------
 .../apache/maven/index/DefaultNexusIndexer.java |   1 +
 .../index/context/DefaultIndexingContext.java   |   1 +
 .../index/context/MergedIndexingContext.java    |   1 +
 .../index/DefaultIndexNexusIndexerTest.java     |   6 +-
 .../maven/index/FullIndexNexusIndexerTest.java  |   6 +-
 .../maven/index/Nexus13NexusIndexerTest.java    |   6 +-
 .../apache/maven/index/NexusIndexerTest.java    |   6 +-
 .../updater/DefaultIndexUpdaterEmbeddingIT.java |  32 +-
 .../index/updater/FullBootProofOfConcept.java   |   1 +
 .../apache/maven/index/reader/TestSupport.java  | 298 ++++++++++---------
 10 files changed, 188 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java 
b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
index 5453caa..3530edd 100644
--- a/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
+++ b/indexer-core/src/main/java/org/apache/maven/index/DefaultNexusIndexer.java
@@ -270,6 +270,7 @@ public class DefaultNexusIndexer
 
         // always use temporary context when reindexing
         final File tmpFile = File.createTempFile( context.getId() + "-tmp", "" 
);
+        tmpFile.deleteOnExit();
         final File tmpDir = new File( tmpFile.getParentFile(), 
tmpFile.getName() + ".dir" );
         if ( !tmpDir.mkdirs() )
         {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
 
b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
index c7ede33..9a01d4c 100644
--- 
a/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
+++ 
b/indexer-core/src/main/java/org/apache/maven/index/context/DefaultIndexingContext.java
@@ -213,6 +213,7 @@ public class DefaultIndexingContext
         {
             // best effort, to have a directory thru the life of a ctx
             File tmpFile = File.createTempFile( "mindexer-ctx" + id, "tmp" );
+            tmpFile.deleteOnExit();
             tmpFile.delete();
             tmpFile.mkdirs();
             this.indexDirectoryFile = tmpFile;

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
 
b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
index 45d93c7..82cb3ab 100644
--- 
a/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
+++ 
b/indexer-core/src/main/java/org/apache/maven/index/context/MergedIndexingContext.java
@@ -308,6 +308,7 @@ public class MergedIndexingContext
         {
             // best effort, to have a directory thru the life of a ctx
             File tmpFile = File.createTempFile( "mindexer-ctx" + id, "tmp" );
+            tmpFile.deleteOnExit();
             tmpFile.delete();
             tmpFile.mkdirs();
             this.directoryFile = tmpFile;

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
 
b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
index 195b472..e049496 100644
--- 
a/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
+++ 
b/indexer-core/src/test/java/org/apache/maven/index/DefaultIndexNexusIndexerTest.java
@@ -20,6 +20,7 @@ package org.apache.maven.index;
  */
 
 import java.io.File;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
@@ -160,9 +161,8 @@ public class DefaultIndexNexusIndexerTest
     public void testIndexTimestamp()
         throws Exception
     {
-        final File targetDir = File.createTempFile( "testIndexTimestamp", 
"ut-tmp" );
-        targetDir.delete();
-        targetDir.mkdirs();
+        final File targetDir = Files.createTempDirectory( 
"testIndexTimestamp").toFile();
+        targetDir.deleteOnExit();
 
         final IndexPacker indexPacker = lookup( IndexPacker.class );
         final IndexSearcher indexSearcher = context.acquireIndexSearcher();

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
 
b/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
index b745237..0c5e140 100644
--- 
a/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
+++ 
b/indexer-core/src/test/java/org/apache/maven/index/FullIndexNexusIndexerTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.index;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
@@ -335,9 +336,8 @@ public class FullIndexNexusIndexerTest
     public void testIndexTimestamp()
         throws Exception
     {
-        final File targetDir = File.createTempFile( "testIndexTimestamp", 
"ut-tmp" );
-        targetDir.delete();
-        targetDir.mkdirs();
+        final File targetDir = Files.createTempDirectory("testIndexTimestamp" 
).toFile();
+        targetDir.deleteOnExit();
 
         final IndexPacker indexPacker = lookup( IndexPacker.class );
         final IndexSearcher indexSearcher = context.acquireIndexSearcher();

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
 
b/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
index c93e9f5..f520a9e 100644
--- 
a/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
+++ 
b/indexer-core/src/test/java/org/apache/maven/index/Nexus13NexusIndexerTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.index;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -111,9 +112,8 @@ public class Nexus13NexusIndexerTest
     public void testIndexTimestamp()
         throws Exception
     {
-        final File targetDir = File.createTempFile( "testIndexTimestamp", 
"ut-tmp" );
-        targetDir.delete();
-        targetDir.mkdirs();
+        final File targetDir = Files.createTempDirectory( "testIndexTimestamp" 
).toFile();
+        targetDir.deleteOnExit();
 
         final IndexPacker indexPacker = lookup( IndexPacker.class );
         final IndexSearcher indexSearcher = context.acquireIndexSearcher();

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java 
b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
index 52736a7..21d1f92 100644
--- a/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
+++ b/indexer-core/src/test/java/org/apache/maven/index/NexusIndexerTest.java
@@ -27,6 +27,7 @@ import java.io.FileReader;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -567,9 +568,8 @@ public class NexusIndexerTest
         List<IndexCreator> indexCreators = context.getIndexCreators();
         // Directory directory = context.getIndexDirectory();
 
-        final File targetDir = File.createTempFile( "testIndexTimestamp", 
"ut-tmp" );
-        targetDir.delete();
-        targetDir.mkdirs();
+        final File targetDir = Files.createTempDirectory("testIndexTimestamp" 
).toFile();
+        targetDir.deleteOnExit();
 
         final IndexPacker indexPacker = lookup( IndexPacker.class );
         final IndexSearcher indexSearcher = context.acquireIndexSearcher();

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
 
b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
index c9e948c..83f719d 100644
--- 
a/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
+++ 
b/indexer-core/src/test/java/org/apache/maven/index/updater/DefaultIndexUpdaterEmbeddingIT.java
@@ -22,6 +22,7 @@ package org.apache.maven.index.updater;
 import java.io.File;
 import java.io.IOException;
 import java.net.ServerSocket;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -90,7 +91,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testBasicIndexRetrieval()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
         basedir.delete();
         basedir.mkdirs();
 
@@ -121,9 +122,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testBasicAuthenticatedIndexRetrieval()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {
@@ -160,9 +159,8 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testAuthenticatedIndexRetrieval_LongAuthorizationHeader()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
+
 
         try
         {
@@ -199,9 +197,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testBasicHighLatencyIndexRetrieval()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {
@@ -239,9 +235,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void OFFtestHighLatencyIndexRetrieval_LowConnectionTimeout()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {
@@ -296,9 +290,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void OFFtestHighLatencyIndexRetrieval_LowTransactionTimeout()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {
@@ -352,9 +344,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testIndexRetrieval_InfiniteRedirection()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {
@@ -396,9 +386,7 @@ public class DefaultIndexUpdaterEmbeddingIT
     public void testIndexRetrieval_BadHostname()
         throws IOException, UnsupportedExistingLuceneIndexException, 
ComponentLookupException
     {
-        File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
-        basedir.delete();
-        basedir.mkdirs();
+        File basedir = Files.createTempDirectory( "nexus-indexer." ).toFile();
 
         try
         {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
----------------------------------------------------------------------
diff --git 
a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
 
b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
index aa32a26..8b55b24 100644
--- 
a/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
+++ 
b/indexer-core/src/test/java/org/apache/maven/index/updater/FullBootProofOfConcept.java
@@ -49,6 +49,7 @@ public class FullBootProofOfConcept
         for ( int i = 0; i < 1; i++ )
         {
             File basedir = File.createTempFile( "nexus-indexer.", ".dir" );
+            basedir.deleteOnExit();
 
             try
             {

http://git-wip-us.apache.org/repos/asf/maven-indexer/blob/a49cfdc3/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
----------------------------------------------------------------------
diff --git 
a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java 
b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
index 8edfbb7..957bf58 100644
--- 
a/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
+++ 
b/indexer-reader/src/test/java/org/apache/maven/index/reader/TestSupport.java
@@ -19,6 +19,12 @@ package org.apache.maven.index.reader;
  * under the License.
  */
 
+import org.apache.maven.index.reader.Record.Type;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TestName;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -26,12 +32,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.maven.index.reader.Record.Type;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.rules.TestName;
-
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
@@ -40,145 +40,171 @@ import static org.junit.Assert.assertThat;
  */
 public class TestSupport
 {
-  @Rule
-  public TestName testName = new TestName();
-
-  private File tempDir;
-
-  private List<DirectoryResourceHandler> directoryResourceHandlers;
-
-  /**
-   * Creates the temp directory and list for resource handlers.
-   */
-  @Before
-  public void setup() throws IOException {
-    this.tempDir = new File("target/tmp-" + getClass().getSimpleName());
-    this.tempDir.delete();
-    this.tempDir.mkdirs();
-    this.directoryResourceHandlers = new ArrayList<>();
-  }
-
-  /**
-   * Closes all the registered resources handlers and deletes the temp 
directory.
-   */
-  @After
-  public void cleanup() throws IOException {
-    for (DirectoryResourceHandler directoryResourceHandler : 
directoryResourceHandlers) {
-      directoryResourceHandler.close();
+    @Rule
+    public TestName testName = new TestName();
+
+    private File tempDir;
+
+    private List<DirectoryResourceHandler> directoryResourceHandlers;
+
+    /**
+     * Creates the temp directory and list for resource handlers.
+     */
+    @Before
+    public void setup()
+        throws IOException
+    {
+        this.tempDir = new File( "target/tmp-" + getClass().getSimpleName() );
+        this.tempDir.delete();
+        this.tempDir.mkdirs();
+        this.directoryResourceHandlers = new ArrayList<>();
     }
-    // delete(tempDir);
-  }
-
-  /**
-   * Creates a temp file within {@link #tempDir}.
-   */
-  protected File createTempFile() throws IOException {
-    return File.createTempFile(testName.getMethodName() + "-file", "", 
tempDir);
-  }
-
-
-  /**
-   * Creates a temp file within {@link #tempDir} with given name.
-   */
-  protected File createTempFile(final String name) throws IOException {
-    return new File(tempDir, name);
-  }
-
-  /**
-   * Creates a temp directory within {@link #tempDir}.
-   */
-  protected File createTempDirectory() throws IOException {
-    File result = File.createTempFile(testName.getMethodName() + "-dir", "", 
tempDir);
-    result.delete();
-    result.mkdirs();
-    return result;
-  }
-
-  /**
-   * Creates an empty {@link DirectoryResourceHandler}.
-   */
-  protected WritableResourceHandler createWritableResourceHandler() throws 
IOException {
-    DirectoryResourceHandler result = new 
DirectoryResourceHandler(createTempDirectory());
-    directoryResourceHandlers.add(result);
-    return result;
-  }
-
-  /**
-   * Creates a "test" {@link ResourceHandler} that contains predefined files, 
is mapped to test resources under given
-   * name.
-   */
-  protected ResourceHandler testResourceHandler(final String name) throws 
IOException {
-    DirectoryResourceHandler result = new DirectoryResourceHandler(new 
File("src/test/resources/" + name));
-    directoryResourceHandlers.add(result);
-    return result;
-  }
-
-  /**
-   * Consumes {@link ChunkReader} and creates a map "by type" with records.
-   */
-  protected Map<Type, List<Record>> loadRecordsByType(final ChunkReader 
chunkReader) throws IOException {
-    HashMap<Type, List<Record>> stat = new HashMap<Type, List<Record>>();
-    try {
-      assertThat(chunkReader.getVersion(), equalTo(1));
-      final RecordExpander recordExpander = new RecordExpander();
-      for (Map<String, String> rec : chunkReader) {
-        final Record record = recordExpander.apply(rec);
-        if (!stat.containsKey(record.getType())) {
-          stat.put(record.getType(), new ArrayList<Record>());
+
+    /**
+     * Closes all the registered resources handlers and deletes the temp 
directory.
+     */
+    @After
+    public void cleanup()
+        throws IOException
+    {
+        for ( DirectoryResourceHandler directoryResourceHandler : 
directoryResourceHandlers )
+        {
+            directoryResourceHandler.close();
         }
-        stat.get(record.getType()).add(record);
-      }
+        // delete(tempDir);
     }
-    finally {
-      chunkReader.close();
+
+    /**
+     * Creates a temp file within {@link #tempDir} with given name.
+     */
+    protected File createTempFile( final String name )
+        throws IOException
+    {
+        File file = new File( tempDir, name );
+        file.deleteOnExit();
+        return file;
     }
-    return stat;
-  }
-
-
-  /**
-   * Consumes {@link ChunkReader} and creates a map "by type" with record type 
counts.
-   */
-  protected Map<Type, Integer> countRecordsByType(final ChunkReader 
chunkReader) throws IOException {
-    HashMap<Type, Integer> stat = new HashMap<Type, Integer>();
-    try {
-      assertThat(chunkReader.getVersion(), equalTo(1));
-      final RecordExpander recordExpander = new RecordExpander();
-      for (Map<String, String> rec : chunkReader) {
-        final Record record = recordExpander.apply(rec);
-        if (!stat.containsKey(record.getType())) {
-          stat.put(record.getType(), 0);
-        }
-        stat.put(record.getType(), stat.get(record.getType()) + 1);
-      }
+
+    /**
+     * Creates a temp directory within {@link #tempDir}.
+     */
+    protected File createTempDirectory()
+        throws IOException
+    {
+        File result = File.createTempFile( testName.getMethodName() + "-dir", 
"", tempDir );
+        result.delete();
+        result.mkdirs();
+        return result;
+    }
+
+    /**
+     * Creates an empty {@link DirectoryResourceHandler}.
+     */
+    protected WritableResourceHandler createWritableResourceHandler()
+        throws IOException
+    {
+        DirectoryResourceHandler result = new DirectoryResourceHandler( 
createTempDirectory() );
+        directoryResourceHandlers.add( result );
+        return result;
     }
-    finally {
-      chunkReader.close();
+
+    /**
+     * Creates a "test" {@link ResourceHandler} that contains predefined 
files, is mapped to test resources under given
+     * name.
+     */
+    protected ResourceHandler testResourceHandler( final String name )
+        throws IOException
+    {
+        DirectoryResourceHandler result = new DirectoryResourceHandler( new 
File( "src/test/resources/" + name ) );
+        directoryResourceHandlers.add( result );
+        return result;
     }
-    return stat;
-  }
-
-  /**
-   * Delete recursively.
-   */
-  private static boolean delete(final File file) {
-    if (file == null) {
-      return false;
+
+    /**
+     * Consumes {@link ChunkReader} and creates a map "by type" with records.
+     */
+    protected Map<Type, List<Record>> loadRecordsByType( final ChunkReader 
chunkReader )
+        throws IOException
+    {
+        HashMap<Type, List<Record>> stat = new HashMap<Type, List<Record>>();
+        try
+        {
+            assertThat( chunkReader.getVersion(), equalTo( 1 ) );
+            final RecordExpander recordExpander = new RecordExpander();
+            for ( Map<String, String> rec : chunkReader )
+            {
+                final Record record = recordExpander.apply( rec );
+                if ( !stat.containsKey( record.getType() ) )
+                {
+                    stat.put( record.getType(), new ArrayList<Record>() );
+                }
+                stat.get( record.getType() ).add( record );
+            }
+        }
+        finally
+        {
+            chunkReader.close();
+        }
+        return stat;
     }
-    if (!file.exists()) {
-      return true;
+
+
+    /**
+     * Consumes {@link ChunkReader} and creates a map "by type" with record 
type counts.
+     */
+    protected Map<Type, Integer> countRecordsByType( final ChunkReader 
chunkReader )
+        throws IOException
+    {
+        HashMap<Type, Integer> stat = new HashMap<Type, Integer>();
+        try
+        {
+            assertThat( chunkReader.getVersion(), equalTo( 1 ) );
+            final RecordExpander recordExpander = new RecordExpander();
+            for ( Map<String, String> rec : chunkReader )
+            {
+                final Record record = recordExpander.apply( rec );
+                if ( !stat.containsKey( record.getType() ) )
+                {
+                    stat.put( record.getType(), 0 );
+                }
+                stat.put( record.getType(), stat.get( record.getType() ) + 1 );
+            }
+        }
+        finally
+        {
+            chunkReader.close();
+        }
+        return stat;
     }
-    if (file.isDirectory()) {
-      String[] list = file.list();
-      if (list != null) {
-        for (int i = 0; i < list.length; i++) {
-          File entry = new File(file, list[i]);
-          if (!delete(entry)) {
+
+    /**
+     * Delete recursively.
+     */
+    private static boolean delete( final File file )
+    {
+        if ( file == null )
+        {
             return false;
-          }
         }
-      }
+        if ( !file.exists() )
+        {
+            return true;
+        }
+        if ( file.isDirectory() )
+        {
+            String[] list = file.list();
+            if ( list != null )
+            {
+                for ( int i = 0; i < list.length; i++ )
+                {
+                    File entry = new File( file, list[i] );
+                    if ( !delete( entry ) )
+                    {
+                        return false;
+                    }
+                }
+            }
+        }
+        return file.delete();
     }
-    return file.delete();
-  }
 }

Reply via email to