blob: 365d1a56a0c57fa227d82549f37a8b8d10c7bddd [file] [log] [blame]
/*
* Copyright 2009-2010 by The Regents of the University of California
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may obtain a copy of the License from
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.uci.ics.hyracks.algebricks.core.jobgen.impl;
import java.util.HashMap;
import java.util.Map;
import edu.uci.ics.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import edu.uci.ics.hyracks.algebricks.core.algebra.base.ILogicalOperator;
import edu.uci.ics.hyracks.algebricks.core.algebra.base.LogicalVariable;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionEvalSizeComputer;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionRuntimeProvider;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IExpressionTypeComputer;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.INullableTypeComputer;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IPartialAggregationTypeComputer;
import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import edu.uci.ics.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
import edu.uci.ics.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
import edu.uci.ics.hyracks.algebricks.core.algebra.typing.ITypingContext;
import edu.uci.ics.hyracks.algebricks.data.IBinaryBooleanInspectorFactory;
import edu.uci.ics.hyracks.algebricks.data.IBinaryComparatorFactoryProvider;
import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFactoryProvider;
import edu.uci.ics.hyracks.algebricks.data.IBinaryHashFunctionFamilyProvider;
import edu.uci.ics.hyracks.algebricks.data.IBinaryIntegerInspectorFactory;
import edu.uci.ics.hyracks.algebricks.data.INormalizedKeyComputerFactoryProvider;
import edu.uci.ics.hyracks.algebricks.data.IPrinterFactoryProvider;
import edu.uci.ics.hyracks.algebricks.data.ISerializerDeserializerProvider;
import edu.uci.ics.hyracks.algebricks.data.ITypeTraitProvider;
import edu.uci.ics.hyracks.api.dataflow.value.INullWriterFactory;
public class JobGenContext {
private final IOperatorSchema outerFlowSchema;
private final Map<ILogicalOperator, IOperatorSchema> schemaMap = new HashMap<ILogicalOperator, IOperatorSchema>();
private final ISerializerDeserializerProvider serializerDeserializerProvider;
private final IBinaryHashFunctionFactoryProvider hashFunctionFactoryProvider;
private final IBinaryHashFunctionFamilyProvider hashFunctionFamilyProvider;
private final IBinaryComparatorFactoryProvider comparatorFactoryProvider;
private final IPrinterFactoryProvider printerFactoryProvider;
private final ITypeTraitProvider typeTraitProvider;
private final IMetadataProvider<?, ?> metadataProvider;
private final INullWriterFactory nullWriterFactory;
private final INormalizedKeyComputerFactoryProvider normalizedKeyComputerFactoryProvider;
private final Object appContext;
private final IBinaryBooleanInspectorFactory booleanInspectorFactory;
private final IBinaryIntegerInspectorFactory integerInspectorFactory;
private final IExpressionRuntimeProvider expressionRuntimeProvider;
private final IExpressionTypeComputer expressionTypeComputer;
private final IExpressionEvalSizeComputer expressionEvalSizeComputer;
private final IPartialAggregationTypeComputer partialAggregationTypeComputer;
private final int frameSize;
private AlgebricksPartitionConstraint clusterLocations;
private int varCounter;
private final ITypingContext typingContext;
public JobGenContext(
IOperatorSchema outerFlowSchema,
IMetadataProvider<?, ?> metadataProvider,
Object appContext,
ISerializerDeserializerProvider serializerDeserializerProvider,
IBinaryHashFunctionFactoryProvider hashFunctionFactoryProvider,
IBinaryHashFunctionFamilyProvider hashFunctionFamilyProvider,
IBinaryComparatorFactoryProvider comparatorFactoryProvider,
ITypeTraitProvider typeTraitProvider,
IBinaryBooleanInspectorFactory booleanInspectorFactory,
IBinaryIntegerInspectorFactory integerInspectorFactory,
IPrinterFactoryProvider printerFactoryProvider,
INullWriterFactory nullWriterFactory,
INormalizedKeyComputerFactoryProvider normalizedKeyComputerFactoryProvider,
IExpressionRuntimeProvider expressionRuntimeProvider,
IExpressionTypeComputer expressionTypeComputer,
INullableTypeComputer nullableTypeComputer,
ITypingContext typingContext,
IExpressionEvalSizeComputer expressionEvalSizeComputer,
IPartialAggregationTypeComputer partialAggregationTypeComputer,
int frameSize, AlgebricksPartitionConstraint clusterLocations) {
this.outerFlowSchema = outerFlowSchema;
this.metadataProvider = metadataProvider;
this.appContext = appContext;
this.serializerDeserializerProvider = serializerDeserializerProvider;
this.hashFunctionFactoryProvider = hashFunctionFactoryProvider;
this.hashFunctionFamilyProvider = hashFunctionFamilyProvider;
this.comparatorFactoryProvider = comparatorFactoryProvider;
this.typeTraitProvider = typeTraitProvider;
this.booleanInspectorFactory = booleanInspectorFactory;
this.integerInspectorFactory = integerInspectorFactory;
this.printerFactoryProvider = printerFactoryProvider;
this.clusterLocations = clusterLocations;
this.normalizedKeyComputerFactoryProvider = normalizedKeyComputerFactoryProvider;
this.nullWriterFactory = nullWriterFactory;
this.expressionRuntimeProvider = expressionRuntimeProvider;
this.expressionTypeComputer = expressionTypeComputer;
this.typingContext = typingContext;
this.expressionEvalSizeComputer = expressionEvalSizeComputer;
this.partialAggregationTypeComputer = partialAggregationTypeComputer;
this.frameSize = frameSize;
this.varCounter = 0;
}
public IOperatorSchema getOuterFlowSchema() {
return outerFlowSchema;
}
public AlgebricksPartitionConstraint getClusterLocations() {
return clusterLocations;
}
public IMetadataProvider<?, ?> getMetadataProvider() {
return metadataProvider;
}
public Object getAppContext() {
return appContext;
}
public ISerializerDeserializerProvider getSerializerDeserializerProvider() {
return serializerDeserializerProvider;
}
public IBinaryHashFunctionFactoryProvider getBinaryHashFunctionFactoryProvider() {
return hashFunctionFactoryProvider;
}
public IBinaryHashFunctionFamilyProvider getBinaryHashFunctionFamilyProvider() {
return hashFunctionFamilyProvider;
}
public IBinaryComparatorFactoryProvider getBinaryComparatorFactoryProvider() {
return comparatorFactoryProvider;
}
public ITypeTraitProvider getTypeTraitProvider() {
return typeTraitProvider;
}
public IBinaryBooleanInspectorFactory getBinaryBooleanInspectorFactory() {
return booleanInspectorFactory;
}
public IBinaryIntegerInspectorFactory getBinaryIntegerInspectorFactory() {
return integerInspectorFactory;
}
public IPrinterFactoryProvider getPrinterFactoryProvider() {
return printerFactoryProvider;
}
public IExpressionRuntimeProvider getExpressionRuntimeProvider() {
return expressionRuntimeProvider;
}
public IOperatorSchema getSchema(ILogicalOperator op) {
return schemaMap.get(op);
}
public void putSchema(ILogicalOperator op, IOperatorSchema schema) {
schemaMap.put(op, schema);
}
public LogicalVariable createNewVar() {
varCounter++;
LogicalVariable var = new LogicalVariable(-varCounter);
return var;
}
public Object getType(ILogicalExpression expr, IVariableTypeEnvironment env)
throws AlgebricksException {
return expressionTypeComputer.getType(expr,
typingContext.getMetadataProvider(), env);
}
public INullWriterFactory getNullWriterFactory() {
return nullWriterFactory;
}
public INormalizedKeyComputerFactoryProvider getNormalizedKeyComputerFactoryProvider() {
return normalizedKeyComputerFactoryProvider;
}
public IExpressionEvalSizeComputer getExpressionEvalSizeComputer() {
return expressionEvalSizeComputer;
}
public int getFrameSize() {
return frameSize;
}
public IPartialAggregationTypeComputer getPartialAggregationTypeComputer() {
return partialAggregationTypeComputer;
}
public IVariableTypeEnvironment getTypeEnvironment(ILogicalOperator op) {
return typingContext.getOutputTypeEnvironment(op);
}
}