blob: 467ec0ac27c131124f0caee2bf9cab46ee1bcbad [file] [log] [blame]
package edu.uci.ics.hivesterix.runtime.provider;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveByteBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveDoubleBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveFloatBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveIntegerBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveLongBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveShortBinaryDescComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryAscComparatorFactory;
import edu.uci.ics.hivesterix.runtime.factory.comparator.HiveStringBinaryDescComparatorFactory;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.common.exceptions.NotImplementedException;
import edu.uci.ics.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
public class HiveBinaryComparatorFactoryProvider implements IBinaryComparatorFactoryProvider {
public static final HiveBinaryComparatorFactoryProvider INSTANCE = new HiveBinaryComparatorFactoryProvider();
private HiveBinaryComparatorFactoryProvider() {
}
@Override
public IBinaryComparatorFactory getBinaryComparatorFactory(Object type, boolean ascending)
throws AlgebricksException {
if (type.equals(TypeInfoFactory.intTypeInfo)) {
if (ascending)
return HiveIntegerBinaryAscComparatorFactory.INSTANCE;
else
return HiveIntegerBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.longTypeInfo)) {
if (ascending)
return HiveLongBinaryAscComparatorFactory.INSTANCE;
else
return HiveLongBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.floatTypeInfo)) {
if (ascending)
return HiveFloatBinaryAscComparatorFactory.INSTANCE;
else
return HiveFloatBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.doubleTypeInfo)) {
if (ascending)
return HiveDoubleBinaryAscComparatorFactory.INSTANCE;
else
return HiveDoubleBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.shortTypeInfo)) {
if (ascending)
return HiveShortBinaryAscComparatorFactory.INSTANCE;
else
return HiveShortBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.stringTypeInfo)) {
if (ascending)
return HiveStringBinaryAscComparatorFactory.INSTANCE;
else
return HiveStringBinaryDescComparatorFactory.INSTANCE;
} else if (type.equals(TypeInfoFactory.byteTypeInfo) || type.equals(TypeInfoFactory.booleanTypeInfo)) {
if (ascending)
return HiveByteBinaryAscComparatorFactory.INSTANCE;
else
return HiveByteBinaryDescComparatorFactory.INSTANCE;
} else
throw new NotImplementedException();
}
}