blob: 6763d459f77fa96449721eae83fbd1904e08bead [file] [log] [blame]
package edu.uci.ics.hyracks.algebricks.examples.piglet.metadata;
import java.util.ArrayList;
import java.util.List;
import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSource;
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.FileSplitDomain;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
import edu.uci.ics.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
import edu.uci.ics.hyracks.dataflow.std.file.FileSplit;
public class PigletFileDataSource implements IDataSource<String> {
private final String file;
private final Object[] types;
private final FileSplit[] fileSplits;
private IDataSourcePropertiesProvider propProvider;
public PigletFileDataSource(String file, Object[] types) {
this.file = file;
this.types = types;
fileSplits = FileSplitUtils.parseFileSplits(file);
final IPhysicalPropertiesVector vec = new StructuralPropertiesVector(new RandomPartitioningProperty(
new FileSplitDomain(fileSplits)), new ArrayList<ILocalStructuralProperty>());
propProvider = new IDataSourcePropertiesProvider() {
@Override
public IPhysicalPropertiesVector computePropertiesVector(List<LogicalVariable> scanVariables) {
return vec;
}
};
}
@Override
public String getId() {
return file;
}
@Override
public Object[] getSchemaTypes() {
return types;
}
public FileSplit[] getFileSplits() {
return fileSplits;
}
@Override
public IDataSourcePropertiesProvider getPropertiesProvider() {
return propProvider;
}
@Override
public void computeFDs(List<LogicalVariable> scanVariables, List<FunctionalDependency> fdList) {
}
}