package dk.statsbiblioteket.medieplatform.autonomous.iterator.filesystem.transforming;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.DelegatingTreeIterator;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
/**
* This class represents an iterator over a virtual folder, ie. a folder representing a group of files with identical
* prefixes
*/
public class VirtualIteratorForFileSystems extends CommonTransformingIterator {
protected String prefix;
private List<File> group;
private List<DelegatingTreeIterator> virtualChildren;
public VirtualIteratorForFileSystems(File id, String prefix, File batchFolder, String dataFilePattern,
List<File> group, String groupingChar, String checksumPostfix) {
super(new File(id, prefix), batchFolder, dataFilePattern, checksumPostfix, groupingChar);
this.prefix = prefix;
this.group = group;
virtualChildren = new ArrayList<>();
}
@Override
protected Iterator<DelegatingTreeIterator> initializeChildrenIterator() {
return virtualChildren.iterator();
}
@Override
protected Iterator<File> initilizeAttributeIterator() {
Collection<File> datafiles = getDataFiles(group);
for (File dataFile : datafiles) {
group.remove(dataFile);
virtualChildren.add(
new DatafileIterator(
dataFile, getBatchFolder(), getChecksumPostfix(), getGroupingChar()));
}
return group.iterator();
}
}