package com.thinkaurelius.faunus.formats.titan;
import com.thinkaurelius.faunus.FaunusVertex;
import com.thinkaurelius.faunus.formats.VertexQueryFilter;
import com.thinkaurelius.titan.core.TitanGraph;
import com.thinkaurelius.titan.diskstorage.StaticBuffer;
import com.thinkaurelius.titan.diskstorage.keycolumnvalue.SliceQuery;
import com.thinkaurelius.titan.diskstorage.util.StaticByteBuffer;
import com.thinkaurelius.titan.graphdb.database.idhandling.IDHandler;
import com.thinkaurelius.titan.graphdb.internal.RelationType;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.mapreduce.InputFormat;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public abstract class TitanInputFormat extends InputFormat<NullWritable, FaunusVertex> implements Configurable {
public static final String FAUNUS_GRAPH_INPUT_TITAN_STORAGE_HOSTNAME = "faunus.graph.input.titan.storage.hostname";
public static final String FAUNUS_GRAPH_INPUT_TITAN_STORAGE_PORT = "faunus.graph.input.titan.storage.port";
public static final String FAUNUS_GRAPH_INPUT_TITAN = "faunus.graph.input.titan";
private static final StaticBuffer DEFAULT_COLUMN = new StaticByteBuffer(new byte[0]);
private static final SliceQuery DEFAULT_SLICE_QUERY = new SliceQuery(DEFAULT_COLUMN, DEFAULT_COLUMN);
public static SliceQuery inputSlice(final VertexQueryFilter inputFilter, final TitanGraph graph) {
if (inputFilter.limit == 0) {
final StaticBuffer[] endPoints = IDHandler.getBounds(RelationType.PROPERTY);
return new SliceQuery(endPoints[0], endPoints[1]).setLimit(Integer.MAX_VALUE);
} else {
return DEFAULT_SLICE_QUERY;
}
}
}