/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 at
 *
 *     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 org.apache.jena.sdb.layout2;

//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;

import org.apache.jena.sdb.compiler.QuadBlockCompilerMain ;
import org.apache.jena.sdb.compiler.SlotCompiler ;
import org.apache.jena.sdb.core.SDBRequest ;


// Only here to think about addRestrictions later.
public class QuadBlockCompiler2 extends QuadBlockCompilerMain
{
    //private static Logger log = LoggerFactory.getLogger(QuadBlockCompiler2.class) ;

    public QuadBlockCompiler2(SDBRequest request, SlotCompiler slotCompiler)
    { 
        super(request, slotCompiler) ;
    }

    // Maybe needed, later, for value-based testing
    
//    private SqlNode addRestrictions(SDBRequest request,
//                                    SqlNode sqlNode,
//                                    List<SDBConstraint> constraints)
//    {
//        if ( constraints.size() == 0 )
//            return sqlNode ;
//
//        // Add all value columns
//        for ( SDBConstraint c : constraints )
//        {
//            @SuppressWarnings("unchecked")
//            Set<Var> vars = c.getExpr().getVarsMentioned() ;
//            for ( Var v : vars )
//            {
//                // For Variables used in this SQL constraint, make sure the value is available.  
//                ScopeEntry e = sqlNode.getIdScope().findScopeForVar(v) ;  // tripleTableCol
//                
//                if ( e == null )
//                {
//                    // Not in scope.
//                    log.info("Var not in scope for value of expression: "+v) ;
//                    continue ;
//                }
//                SqlColumn tripleTableCol = e.getColumn() ;    
//
//                // Value table column
//                SqlTable nTable =   new SqlTable(nodeTableDesc.getTableName(), genNodeResultAlias.next()) ;
//                SqlColumn colId =   new SqlColumn(nTable, nodeTableDesc.getIdColName()) ;
//                SqlColumn colLex =  new SqlColumn(nTable, nodeTableDesc.getLexColName()) ;
////                SqlColumn colType = new SqlColumn(nTable, nodeTableDesc.getTypeColName()) ;
//
//                nTable.setValueColumnForVar(v, colLex) ;        // ASSUME lexical/string form needed 
//                nTable.setIdColumnForVar(v, colId) ;            // Id scope => join
//                sqlNode = QC.innerJoin(request, sqlNode, nTable) ;
//            }
//
//            SqlExpr sqlExpr = c.compile(sqlNode.getNodeScope()) ;
//            sqlNode = SqlRestrict.restrict(sqlNode, sqlExpr) ;
//        }
//        return sqlNode ;
//    }
}
