001 package com.croftsoft.core.util.filemap;
002
003 import java.io.*;
004 import java.util.*;
005
006 /*********************************************************************
007 * This Iterator is required for the AbstractMap implementation of
008 * FileMap.
009 *
010 * @see
011 * FileMap
012 * @see
013 * java.util.AbstractSet
014 *
015 * @version
016 * 1999-04-03
017 * @author
018 * <a href="http://www.CroftSoft.com/">David Wallace Croft</a>
019 *********************************************************************/
020
021 public class FileMapEntryIterator implements Iterator
022 //////////////////////////////////////////////////////////////////////
023 //////////////////////////////////////////////////////////////////////
024 {
025
026 private File rootDirectory;
027
028 private String [ ] files;
029 private int index = 0;
030
031 //////////////////////////////////////////////////////////////////////
032 //////////////////////////////////////////////////////////////////////
033
034 public FileMapEntryIterator ( File rootDirectory )
035 //////////////////////////////////////////////////////////////////////
036 {
037 this.rootDirectory = rootDirectory;
038 }
039
040 //////////////////////////////////////////////////////////////////////
041 //////////////////////////////////////////////////////////////////////
042
043 public synchronized boolean hasNext ( )
044 //////////////////////////////////////////////////////////////////////
045 {
046 if ( files == null ) files = rootDirectory.list ( );
047
048 if ( files == null ) return false;
049
050 return ( index < files.length );
051 }
052
053 public synchronized Object next ( )
054 //////////////////////////////////////////////////////////////////////
055 {
056 if ( files == null ) files = rootDirectory.list ( );
057
058 if ( files == null ) return null;
059
060 if ( index >= files.length ) return null;
061
062 return new FileMapEntry ( rootDirectory, files [ index++ ] );
063 }
064
065 public synchronized void remove ( )
066 //////////////////////////////////////////////////////////////////////
067 {
068 if ( files == null ) files = rootDirectory.list ( );
069
070 if ( files == null ) return;
071
072 if ( index >= files.length ) return;
073
074 new File ( files [ index ] ).delete ( );
075 }
076
077 //////////////////////////////////////////////////////////////////////
078 //////////////////////////////////////////////////////////////////////
079 }