blob: f176a37754c4757d89365f9b14f1d8150382ef4a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2007 Oracle Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsf.common.sets.constraint;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.jst.jsf.common.sets.AxiomaticSet;
/**
* Super-class of all axiomatic set constraints.
*
* A set constraint applies one or more pre-conditions on a set
* and returns a diagnostic that flags whether or not the set
* satisfies that constraint or not.
*
* <p><b>Provisional API - subject to change</b></p>
*
* @author cbateman
*
*/
public abstract class AbstractSetConstraint
{
/**
* The following post-conditions must hold:
*
* 1) if the set satisfies the constraint with no caveats,
* the returned diagnostic must in turn satisfy
* Diagnostic.getSeverity() == Diagnostic.OK
*
* 2) if the set does not satisfy the constraint, the returned diagnostic
* must satisfy Diagnostic.getSeverity() == Diagnostic.ERROR
*
* 3) if the set strictly satisfies the constraint but the constraint includes
* parameters that can only be heuristically applied, the constraint may choose
* to return a diagnostic where Diagnostic.getSeverity() == Diagnostic.WARNING
*
* The diagnostic returned should _never_ have any other severity but OK, ERROR or WARNING
*
* Algorithmically:
*
* Constraint is satisfied can be tested by Diagnostic.getSeverity() != ERROR
* Constraint is not satisfied can be tested by Diagnostic.getSeverity() == ERROR
*
* @param set
* @return a diagnostic object that contains information about whether
* or not the constraint is satisfied for set.
* <b>MUST NOT RETURN NULL</b>
*/
public abstract Diagnostic isSatisfied(AxiomaticSet set);
/**
* Convenience method
*
* @param set
* @return true if the constraint is satisfied for set
*/
public final boolean passesConstraint(AxiomaticSet set)
{
return isSatisfied(set).getSeverity() != Diagnostic.ERROR;
}
/**
* Convenience method
*
* @param set
* @return true if the constraint is <b>not</b> satisfied for set
*/
public final boolean failsConstraint(AxiomaticSet set)
{
return !passesConstraint(set);
}
}