Class RsLangs
- java.lang.Object
-
- org.apache.uima.analysis_engine.impl.RsLangs
-
public class RsLangs extends java.lang.ObjectA set of languages, each represented by a canonical string object The set is stored without any subsumed elements Instances of this class are shareable Duplicate-on-update strategy Requires that all update operations to it return the possibly new RsLangs object, and that calls are always of the form rsLangInstance = rsLangInstance.[some-update-operation] Requires that all copy operations set the shared bit: copiedInstance = origInstance.setShared(); A instance marked isShared == true is immutable Updates cause duplication. Users store x-unspecified as null for the rsLangs instance Because of this, users use static methods, passing in as the first argument, the value of rsLangs, and getting an updated value of rsLangs. This allows the passed-in value to be null. Languages kept in canonical form: duplicates removed subsumed languages removed language strings mapped to unique strings (allowing == comparisons) Languages kept in array list, to allow for expansion Languages not removed, only added (for a given tof)
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static RsLangsadd(RsLangs rsl, java.lang.String lang)add language unless it's subsumed by existing one remove any languages the newly added one subsumes store x-unspec as null(package private) static RsLangsaddAll(RsLangs rsl, java.lang.String[] langs)(package private) static RsLangsaddAll(RsLangs rsl, RsLangs rsLangs)(package private) static RsLangscreateOrNull(java.lang.String[] languages)(package private) static RsLangscreateOrNull(RsLangs rsl)(package private) static RsLangscreateSharableEmpty()booleanequals(java.lang.Object obj)This must return true ignoring the value of isShared, and treating the lists as a setprivate static java.lang.StringgetBaseLanguage(java.lang.String language)inthashCode()Must return the same hashcode regardless of the value of isShared, and treating the values as a set(package private) RsLangsintersect(RsLangs other)(package private) static booleanisEmpty(RsLangs rsl)private voidremoveSubsumedLanguages(java.lang.String canonicalLang, java.lang.String baseLang)Remove languages that are subsumed by the argument If all removed, keep as empty list(package private) static RsLangsreplaceAll(RsLangs rsl, java.lang.String[] langs)(package private) voidsetShared()(package private) static booleansubsumes(RsLangs rsl, java.lang.String lang)private static booleansubsumesCanonical(java.lang.String containingLang, java.lang.String langToTest, java.lang.String langToTestBase)(package private) static booleansubsumesCanonical(RsLangs rsl, java.lang.String lang)private static booleansubsumesCanonical(RsLangs rsl, java.lang.String lang, java.lang.String baseLang)(package private) static java.lang.String[]toArray(RsLangs rsl)java.lang.StringtoString()
-
-
-
Constructor Detail
-
RsLangs
private RsLangs()
-
RsLangs
private RsLangs(RsLangs original)
-
-
Method Detail
-
createSharableEmpty
static RsLangs createSharableEmpty()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
createOrNull
static RsLangs createOrNull(java.lang.String[] languages)
-
setShared
void setShared()
-
isEmpty
static boolean isEmpty(RsLangs rsl)
-
subsumes
static boolean subsumes(RsLangs rsl, java.lang.String lang)
- Parameters:
rsl- may be null (means x-unspec, subsumes all)lang-- Returns:
- true if rsl subsumes lang
-
subsumesCanonical
static boolean subsumesCanonical(RsLangs rsl, java.lang.String lang)
- Parameters:
lang-- Returns:
- true if any of the rsLangs subsumes the param lang
-
subsumesCanonical
private static boolean subsumesCanonical(RsLangs rsl, java.lang.String lang, java.lang.String baseLang)
- Parameters:
rsl- assumed to be not null, not x-unspeclang- assumed to be not null, not x-unspecbaseLang-- Returns:
- true if any of the rsl languages is equal to the lang or the base lang
-
subsumesCanonical
private static boolean subsumesCanonical(java.lang.String containingLang, java.lang.String langToTest, java.lang.String langToTestBase)
-
getBaseLanguage
private static java.lang.String getBaseLanguage(java.lang.String language)
- Parameters:
language- (must not be null)- Returns:
- the same == language or the base form of the language
-
replaceAll
static RsLangs replaceAll(RsLangs rsl, java.lang.String[] langs)
- Parameters:
rsl- could be null meaning current is x-unspecifiedlangs- null means x-unspecified- Returns:
- null (meaning x-unspecified, or an instance of RsLangs
-
add
static RsLangs add(RsLangs rsl, java.lang.String lang)
add language unless it's subsumed by existing one remove any languages the newly added one subsumes store x-unspec as null- Parameters:
rsl- - is not null and has non-null languages array (may be empty)lang- - may be null or x-unspec
-
removeSubsumedLanguages
private void removeSubsumedLanguages(java.lang.String canonicalLang, java.lang.String baseLang)Remove languages that are subsumed by the argument If all removed, keep as empty list- Parameters:
canonicalLang-
-
intersect
RsLangs intersect(RsLangs other)
- Parameters:
other-- Returns:
- null for empty intersection (null doesn't mean x-unspecified here)
-
toArray
static java.lang.String[] toArray(RsLangs rsl)
-
hashCode
public int hashCode()
Must return the same hashcode regardless of the value of isShared, and treating the values as a set- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
This must return true ignoring the value of isShared, and treating the lists as a set- Overrides:
equalsin classjava.lang.Object
-
-