EnvironmentLookup.java
/*
* Created on 2010/07/26
* Copyright (C) 2010 Koga Laboratory. All rights reserved.
*
*/
package org.mklab.tool.graph.gnuplot;
import java.io.File;
/**
* gnuplotの実行環境の調査を行うクラスです。
*
* @author Yuhi Ishikura
* @version $Revision$, 2010/07/26
*/
class EnvironmentLookup {
/** GNUPLOT_HOME探索のための環境変数名です。 */
private static final String GNUPLOT_HOME_ENV = "GNUPLOT_HOME"; //$NON-NLS-1$
/**
* 作業ディレクトリを探します。
*
* @return 作業ディレクトリ
*/
static File findWorkingDirectory() {
return new File("."); //$NON-NLS-1$
}
/**
* gnuplotのホームディレクトリを取得します。
*
* @return gnuplotのホームディレクトリ
* @throws IllegalArgumentException gnuplotホームが見つからない、または正しくない場合。
*/
static File findHomeDirectory() {
String home = getGnuplotHomeInEnvironmentVariables();
if (home == null) {
if (isWindows()) {
final File homeOnWindows = findGeneralGnuplotHomeOnWindows();
if (homeOnWindows != null) {
return homeOnWindows;
}
}
return new File("."); //$NON-NLS-1$
}
File homeDir = new File(home);
final String lastPathName = homeDir.getName();
if (lastPathName.equals("bin") || lastPathName.equals("binary")) { //$NON-NLS-1$ //$NON-NLS-2$
homeDir = homeDir.getParentFile();
}
return homeDir;
}
/**
* Windows上での一般的なgnuplotフォルダを探索します。
*
* @return gnuplotホームディレクトリ
*/
private static File findGeneralGnuplotHomeOnWindows() {
File home = new File("C:\\Program Files\\gnuplot"); //$NON-NLS-1$
if (home.exists()) {
return home;
}
home = new File("C:\\Program Files (x86)\\gnuplot"); //$NON-NLS-1$
if (home.exists()) {
return home;
}
return null;
}
/**
* 環境変数中のGNUPLOT_HOMEを取得します。
*
* @return GNUPLOT_HOME。設定されていない場合はnull
*/
private static String getGnuplotHomeInEnvironmentVariables() {
String gnuplotHome = System.getProperty(GNUPLOT_HOME_ENV);
if (gnuplotHome == null) {
gnuplotHome = System.getenv(GNUPLOT_HOME_ENV);
}
return gnuplotHome;
}
/**
* Windows環境であるか調べます。
*
* @return Windows環境であればtrue,そうでなければfalse
*/
private static boolean isWindows() {
if (System.getProperty("os.name").startsWith("Windows")) { //$NON-NLS-1$ //$NON-NLS-2$
return true;
}
return false;
}
}