Package reportgen.math.condition.unary

Source Code of reportgen.math.condition.unary.MathExpressionConditionUnaryNull

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package reportgen.math.condition.unary;

import java.util.ArrayList;
import java.util.List;
import reportgen.math.reference.field.MathExpressionEntityFieldRef;
import reportgen.math.reference.operator.MathExpressionOperatorRef;
import reportgen.math.reference.operator.variants.MOperator;
import reportgen.math.reference.rescol.MathExpressionResultColumnRef;
import org.jdom.Element;
import reportgen.math.MathExpressionOperand;
import reportgen.prototype.context.Context;
import reportgen.prototype.context.ContextGeneric;
import reportgen.prototype.context.ContextMode;
import reportgen.math.reference.operator.variants.unary.MathOperatorUnary;
import reportgen.utils.ReportException;
import reportgen.prototype.context.group.ContextGroup;
import reportgen.math.condition.MathExpressionConditionUnary;
import reportgen.math.reference.method.MathExpressionEntityMethodRef;
import reportgen.math.reference.objectfield.MathExpressionEntityObjectFieldRef;

/**
* Условие состоит из двух операндов и одного оператора.
* Операнды могут быть составными математическими выражениями.
* Оператор является булевым оператором сравнения
* @author axe
*/

public class MathExpressionConditionUnaryNull extends MathExpressionConditionUnary {

    public static final ContextGroup GROUP = new UnaryCondContextGroup();
    public static final String TAG = "unarynull";

    public MathExpressionConditionUnaryNull(Context context) {
        super(context);
        MathExpressionOperatorRef operator = new MathExpressionOperatorRef(
                MathOperatorUnary.ISNULL,
                getChildContext(MathExpressionOperatorRef.GROUP)
        );
        setOperator(operator);
    }

    MathExpressionConditionUnaryNull(Context context, MathExpressionOperand operand,
            MathExpressionOperatorRef operator) {
        super(context, operand, operator);
    }

    public MathExpressionConditionUnaryNull(Element element,
            Context context) throws ReportException {
        super(element, context);
    }

    @Override
    public MathExpressionConditionUnaryNull makeClone() throws ReportException {
        return new MathExpressionConditionUnaryNull(toXML(), getParentContext());
    }

    @Override
    public Context getChildContext(ContextGroup group) {
        if(group.isTheSameType(MathExpressionOperatorRef.GROUP)) {
            return new ContextGeneric(getParentContext()) {
                @Override
                public ContextMode getContextMode() {
                    return getParentContext().getContextMode();
                }

                @Override
                public List<ContextGroup> getAvailiableGroups() {
                    List<ContextGroup> res = new ArrayList<ContextGroup>();
                    res.add(MathExpressionOperatorRef.GROUP);
                    return res;
                }

                @Override
                public List<MOperator> getOperators() {
                    List<MOperator> model = new ArrayList<MOperator>();
                    model.add(MathOperatorUnary.ISNULL);
                    model.add(MathOperatorUnary.ISNOTNULL);
                    return model;
                }
            };
        }
        return getParentContext();
    }
   
    @Override
    public Context getLocalContext() {
        return new ContextGeneric(getParentContext()) {

            @Override
            public ContextMode getContextMode() {
                return getParentContext().getContextMode();
            }
           
            @Override
            public List<ContextGroup> getAvailiableGroups() {
                List<ContextGroup> avail = new ArrayList<ContextGroup>();
                avail.add(MathExpressionOperatorRef.GROUP);

                for(ContextGroup g : getParentContext().getAvailiableGroups()) {
                    if(g.isTheSameType(MathExpressionEntityObjectFieldRef.GROUP)
                            || g.isTheSameType(MathExpressionEntityFieldRef.GROUP)
                            || g.isTheSameType(MathExpressionEntityMethodRef.GROUP)
                            || g.isTheSameType(MathExpressionResultColumnRef.GROUP)
                            ) {
                        avail.add(g);
                    }
                }
                return avail;
            }
        };
    }

    @Override
    public ContextGroup getContextGroup() {
        return GROUP;
    }

    @Override
    protected String getRootTag() {
        return TAG;
    }

}
TOP

Related Classes of reportgen.math.condition.unary.MathExpressionConditionUnaryNull

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.