| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.uima.resource.metadata; |
| |
| import org.apache.uima.UIMA_IllegalArgumentException; |
| import org.apache.uima.UIMA_UnsupportedOperationException; |
| import org.apache.uima.cas.FSMatchConstraint; |
| |
| /** |
| * <code>SimplePrecondition</code> defines a few simple conditions that can be evaluted against a |
| * {@link org.apache.uima.cas.CAS}. |
| * <p> |
| * A value in the CAS (see below) will be compared against the precondition's |
| * {@link #getComparisonValue() comparisonValue} property using the speicified |
| * {@link #getPredicate() predicate}. |
| * <p> |
| * The value in the CAS is specified by providing values for |
| * {@link #setFsIndexName(String) indexName}, |
| * {@link #setFsMatchConstraint(FSMatchConstraint) fsMatchConstraint}, and |
| * {@link #setFeatureName(String) featureName}. If any FeatureStructure in the specified index |
| * matches the FS match constraint and has a feature value that satisfies this precondition's |
| * precicate, the precondition will be considered satisfied. If the index name is ommitted, the |
| * default Annotation index (if present) will be used. |
| * <p> |
| * The possible predicates are defined by constants on this interface. The currently avaialble |
| * predicates are: |
| * <ul> |
| * <li><code>EQUAL</code> - evaluates to true if and only if the values are equal (according to |
| * the equality rules of their data type).</li> |
| * <li><code>ELEMENT_OF</code> - the comparison value must be an array. Evaluates to true if and |
| * only if the test value is equal to one of the elements of the comparison array.</li> |
| * <li><code>LANGUAGE_SUBSUMED</code> - the comparison value must be an array of Strings, each of |
| * which is an ISO language identifier. Evaluates to true if and only if the test value is an ISO |
| * language identifier that is subsumed by one of the values of the comparison array. (For example, |
| * "en_US" is subsumed by "en.")</li> |
| * </ul> |
| * |
| * As with all {@link MetaDataObject}s, a <code>SimplePrecondition</code> may or may not be |
| * modifiable. An application can find out by calling the {@link #isModifiable()} method. |
| */ |
| public interface SimplePrecondition extends Precondition { |
| |
| /** |
| * Gets the type of this precondition. Each sub-interface of <code>Precondition</code> has its |
| * own standard type identifier String. These identifier Strings are used instead of Java class |
| * names in order to ease portability of metadata to other languages. |
| * |
| * @return {@link #PRECONDITION_TYPE} |
| */ |
| public String getPreconditionType(); |
| |
| /** |
| * Retrieves the name of the FeatureStructure index containing FeatureStructures to be tested by |
| * this precondition. |
| * |
| * @return the name of the FS index, <code>null</code> if the default annotation index should be |
| * used |
| */ |
| public String getFsIndexName(); |
| |
| /** |
| * Sets the name of the FeatureStructure index containing FeatureStructures to be tested by this |
| * precondition. |
| * |
| * @param aIndexName |
| * the name of the FS index, <code>null</code> if the default annotation index should |
| * be used |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| */ |
| public void setFsIndexName(String aIndexName); |
| |
| /** |
| * Retrieves the FSMatchConstraint that determines which CAS feature structures will be tested by |
| * this precondition. |
| * |
| * @return the FS match constraint, <code>null</code> if none |
| */ |
| public FSMatchConstraint getFsMatchConstraint(); |
| |
| /** |
| * Sets the FSMatchConstraint that determines which CAS feature structures will be tested by this |
| * precondition. |
| * |
| * @param aConstraint |
| * the FS match constraint, <code>null</code> if none |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| */ |
| public void setFsMatchConstraint(FSMatchConstraint aConstraint); |
| |
| /** |
| * Gets the name of the feature to be tested. |
| * |
| * @return the feature name, <code>null</code> if none |
| */ |
| public String getFeatureName(); |
| |
| /** |
| * Sets the name of the feature to be tested. |
| * |
| * @param aFeatureName |
| * the feature name, <code>null</code> if none |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| */ |
| public void setFeatureName(String aFeatureName); |
| |
| /** |
| * Retrieves the literal value to which features' values will be compared. |
| * |
| * @return the value, which must be a String, Integer, Float, Boolean or an array of one of those |
| * four types. |
| */ |
| public Object getComparisonValue(); |
| |
| /** |
| * Sets the literal value to which features' values will be compared. |
| * |
| * @param aValue |
| * the comparison value, which must be a String, Integer, Float, Boolean, or an array of |
| * one of those four types. |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| */ |
| public void setComparisonValue(Object aValue); |
| |
| /** |
| * Retrieves the predicate used to compare the test value to the comparison value. |
| * |
| * @return a String that identifies the predicate used. This will always match one of the |
| * constants defined on this interface. |
| */ |
| public String getPredicate(); |
| |
| /** |
| * Sets the predicate used to compare the test value to the comparison value. |
| * |
| * @param aPredicate |
| * a String that identifies the predicate used. This must match one of the constants |
| * defined on this interface. |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| * @throws UIMA_IllegalArgumentException |
| * if the given value is not appropriate for the given attribute. |
| */ |
| public void setPredicate(String aPredicate); |
| |
| /** |
| * Retrieves the deafult value for this precondition. This is the value returned if there is no |
| * applicable test value in the CAS. |
| * |
| * @return the default value |
| */ |
| public boolean getDefault(); |
| |
| /** |
| * Sets the deafult value for this precondition. This is the value returned if there is no |
| * applicable test value in the CAS. |
| * |
| * @param aDefault |
| * the default value |
| * |
| * @throws UIMA_UnsupportedOperationException |
| * if this <code>MetaDataObject</code> is not modifiable. |
| */ |
| public void setDefault(boolean aDefault); |
| |
| /** |
| * The type identifier for this class of precondition. This is the return value of |
| * {@link #getPreconditionType()}. |
| */ |
| public static final String PRECONDITION_TYPE = "SIMPLE"; |
| |
| /** |
| * Identifies the EQUAL predicate. This predicate evaluates to true if and only if the test value |
| * and the comparison value are of the same data type and are equal, according to the equality |
| * rules of that data type. |
| */ |
| public static final String EQUAL = "Equal"; |
| |
| /** |
| * Identifies the ELEMENT_OF predicate. For this predicate, the comparison value must be an array. |
| * ELEMENT_OF evaluates to true if and only if the test value is equal to one of the elements of |
| * the array. (If the comparison value is not an array, ELEMENT_OF always evaluates to false.) |
| */ |
| public static final String ELEMENT_OF = "ElementOf"; |
| |
| /** |
| * Identifies the LANGUAGE_SUBSUMED predicate. For this predicate, the comparison value must be an |
| * array of ISO language identifiers. LANGUAGE_SUBSUMED evaluates to true if and only if the test |
| * value is an ISO language identifier that is subsumed by one of the values of the comparison |
| * array. (For example, "en_US" is subsumed by "en.") |
| */ |
| public static final String LANGUAGE_SUBSUMED = "LanguageSubsumed"; |
| } |