Changeset 5997


Ignore:
Timestamp:
02/19/15 12:40:19 (9 years ago)
Author:
Twan Goosen
Message:

Made LanguageCodeUtils? non-static and moved it into VLO commons so that it can also be used in the web app
Refs #699,#553

Location:
vlo/trunk
Files:
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo-commons/src/main/java/eu/clarin/cmdi/vlo/LanguageCodeUtils.java

    r5994 r5997  
    1515 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    1616 */
    17 package eu.clarin.cmdi.vlo.importer;
     17package eu.clarin.cmdi.vlo;
    1818
    1919import eu.clarin.cmdi.vlo.CommonUtils;
     20import eu.clarin.cmdi.vlo.config.VloConfig;
    2021import java.net.URL;
    2122import java.util.HashMap;
     
    3334
    3435/**
    35  * Some helper methods for working with language codes, extracted from {@link LanguageCodePostProcessor}
     36 * Some helper methods for working with language codes, extracted from
     37 * {@link LanguageCodePostProcessor}
     38 *
    3639 * @author Thomas Eckart
    3740 */
    3841public class LanguageCodeUtils {
     42
    3943    private final static Logger LOG = LoggerFactory.getLogger(LanguageCodeUtils.class);
    4044
    41     private static Map<String, String> twoLetterCodesMap;
    42     private static Map<String, String> threeLetterCodesMap;
    43     private static Map<String, String> silToIso639Map;
    44     private static Map<String, String> languageNameToIso639Map;
    45     private static Map<String, String> iso639ToLanguageNameMap;
    46     private static Map<String, String> iso639_2TToISO639_3Map;
     45    private Map<String, String> twoLetterCodesMap;
     46    private Map<String, String> threeLetterCodesMap;
     47    private Map<String, String> silToIso639Map;
     48    private Map<String, String> languageNameToIso639Map;
     49    private Map<String, String> iso639ToLanguageNameMap;
     50    private Map<String, String> iso639_2TToISO639_3Map;
    4751
    48     public static String getLanguageNameForLanguageCode(String langCode) {
     52    private final VloConfig config;
     53
     54    public LanguageCodeUtils(VloConfig config) {
     55        this.config = config;
     56    }
     57
     58    public String getLanguageNameForLanguageCode(String langCode) {
    4959        String result = getIso639ToLanguageNameMap().get(langCode);
    5060
     
    5666    }
    5767
    58     public static Map<String, String> getSilToIso639Map() {
     68    public Map<String, String> getSilToIso639Map() {
    5969        if (silToIso639Map == null) {
    6070            silToIso639Map = createSilToIsoCodeMap();
     
    6373    }
    6474
    65     public static Map<String, String> getTwoLetterCountryCodeMap() {
     75    public Map<String, String> getTwoLetterCountryCodeMap() {
    6676        if (twoLetterCodesMap == null) {
    67             twoLetterCodesMap = createCodeMap(MetadataImporter.config.getLanguage2LetterCodeComponentUrl());
     77            twoLetterCodesMap = createCodeMap(config.getLanguage2LetterCodeComponentUrl());
    6878        }
    6979        return twoLetterCodesMap;
    7080    }
    7181
    72     public static Map<String, String> getThreeLetterCountryCodeMap() {
     82    public Map<String, String> getThreeLetterCountryCodeMap() {
    7383        if (threeLetterCodesMap == null) {
    74             threeLetterCodesMap = createCodeMap(MetadataImporter.config.getLanguage3LetterCodeComponentUrl());
     84            threeLetterCodesMap = createCodeMap(config.getLanguage3LetterCodeComponentUrl());
    7585        }
    7686        return threeLetterCodesMap;
    7787    }
    7888
    79     public static Map<String, String> getLanguageNameToIso639Map() {
     89    public Map<String, String> getLanguageNameToIso639Map() {
    8090        if (languageNameToIso639Map == null) {
    81             languageNameToIso639Map = createReverseCodeMap(MetadataImporter.config.getLanguage3LetterCodeComponentUrl());
     91            languageNameToIso639Map = createReverseCodeMap(config.getLanguage3LetterCodeComponentUrl());
    8292        }
    8393        return languageNameToIso639Map;
    8494    }
    8595
    86     public static Map<String, String> getIso639ToLanguageNameMap() {
     96    public Map<String, String> getIso639ToLanguageNameMap() {
    8797        if (iso639ToLanguageNameMap == null) {
    88             iso639ToLanguageNameMap = createCodeMap(MetadataImporter.config.getLanguage3LetterCodeComponentUrl());
     98            iso639ToLanguageNameMap = createCodeMap(config.getLanguage3LetterCodeComponentUrl());
    8999        }
    90100
     
    100110     * @return map of ISO 639-2/B codes to ISO 639-3
    101111     */
    102     public static Map<String, String> getIso6392TToISO6393Map() {
     112    public Map<String, String> getIso6392TToISO6393Map() {
    103113        if (iso639_2TToISO639_3Map == null) {
    104114            iso639_2TToISO639_3Map = new HashMap<String, String>();
     
    128138    }
    129139
    130     private static Map<String, String> createCodeMap(String url) {
     140    private Map<String, String> createCodeMap(String url) {
    131141        LOG.debug("Creating language code map.");
    132142        try {
     
    138148    }
    139149
    140     private static Map<String, String> createReverseCodeMap(String url) {
     150    private Map<String, String> createReverseCodeMap(String url) {
    141151        LOG.debug("Creating language code map.");
    142152        try {
     
    148158    }
    149159
    150     private static Map<String, String> createSilToIsoCodeMap() {
     160    private Map<String, String> createSilToIsoCodeMap() {
    151161        LOG.debug("Creating silToIso code map.");
    152162        try {
     
    154164            DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    155165            domFactory.setNamespaceAware(true);
    156             URL url = new URL(MetadataImporter.config.getSilToISO639CodesUrl());
     166            URL url = new URL(config.getSilToISO639CodesUrl());
    157167            DocumentBuilder builder = domFactory.newDocumentBuilder();
    158168            Document doc = builder.parse(url.openStream());
  • vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/CMDIParserVTDXML.java

    r5985 r5997  
    2828   
    2929    private static final String DEFAULT_LANGUAGE = "und";
    30 
     30   
    3131    public CMDIParserVTDXML(Map<String, PostProcessor> postProcessors, Boolean useLocalXSDCache) {
    3232        this.postProcessors = postProcessors;
     
    244244                languageCode = nav.toString(langAttrIndex).trim();
    245245            // replace 2-letter with 3-letter codes
    246             if(LanguageCodeUtils.getSilToIso639Map().containsKey(languageCode))
    247                 languageCode = LanguageCodeUtils.getSilToIso639Map().get(languageCode);
     246            if(MetadataImporter.languageCodeUtils.getSilToIso639Map().containsKey(languageCode))
     247                languageCode = MetadataImporter.languageCodeUtils.getSilToIso639Map().get(languageCode);
    248248           
    249249            List<String> valueList = postProcess(config.getName(), value);
  • vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/LanguageCodePostProcessor.java

    r5981 r5997  
    11package eu.clarin.cmdi.vlo.importer;
    22
     3import eu.clarin.cmdi.vlo.LanguageCodeUtils;
    34import org.slf4j.Logger;
    45import org.slf4j.LoggerFactory;
     
    1213
    1314    private final static Logger LOG = LoggerFactory.getLogger(LanguageCodePostProcessor.class);
    14    
     15
    1516    protected static final String CODE_PREFIX = "code:";
    1617    protected static final String LANG_NAME_PREFIX = "name:";
     
    4041
    4142    protected String extractLanguageCode(String value) {
     43        final LanguageCodeUtils languageCodeUtils = MetadataImporter.languageCodeUtils;
     44       
    4245        String result = value;
    4346       
     
    4548       
    4649        // input is already ISO 639-3?
    47         if(LanguageCodeUtils.getIso639ToLanguageNameMap().keySet().contains(result.toUpperCase()))
     50        if(languageCodeUtils.getIso639ToLanguageNameMap().keySet().contains(result.toUpperCase()))
    4851            return CODE_PREFIX + result.toLowerCase();
    4952       
    5053        // input is 2-letter code -> map to ISO 639-3
    51         if(LanguageCodeUtils.getSilToIso639Map().containsKey(result.toLowerCase())) {
    52             return CODE_PREFIX + LanguageCodeUtils.getSilToIso639Map().get(result.toLowerCase());
     54        if(languageCodeUtils.getSilToIso639Map().containsKey(result.toLowerCase())) {
     55            return CODE_PREFIX + languageCodeUtils.getSilToIso639Map().get(result.toLowerCase());
    5356        }
    5457
    55         if(LanguageCodeUtils.getLanguageNameToIso639Map().containsKey(result)) { // (english) language name?
    56             return CODE_PREFIX + LanguageCodeUtils.getLanguageNameToIso639Map().get(result);
     58        if(languageCodeUtils.getLanguageNameToIso639Map().containsKey(result)) { // (english) language name?
     59            return CODE_PREFIX + languageCodeUtils.getLanguageNameToIso639Map().get(result);
    5760        }
    5861
    5962        // convert ISO 639-2/T codes to ISO 639-3
    60         if (LanguageCodeUtils.getIso6392TToISO6393Map().containsKey(result.toLowerCase())) {
    61             return CODE_PREFIX + LanguageCodeUtils.getIso6392TToISO6393Map().get(result.toLowerCase());
     63        if (languageCodeUtils.getIso6392TToISO6393Map().containsKey(result.toLowerCase())) {
     64            return CODE_PREFIX + languageCodeUtils.getIso6392TToISO6393Map().get(result.toLowerCase());
    6265        }
    6366       
  • vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/LanguageLinkPostProcessor.java

    r5848 r5997  
    55
    66public class LanguageLinkPostProcessor extends LanguageCodePostProcessor {
    7    
     7
    88    /**
    9      * Returns the link to language information
    10      * If no mapping is found the original value is returned.
     9     * Returns the link to language information If no mapping is found the
     10     * original value is returned.
     11     *
    1112     * @param value extracted language information
    1213     * @return HTML link to the CLARIN language information page
     
    1415    @Override
    1516    public List<String> process(String value) {
    16         String langCode = super.process(value).get(0);
     17        String langCode = super.process(value).get(0);
    1718        String result = langCode;
    1819        if (langCode != null) {
    19             if(langCode.startsWith(CODE_PREFIX)) {
     20            if (langCode.startsWith(CODE_PREFIX)) {
    2021                langCode = langCode.substring(CODE_PREFIX.length());
    21                 result = "<a href=\""+ MetadataImporter.config.getLanguageLinkPrefix() + langCode+"\">"+LanguageCodeUtils.getLanguageNameForLanguageCode(langCode.toUpperCase())+"</a>";
    22             } else if(langCode.startsWith(LANG_NAME_PREFIX)) {
     22                result = "<a href=\"" + MetadataImporter.config.getLanguageLinkPrefix() + langCode + "\">" + MetadataImporter.languageCodeUtils.getLanguageNameForLanguageCode(langCode.toUpperCase()) + "</a>";
     23            } else if (langCode.startsWith(LANG_NAME_PREFIX)) {
    2324                result = langCode.substring(LANG_NAME_PREFIX.length());
    2425            }
  • vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/LanguageNamePostProcessor.java

    r5848 r5997  
    11package eu.clarin.cmdi.vlo.importer;
    22
     3import eu.clarin.cmdi.vlo.LanguageCodeUtils;
    34import java.util.ArrayList;
    45import java.util.List;
     
    2122    @Override
    2223    public List<String> process(String value) {
     24        final LanguageCodeUtils languageCodeUtils = MetadataImporter.languageCodeUtils;
     25       
    2326        String result = value;
    2427        if (value != null) {
     
    2831           
    2932            if (langCode.length() == 2) {
    30                 twoLetterCodesMap = LanguageCodeUtils.getTwoLetterCountryCodeMap();
     33                twoLetterCodesMap = languageCodeUtils.getTwoLetterCountryCodeMap();
    3134                String name = twoLetterCodesMap.get(langCode.toUpperCase());
    3235                if (name != null) {
     
    3437                }
    3538            } else if (langCode.length() == 3) {
    36                 threeLetterCodesMap = LanguageCodeUtils.getThreeLetterCountryCodeMap();
     39                threeLetterCodesMap = languageCodeUtils.getThreeLetterCountryCodeMap();
    3740                String name = threeLetterCodesMap.get(langCode.toUpperCase());
    3841                if (name != null) {
  • vlo/trunk/vlo-importer/src/main/java/eu/clarin/cmdi/vlo/importer/MetadataImporter.java

    r5979 r5997  
    11package eu.clarin.cmdi.vlo.importer;
    22
     3import eu.clarin.cmdi.vlo.LanguageCodeUtils;
    34import eu.clarin.cmdi.vlo.CommonUtils;
    45import eu.clarin.cmdi.vlo.FacetConstants;
     
    439440    public static VloConfig config;
    440441
     442    public static LanguageCodeUtils languageCodeUtils;
     443   
    441444    /**
    442445     * @param args
     
    511514            final XmlVloConfigFactory configFactory = new XmlVloConfigFactory(configUrl);
    512515            MetadataImporter.config = configFactory.newConfig();
     516            MetadataImporter.languageCodeUtils = new LanguageCodeUtils(MetadataImporter.config);
    513517
    514518            // optionally, modify the configuration here
  • vlo/trunk/vlo-importer/src/test/java/eu/clarin/cmdi/vlo/importer/ImporterTestcase.java

    r5100 r5997  
    11package eu.clarin.cmdi.vlo.importer;
    22
     3import eu.clarin.cmdi.vlo.LanguageCodeUtils;
    34import eu.clarin.cmdi.vlo.config.DefaultVloConfigFactory;
    45import eu.clarin.cmdi.vlo.config.VloConfig;
     
    3940        MetadataImporter.config.setComponentRegistryRESTURL("http://catalog.clarin.eu/ds/ComponentRegistry/rest/registry/profiles/");
    4041        config = MetadataImporter.config;
     42       
     43        MetadataImporter.languageCodeUtils = new LanguageCodeUtils(config);
    4144    }
    4245
Note: See TracChangeset for help on using the changeset viewer.