001/**
002 * Copyright (C) 2010-2015 The Roslin Institute <contact andy.law@roslin.ed.ac.uk>
003 *
004 * This file is part of JEnsembl: a Java API to Ensembl data sources developed by the
005 * Bioinformatics Group at The Roslin Institute, The Royal (Dick) School of
006 * Veterinary Studies, University of Edinburgh.
007 *
008 * Project hosted at: http://jensembl.sourceforge.net
009 *
010 * This is free software: you can redistribute it and/or modify
011 * it under the terms of the GNU General Public License (version 3) as published by
012 * the Free Software Foundation.
013 *
014 * This software is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 *
019 * You should have received a copy of the GNU General Public License
020 * in this software distribution. If not, see: http://opensource.org/licenses/gpl-3.0.html
021 */
022package uk.ac.roslin.ensembl.config;
023
024import java.util.Enumeration;
025import java.util.HashMap;
026import java.util.Locale;
027import java.util.Properties;
028import java.util.ResourceBundle;
029import org.slf4j.Logger;
030import org.slf4j.LoggerFactory;
031import uk.ac.roslin.ensembl.model.GoEvidence;
032
033public class GoEvidenceCodes {
034    
035    private static final HashMap<String,GoEvidence> codes;
036    private static final String file = "uk.ac.roslin.ensembl.configfiles.go_evidence_codes";
037    final static Logger LOGGER = LoggerFactory.getLogger(GoEvidenceCodes.class);
038    
039    static {
040      codes = new HashMap<String,GoEvidence>();
041      try {
042            //NB: may need to pass in the classloader to get this to work in a test environment!
043            ResourceBundle rb = ResourceBundle.getBundle(
044                    file, Locale.getDefault(),
045                    GoEvidenceCodes.class.getClassLoader());
046            for (Enumeration keys = rb.getKeys(); keys.hasMoreElements();) {
047                final String key = (String) keys.nextElement();
048                final GoEvidence value = new GoEvidence(key, rb.getString(key));
049                codes.put(key, value);
050            }
051      }
052      catch (Exception ex) {
053          //don't ewant this to be fatal
054            if (LOGGER.isDebugEnabled()) {
055                LOGGER.debug("WARNING: Failed to read the file '"
056                        +file
057                        +"' in the configuration module.");
058            }
059      }
060    }
061    
062    public static GoEvidence getGoEvidence(String code) {
063        return codes.get(code);
064    }
065    
066//    public static String expandCode(String code) {
067//        return (code!=null && !code.isEmpty())   ? code+": "+codes.getProperty(code,"Unknown Code") : "";
068//    }
069}