blob: 95e320dfb35d8937be5002d03707f3f358bcd420 [file] [log] [blame]
/*
* 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_UnsupportedOperationException;
/**
* The declarations of configuration parameters in a Resource. A Resource can either declare a
* single list of {@link ConfigurationParameter}s or a list of {@link ConfigurationGroup}s, where
* each group can contain a list of parameters. When groups are used, the Resource can also declare
* a list of {@link #getCommonParameters() common parameters} shared by all groups.
*
*
*/
public interface ConfigurationParameterDeclarations extends MetaDataObject {
/**
* Gets the configuration parameters for this Resource. This gets configuration parameters that
* are not defined within a group - see also {@link #getConfigurationGroups()}.
*
* @return an array containing {@link ConfigurationParameter} objects, each of which describes a
* configuration parameter for this Resource.
*/
ConfigurationParameter[] getConfigurationParameters();
/**
* Sets the configuration parameters for this Resource. This sets the configuration parameters
* that are not defined within groups - see also
* {@link #setConfigurationGroups(ConfigurationGroup[])}.
*
* @param aParams
* an array containing {@link ConfigurationParameter} objects, each of which describes a
* configuration parameter for this Resource.
*
* @throws org.apache.uima.UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void setConfigurationParameters(ConfigurationParameter[] aParams);
/**
* Adds a Configuration Parameter that is not in any group.
*
* @param aConfigurationParameter
* the Configuration Parameter to add
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void addConfigurationParameter(ConfigurationParameter aConfigurationParameter);
/**
* Removes an Configuration Parameter that is not in any group.
*
* @param aConfigurationParameter
* the Configuration Parameter to remove (must be == with an ConfigurationParameter in
* this collection, or this method will do nothing).
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void removeConfigurationParameter(ConfigurationParameter aConfigurationParameter);
/**
* Gets the configuration parameter groups for this Resource.
*
* @return an array containing {@link ConfigurationGroup} objects, each of which describes a
* configuration parameter group for this Resource.
*/
ConfigurationGroup[] getConfigurationGroups();
/**
* Sets the configuration parameter groups for this Resource.
*
* @param aGroups
* an array containing {@link ConfigurationGroup} objects, each of which describes a
* configuration parameter group for this Resource.
*
* @throws org.apache.uima.UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void setConfigurationGroups(ConfigurationGroup... aGroups);
/**
* Adds a Configuration Group.
*
* @param aConfigurationGroup
* the Configuration Group to add
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void addConfigurationGroup(ConfigurationGroup aConfigurationGroup);
/**
* Removes an Configuration Group
*
* @param aConfigurationGroup
* the Configuration Group to remove (must be == with an ConfigurationGroup defined on
* this resource, or this method will do nothing).
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void removeConfigurationGroup(ConfigurationGroup aConfigurationGroup);
/**
* Gets the configuration parameters that are common to all groups. This property is only
* meaningful if at least one group is defined.
*
* @return an array containing {@link ConfigurationParameter} objects, each of which describes a
* parameter common to all groups.
*/
ConfigurationParameter[] getCommonParameters();
/**
* Sets the configuration parameters that are common to all groups. This property is only
* meaningful if at least one group is defined.
*
* @param aParams
* an array containing {@link ConfigurationParameter} objects, each of which describes a
* parameter common to all groups.
*/
void setCommonParameters(ConfigurationParameter... aParams);
/**
* Adds a Configuration Parameter that is common to all groups.
*
* @param aConfigurationParameter
* the Configuration Parameter to add
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void addCommonParameter(ConfigurationParameter aConfigurationParameter);
/**
* Removes an Configuration Parameter that is common to all groups.
*
* @param aConfigurationParameter
* the Configuration Parameter to remove (must be == with an ConfigurationParameter in
* this collection, or this method will do nothing).
*
* @throws UIMA_UnsupportedOperationException
* if this object is not modifiable
*/
void removeCommonParameter(ConfigurationParameter aConfigurationParameter);
/**
* Gets the name of the default configuration group. This must refer to the names of the
* {@link #getConfigurationGroups() configuration groups}.
*
* @return the name of the default configuration group
*/
String getDefaultGroupName();
/**
* Sets the name of the default configuration group. This must refer to the names of the
* {@link #getConfigurationGroups() configuration groups}.
*
* @param aGroupName
* the name of the default configuration group
*/
void setDefaultGroupName(String aGroupName);
/**
* Gets the configuration parameter search strategy. Valid values for this property are defined by
* constants on this interface.
*
* @return the configuration parameter search strategy
*/
String getSearchStrategy();
/**
* Sets the configuration parameter search strategy. Valid values for this property are defined by
* constants on this interface.
*
* @param aStrategy
* the configuration parameter search strategy
*/
void setSearchStrategy(String aStrategy);
/**
* Gets a configuration parameter.
*
* @param aGroupName
* the name of a group, or <code>null</code> for no group
* @param aParamName
* the name of the parameter
*
* @return the specified parameter, <code>null</code> if it does not exist
*/
ConfigurationParameter getConfigurationParameter(String aGroupName, String aParamName);
/**
* Gets the declarations of a named configuration group. There may be more than one declaration
* for a single group name; in this case, all parameters contained in each of these declarations
* are considered part of the named group.
*
* @param aGroupName
* the name of a group
*
* @return an array of ConfigurationGroup declarations having the name <code>aGroupName</code>. If
* there are no such groups, an empty array is returned.
*/
ConfigurationGroup[] getConfigurationGroupDeclarations(String aGroupName);
/**
* A value for the <code>searchStrategy</code> property indicating that there is no fallback. If a
* request is made for the value of a parameter in a group and there is no such value in that
* exact group, <code>null</code> will be returned.
*/
String SEARCH_STRATEGY_NONE = "none";
/**
* A value for the <code>searchStrategy</code> property indicating that if there is no value
* declared in a group, look in the {@link #getDefaultGroupName() default group}.
*/
String SEARCH_STRATEGY_DEFAULT_FALLBACK = "default_fallback";
/**
* A value for the <code>searchStrategy</code> property that is useful when ISO language and
* country codes are used as configuration group names. If there is no value declared in a group,
* look in more general groups. The fallback sequence is
* <code>lang-country-region -%gt; lang-country -%gt;
* lang -%gt; default</code>. For example, if a request is made for the value of a parameter in
* the "en-GB" group and no such group exists, the value from the "en" group will be used instead.
*/
String SEARCH_STRATEGY_LANGUAGE_FALLBACK = "language_fallback";
}