package org.olap4j.driver.olap4ld.helper;
import org.olap4j.driver.olap4ld.linkeddata.BaseCubeOp;
import org.olap4j.driver.olap4ld.linkeddata.ConvertCubeOp;
import org.olap4j.driver.olap4ld.linkeddata.DiceOp;
import org.olap4j.driver.olap4ld.linkeddata.DrillAcrossOp;
import org.olap4j.driver.olap4ld.linkeddata.LogicalOlapOp;
import org.olap4j.driver.olap4ld.linkeddata.LogicalOlapOperatorQueryPlanVisitor;
import org.olap4j.driver.olap4ld.linkeddata.ProjectionOp;
import org.olap4j.driver.olap4ld.linkeddata.QueryException;
import org.olap4j.driver.olap4ld.linkeddata.RollupOp;
import org.olap4j.driver.olap4ld.linkeddata.SliceOp;
/**
* Looks for occurence of operator.
*
* @author benedikt
*
*/
public class GetFirstOccurrenceVisitor implements
LogicalOlapOperatorQueryPlanVisitor {
private LogicalOlapOp operator;
private LogicalOlapOp firstoccurence = null;
public GetFirstOccurrenceVisitor(LogicalOlapOp operator) {
this.operator = operator;
}
@Override
public void visit(Object op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(ConvertCubeOp op) throws QueryException {
if (operator instanceof ConvertCubeOp) {
if (((ConvertCubeOp) operator).conversioncorrespondence != null) {
if (op.conversioncorrespondence
.equals(((ConvertCubeOp) operator).conversioncorrespondence)) {
this.firstoccurence = op;
}
} else {
this.firstoccurence = op;
}
}
}
@Override
public void visit(DrillAcrossOp op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(RollupOp op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(SliceOp op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(DiceOp op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(ProjectionOp op) throws QueryException {
// TODO Auto-generated method stub
}
@Override
public void visit(BaseCubeOp op) throws QueryException {
if (operator instanceof BaseCubeOp) {
if (((BaseCubeOp) operator).dataseturi != null) {
if (((BaseCubeOp) operator).dataseturi.equals(op.dataseturi)) {
this.firstoccurence = op;
}
} else {
this.firstoccurence = op;
}
}
}
@Override
public Object getNewRoot() throws QueryException {
// TODO Auto-generated method stub
return null;
}
public LogicalOlapOp getFirstOccurence() {
return this.firstoccurence;
}
}