blob: 754094a1729dc1e294565af1aa51cdee8a483c99 [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.control.cc.job;
import java.util.HashSet;
import java.util.Set;
import edu.uci.ics.hyracks.api.dataflow.IConnectorDescriptor;
import edu.uci.ics.hyracks.api.dataflow.IOperatorDescriptor;
import edu.uci.ics.hyracks.api.dataflow.OperatorDescriptorId;
import edu.uci.ics.hyracks.api.exceptions.HyracksException;
import edu.uci.ics.hyracks.api.job.JobSpecification;
public class PlanUtils {
public static void visit(JobSpecification spec, IOperatorDescriptorVisitor visitor) throws HyracksException {
Set<OperatorDescriptorId> seen = new HashSet<OperatorDescriptorId>();
for (IOperatorDescriptor op : spec.getOperatorMap().values()) {
visitOperator(visitor, seen, op);
}
}
private static void visitOperator(IOperatorDescriptorVisitor visitor, Set<OperatorDescriptorId> seen,
IOperatorDescriptor op) throws HyracksException {
if (!seen.contains(op)) {
visitor.visit(op);
}
seen.add(op.getOperatorId());
}
public static void visit(JobSpecification spec, IConnectorDescriptorVisitor visitor) throws HyracksException {
for (IConnectorDescriptor c : spec.getConnectorMap().values()) {
visitor.visit(c);
}
}
}