Package com.sap.hadoop.windowing.query2.translate

Source Code of com.sap.hadoop.windowing.query2.translate.TableFunctionChainIterators$ReverseQueryInputDefIterator

package com.sap.hadoop.windowing.query2.translate;

import java.util.Iterator;

import com.sap.hadoop.Utils.Predicate;
import com.sap.hadoop.Utils.ReverseIterator;
import com.sap.hadoop.windowing.query2.definition.QueryDef;
import com.sap.hadoop.windowing.query2.definition.QueryInputDef;
import com.sap.hadoop.windowing.query2.definition.TableFuncDef;
import com.sap.hadoop.windowing.query2.specification.QueryInputSpec;
import com.sap.hadoop.windowing.query2.specification.QuerySpec;
import com.sap.hadoop.windowing.query2.specification.TableFuncSpec;

public class TableFunctionChainIterators
{
  public static Predicate<QueryInputSpec> IsTableFunc = new Predicate<QueryInputSpec>() {
    public boolean apply(QueryInputSpec obj) { return obj != null && obj instanceof TableFuncSpec; }
  };
 
  public static class QueryInputSpecIterator implements Iterator<QueryInputSpec>
  {
    QuerySpec qSpec;
    QueryInputSpec nextInput;
   
    public QueryInputSpecIterator(QuerySpec qSpec)
    {
      this.qSpec = qSpec;
      nextInput = qSpec.getInput();
    }
   
    @Override
    public boolean hasNext()
    {
      return nextInput != null;
    }

    @Override
    public QueryInputSpec next()
    {
      QueryInputSpec curr = nextInput;
      if ( curr instanceof TableFuncSpec)
      {
        TableFuncSpec tFunc = (TableFuncSpec) curr;
        nextInput = tFunc.getInput();
      }
      else
      {
        nextInput = null;
      }
      return curr;
    }

    @Override
    public void remove()
    {
      throw new UnsupportedOperationException();
    }
  }
 
  public static class ReverseQueryInputSpecIterator extends ReverseIterator<QueryInputSpec>
  {
    ReverseQueryInputSpecIterator(QuerySpec qSpec)
    {
      super(new QueryInputSpecIterator(qSpec));
    }
  }
  public static class TableFunctionSpecIterator implements Iterator<TableFuncSpec>
  {
    QueryInputSpecIterator qSpecIt;
    TableFuncSpec nextInput;
   
    public TableFunctionSpecIterator(QuerySpec qSpec)
    {
      qSpecIt = new QueryInputSpecIterator(qSpec);
    }

    @Override
    public boolean hasNext()
    {
      if ( qSpecIt.hasNext())
      {
        QueryInputSpec iSpec = qSpecIt.next();
        if ( iSpec instanceof TableFuncSpec)
        {
          nextInput = (TableFuncSpec) iSpec;
          return true;
        }
      }
      return false;
    }

    @Override
    public TableFuncSpec next()
    {
      return nextInput;
    }

    @Override
    public void remove()
    {
      throw new UnsupportedOperationException();
    }
  }
 
  public static class ReverseTableFunctionSpecIterator extends ReverseIterator<TableFuncSpec>
  {
    ReverseTableFunctionSpecIterator(QuerySpec qSpec)
    {
      super(new TableFunctionSpecIterator(qSpec));
    }
  }
 
  public static class QueryInputDefIterator implements Iterator<QueryInputDef>
  {
    QueryDef qDef;
    QueryInputDef nextInput;
   
    public QueryInputDefIterator(QueryDef qDef)
    {
      this.qDef = qDef;
      nextInput = qDef.getInput();
    }
   
    @Override
    public boolean hasNext()
    {
      return nextInput != null;
    }

    @Override
    public QueryInputDef next()
    {
      QueryInputDef curr = nextInput;
      if ( curr instanceof TableFuncDef)
      {
        TableFuncDef tFunc = (TableFuncDef) curr;
        nextInput = tFunc.getInput();
      }
      else
      {
        nextInput = null;
      }
      return curr;
    }

    @Override
    public void remove()
    {
      throw new UnsupportedOperationException();
    }
  }
 
  public static class ReverseQueryInputDefIterator extends ReverseIterator<QueryInputDef>
  {
    ReverseQueryInputDefIterator(QueryDef qDef)
    {
      super(new QueryInputDefIterator(qDef));
    }
  }
 
}
TOP

Related Classes of com.sap.hadoop.windowing.query2.translate.TableFunctionChainIterators$ReverseQueryInputDefIterator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.