Package com.spoledge.audao.parser.gql.impl.soft

Source Code of com.spoledge.audao.parser.gql.impl.soft.SoftColumnExpr

/*
* Copyright 2010 Spolecne s.r.o. (www.spoledge.com)
*
* 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 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 com.spoledge.audao.parser.gql.impl.soft;

import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;

import org.apache.commons.logging.LogFactory;

import com.google.appengine.api.datastore.Entity;

import com.spoledge.audao.parser.gql.impl.GqlExtExprTree;


public class SoftColumnExpr extends SoftColumn {
    private CommonTree tree;

    ////////////////////////////////////////////////////////////////////////////
    // Constructors
    ////////////////////////////////////////////////////////////////////////////

    /**
     * Special constructor for evaluating expressions only - used in soft conditions.
     */
    public SoftColumnExpr( CommonTree tree ) {
        this( tree, null, false, false );
    }


    public SoftColumnExpr( CommonTree tree, SoftColumn sc ) {
        this( tree, sc.getColumnName(), sc.isUnindexed(), sc.isEmpty());
    }


    public SoftColumnExpr( CommonTree tree, String columnName, boolean isUnindexed, boolean isEmpty ) {
        super( columnName, isUnindexed, isEmpty );

        this.tree = tree;
    }


    ////////////////////////////////////////////////////////////////////////////
    // Public
    ////////////////////////////////////////////////////////////////////////////

    @Override
    public Object getValue( Object[] args, Entity ent ) {
        // walk the subtree

        GqlExtExprTree parser = new GqlExtExprTree( new CommonTreeNodeStream( tree ));

        try {
            return parser.expr( args, ent );
        }
        catch (RecognitionException e) {
            LogFactory.getLog( getClass()).error("getValue(): " + e + ", tree=" + tree.toStringTree());

            throw new RuntimeException( e );
        }
        catch (RuntimeException e) {
            LogFactory.getLog( getClass()).error("getValue(): tree=" + tree.toStringTree(), e);

            throw e;
        }
    }
}
TOP

Related Classes of com.spoledge.audao.parser.gql.impl.soft.SoftColumnExpr

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.