/* RelationLocal.java - names of semantic relations in some language. * * Copyright (c) 2012 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com> * Distributed under EPL/LGPL/GPL/AL/BSD multi-license. */ package wikokit.base.wikt.constant; import java.util.HashMap; import java.util.Map; /** Names of semantic relations in some language (e.g. Russian) * and the links to the Relation.java codes. */ public class RelationLocal { /** Relation name, e.g. "synonymy" */ private final String name; /** Short Relation name, e.g. "syn." for noun */ private final String short_name; /** Relation corresponding to this name, e.g. Relation.synonymy */ private final Relation relation; protected final static Map<String, Relation> name2rel = new HashMap<String, Relation>(); protected final static Map<Relation, String> rel2name = new HashMap<Relation, String>(); protected final static Map<Relation, String> rel2name_short = new HashMap<Relation, String>(); protected RelationLocal (String _name,String _short_name, Relation _rel) { this.name = _name; this.short_name = _short_name; this.relation = _rel; if(name.length() == 0) System.out.println("Error in RelationRu.RelationRu(): empty part of speech name! The Relation name="+ relation + ". Check the maps name2rel and rel2name."); // check the uniqueness of the Relation and name String name_prev = rel2name.get( relation ); Relation rel_prev = name2rel.get(name); if(null != name_prev) System.out.println("Error in RelationRu.RelationRu(): duplication of Relation! Relation="+ relation + " name='"+ name + "'. Check the maps name2rel and rel2name."); if(null != rel_prev) System.out.println("Error in RelationRu.RelationRu(): duplication of Relation! Relation="+ relation + " name='"+ name + "'. Check the maps name2rel and rel2name."); name2rel.put(name, relation); rel2name.put(relation, name); rel2name_short.put(relation, short_name); } /** Checks weather exists Relation by its name in some language. */ public static boolean hasName(String name) { return name2rel.containsKey(name); } /** Checks weather exists the translation for this Relation. */ public static boolean has(Relation r) { return rel2name.containsKey(r); } /** Gets Relation by its name in some language*/ public static Relation get(String name) { return name2rel.get(name); } /** Gets name of Relation in some language. */ public static String getName (Relation r) { String s = rel2name.get(r); if(null == s) return ""; //return p.getName(); // if there is no translation into local language, then English name return s; } /** Gets short name of Relation in some language. */ public static String getShortName (Relation r) { String s = rel2name_short.get(r); if(null == s) { s = rel2name.get(r); if(null == s) return ""; //return p.getName(); // if there is no translation into local language, then English name } return s; } /** Counts number of translations. */ public static int size() { return name2rel.size(); } }