package edu.umd.hooka.corpora;
import java.util.HashMap;
public class LanguagePair {
private Language source;
private Language target;
static HashMap<String, LanguagePair> lpmap = new HashMap<String, LanguagePair>();
public static LanguagePair languageForISO639_1Pair(String s) {
if (!s.matches("^[a-z]{2}-[a-z]{2}$"))
throw new RuntimeException("Bad format for language pair: " + s);
LanguagePair lp = lpmap.get(s);
if (lp != null) return lp;
lp = new LanguagePair(s);
lpmap.put(s, lp);
return lp;
}
public int hashCode() {
return source.hashCode() * 31 + target.hashCode() + 11;
}
private LanguagePair(String s) {
source = Language.languageForISO639_1(s.substring(0, 2));
target = Language.languageForISO639_1(s.substring(3));
}
public LanguagePair inverted() {
return LanguagePair.languageForISO639_1Pair(
target.code()+"-"+source.code());
}
public final boolean isRelevant(Language l) {
return (l == source || l == target);
}
public String toString() {
return source.code() + "-" + target.code();
}
public final Language getSource() { return source; }
public final Language getTarget() { return target; }
}