/* Copyright (C) 2009 Diego Darriba This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package es.uvigo.darwin.prottest.global; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.List; import java.util.Properties; import es.uvigo.darwin.prottest.ProtTest; /** * The global application settings and parameter names. */ public abstract class ApplicationGlobals implements ProtTestConstants { /** The application APPLICATION_PROPERTIES. */ public static final Properties APPLICATION_PROPERTIES; public static final String ENV_PATH; public static final String JAR_PATH = ProtTest.class.getProtectionDomain() .getCodeSource() .getLocation() .getFile() .replace("%20", " "); public static final String PATH; public static final String DEFAULT_SNAPSHOT_DIR = "snapshot/"; static { ENV_PATH = System.getenv("PROTTEST_PATH"); if (ENV_PATH != null) PATH = ENV_PATH; else { if (ProtTest.MPJ_RUN) PATH = System.getProperty("user.dir"); else PATH = JAR_PATH.replaceFirst(new File(JAR_PATH).getName(), ""); } APPLICATION_PROPERTIES = new Properties(); try { FileInputStream prop = new FileInputStream( PATH + File.separator + "prottest.properties"); APPLICATION_PROPERTIES.load(prop); } catch (IOException e) { System.err.println("Properties file (" + PATH + File.separator + "prottest.properties) cannot be resolved"); System.exit(EXIT_NO_PROPERTIES); } } /** * Gets the supported matrices. * * @return the supported matrices */ public abstract List<String> getSupportedMatrices(); /** * Gets the model name from matrix and distribution names. This * method is useful specially when a custom matrix is set, so * his internal name is not representative for the user. * * @param matrix the matrix name * @param frequenciesDistribution the frequencies distribution name * * @return the model name */ public abstract String getModelName(String matrix, int frequenciesDistribution); }