/*
 * JBoss, Home of Professional Open Source.
 * See the COPYRIGHT.txt file distributed with this work for information
 * regarding copyright ownership.  Some portions may be licensed
 * to Red Hat, Inc. under one or more contributor license agreements.
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301 USA.
 * Modified by
 * @author  Data Virtuality GmbH
 * @date    $Date$
 *  
 */
// https://issues.jboss.org/browse/TEIID-2327
// https://issues.jboss.org/browse/TEIID-2506
// https://issues.jboss.org/browse/TEIID-3208
// https://issues.jboss.org/browse/TEIID-2633
// https://issues.redhat.com/browse/TEIID-2195
// https://issues.redhat.com/browse/TEIID-3652
package org.teiid.query.optimizer.relational.rules;

import org.teiid.query.optimizer.relational.OptimizerRule;

import com.datavirtuality.dv.core.interfaces.DVCaller;
import com.datavirtuality.dv.core.interfaces.MyOptimizerRule;

public final class RuleConstants {

	private RuleConstants() { }

	public static final OptimizerRule PLACE_ACCESS = new RulePlaceAccess();
	public static final OptimizerRule PUSH_SELECT_CRITERIA = new RulePushSelectCriteria();
	public static final OptimizerRule ACCESS_PATTERN_VALIDATION = new RuleAccessPatternValidation();
	public static final OptimizerRule MERGE_VIRTUAL = new RuleMergeVirtual();
    public static final OptimizerRule CHOOSE_JOIN_STRATEGY = new RuleChooseJoinStrategy();
	public static final OptimizerRule RAISE_ACCESS = new RuleRaiseAccess();
    public static final OptimizerRule CHOOSE_DEPENDENT = new RuleChooseDependent();
	public static final OptimizerRule COLLAPSE_SOURCE = new RuleCollapseSource();
    public static final OptimizerRule COPY_CRITERIA = new RuleCopyCriteria();
    public static final OptimizerRule CLEAN_CRITERIA = new RuleCleanCriteria();    
    public static final OptimizerRule VALIDATE_WHERE_ALL = new RuleValidateWhereAll();    
    public static final OptimizerRule REMOVE_OPTIONAL_JOINS = new RuleRemoveOptionalJoins();
    public static final OptimizerRule PUSH_NON_JOIN_CRITERIA = new RulePushNonJoinCriteria(true);
    public static final OptimizerRule RAISE_NULL = new RuleRaiseNull();
    public static final OptimizerRule PLAN_JOINS = new RulePlanJoins();
    public static final OptimizerRule IMPLEMENT_JOIN_STRATEGY = new RuleImplementJoinStrategy();
    public static final OptimizerRule PUSH_LIMIT = new RulePushLimit();
    public static final OptimizerRule PLAN_UNIONS = new RulePlanUnions();
    public static final OptimizerRule PLAN_PROCEDURES = new RulePlanProcedures();
    public static final OptimizerRule CALCULATE_COST = new RuleCalculateCost();
    public static final OptimizerRule PLAN_SORTS = new RulePlanSorts();
    public static final OptimizerRule DECOMPOSE_JOIN = new RuleDecomposeJoin();
	public static final OptimizerRule SUBSTITUTE_EXPRESSIONS = new RuleSubstituteExpressions();
	public static final OptimizerRule PLAN_OUTER_JOINS = new RulePlanOuterJoins();

    // EXTENSION
    // ISSUE: DVCORE-, DVCORE-840 
 	// FIXED BY: Salvatore Raunich
 	// DATE: 2012.08.06, 2013.12.10
	public static MyOptimizerRule TEST3;

	static {
		TEST3 = (MyOptimizerRule) DVCaller.call(12);
	}
	// EXTENSION end
}
