package dk.statsbiblioteket.medieplatform.autonomous.iterator.filesystem.transforming;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.AttributeParsingEvent;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.DataFileNodeBeginsParsingEvent;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.DataFileNodeEndsParsingEvent;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.DelegatingTreeIterator;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.NodeBeginsParsingEvent;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.common.NodeEndParsingEvent;
import dk.statsbiblioteket.medieplatform.autonomous.iterator.filesystem.FileAttributeParsingEvent;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
/**
* This class represents the virtual folder that will be created for all datafiles. Each datafile will be created
* as a folder containing one file, named content, which represents the content of the datafile
*/
public class DatafileIterator extends CommonTransformingIterator {
private static final String CONTENTS = "contents";
public DatafileIterator(File dataFile, File batchFolder, String checksumPostfix, String groupingChar) {
super(dataFile, batchFolder, null, checksumPostfix, groupingChar);
}
@Override
protected Iterator<DelegatingTreeIterator> initializeChildrenIterator() {
//returns empty iterator, datafiles will have no children
return Collections.emptyIterator();
}
@Override
protected Iterator<File> initilizeAttributeIterator() {
return Arrays.asList(id).iterator();
}
@Override
protected AttributeParsingEvent makeAttributeEvent(File nodeID, File attributeID) {
return new FileAttributeParsingEvent(
toPathID(new File(attributeID, CONTENTS)), attributeID, getChecksumPostfix());
}
/**
* In this implementation, the location is the absolute path to the directory represented by this node.
* @return
*/
@Override
protected NodeEndParsingEvent createNodeEndsParsingEvent() {
return new DataFileNodeEndsParsingEvent(getIdOfNode(), id.getAbsolutePath());
}
/**
* In this implementation, the location is the absolute path to the directory represented by this node.
* @return
*/
@Override
protected NodeBeginsParsingEvent createNodeBeginsParsingEvent() {
return new DataFileNodeBeginsParsingEvent(getIdOfNode(), id.getAbsolutePath());
}
}