// Path: core/src/com/clarkparsia/owlwg/testcase/Status.java
// public enum Status {
// 
// 	APPROVED(Individual.APPROVED), EXTRACREDIT(Individual.EXTRACREDIT),
// 	PROPOSED(Individual.PROPOSED), REJECTED(Individual.REJECTED);
// 
// 	public static Status get(OWLIndividual i) {
// 		for( Status s : Status.values() ) {
// 			if( s.getOWLIndividual().equals( i ) )
// 				return s;
// 		}
// 
// 		return null;
// 	}
// 
// 	private final TestVocabulary.Individual	i;
// 
// 	private Status(TestVocabulary.Individual i) {
// 		this.i = i;
// 	}
// 
// 	public OWLIndividual getOWLIndividual() {
// 		return i.getOWLIndividual();
// 	}
// }
// 
// Path: core/src/com/clarkparsia/owlwg/testcase/TestCase.java
// public interface TestCase<O> {
// 
// 	public void accept(TestCaseVisitor<O> visitor);
// 
// 	public Set<Semantics> getApplicableSemantics();
// 
// 	public String getIdentifier();
// 
// 	public Set<URI> getImportedOntologies();
// 
// 	public String getImportedOntology(URI uri, SerializationFormat format);
// 
// 	public Set<SerializationFormat> getImportedOntologyFormats(URI uri);
// 
// 	public Set<Semantics> getNotApplicableSemantics();
// 
// 	public Set<SyntaxConstraint> getSatisfiedConstraints();
// 
// 	public Status getStatus();
// 
// 	public Set<SyntaxConstraint> getUnsatisfiedConstraints();
// 
// 	public URI getURI();
// }


import com.clarkparsia.owlwg.testcase.Status;
import com.clarkparsia.owlwg.testcase.TestCase;
package com.clarkparsia.owlwg.testcase.filter;


/**
 * <p>
 * Title: Status Filter Condition
 * </p>
 * <p>
 * Description: Filter condition to match tests with a particular status (or no
 * status).
 * </p>
 * <p>
 * Copyright: Copyright &copy; 2009
 * </p>
 * <p>
 * Company: Clark & Parsia, LLC. <a
 * href="http://clarkparsia.com/"/>http://clarkparsia.com/</a>
 * </p>
 * 
 * @author Mike Smith &lt;msmith@clarkparsia.com&gt;
 */
public class StatusFilter implements FilterCondition {

	public final static StatusFilter	APPROVED, EXTRACREDIT, NOSTATUS, PROPOSED, REJECTED;

	static {
		APPROVED = new StatusFilter( Status.APPROVED );
		EXTRACREDIT = new StatusFilter( Status.EXTRACREDIT );
		NOSTATUS = new StatusFilter( null );
		PROPOSED = new StatusFilter( Status.PROPOSED );
		REJECTED = new StatusFilter( Status.REJECTED );
	}

	final private Status				status;

	/**
	 * @param status
	 *            {@link Status} for test case or <code>null</code> if filter
	 *            should match cases that have no status
	 */
	public StatusFilter(Status status) {
		this.status = status;
	}

// Path: core/src/com/clarkparsia/owlwg/testcase/Status.java
// public enum Status {
// 
// 	APPROVED(Individual.APPROVED), EXTRACREDIT(Individual.EXTRACREDIT),
// 	PROPOSED(Individual.PROPOSED), REJECTED(Individual.REJECTED);
// 
// 	public static Status get(OWLIndividual i) {
// 		for( Status s : Status.values() ) {
// 			if( s.getOWLIndividual().equals( i ) )
// 				return s;
// 		}
// 
// 		return null;
// 	}
// 
// 	private final TestVocabulary.Individual	i;
// 
// 	private Status(TestVocabulary.Individual i) {
// 		this.i = i;
// 	}
// 
// 	public OWLIndividual getOWLIndividual() {
// 		return i.getOWLIndividual();
// 	}
// }
// 
// Path: core/src/com/clarkparsia/owlwg/testcase/TestCase.java
// public interface TestCase<O> {
// 
// 	public void accept(TestCaseVisitor<O> visitor);
// 
// 	public Set<Semantics> getApplicableSemantics();
// 
// 	public String getIdentifier();
// 
// 	public Set<URI> getImportedOntologies();
// 
// 	public String getImportedOntology(URI uri, SerializationFormat format);
// 
// 	public Set<SerializationFormat> getImportedOntologyFormats(URI uri);
// 
// 	public Set<Semantics> getNotApplicableSemantics();
// 
// 	public Set<SyntaxConstraint> getSatisfiedConstraints();
// 
// 	public Status getStatus();
// 
// 	public Set<SyntaxConstraint> getUnsatisfiedConstraints();
// 
// 	public URI getURI();
// }


// Path: core/src/com/clarkparsia/owlwg/testcase/filter/StatusFilter.java
import com.clarkparsia.owlwg.testcase.Status;
import com.clarkparsia.owlwg.testcase.TestCase;

package com.clarkparsia.owlwg.testcase.filter;


/**
 * <p>
 * Title: Status Filter Condition
 * </p>
 * <p>
 * Description: Filter condition to match tests with a particular status (or no
 * status).
 * </p>
 * <p>
 * Copyright: Copyright &copy; 2009
 * </p>
 * <p>
 * Company: Clark & Parsia, LLC. <a
 * href="http://clarkparsia.com/"/>http://clarkparsia.com/</a>
 * </p>
 * 
 * @author Mike Smith &lt;msmith@clarkparsia.com&gt;
 */
public class StatusFilter implements FilterCondition {

	public final static StatusFilter	APPROVED, EXTRACREDIT, NOSTATUS, PROPOSED, REJECTED;

	static {
		APPROVED = new StatusFilter( Status.APPROVED );
		EXTRACREDIT = new StatusFilter( Status.EXTRACREDIT );
		NOSTATUS = new StatusFilter( null );
		PROPOSED = new StatusFilter( Status.PROPOSED );
		REJECTED = new StatusFilter( Status.REJECTED );
	}

	final private Status				status;

	/**
	 * @param status
	 *            {@link Status} for test case or <code>null</code> if filter
	 *            should match cases that have no status
	 */
	public StatusFilter(Status status) {
		this.status = status;
	}

	public boolean accepts(TestCase testcase) {