/*
* $Id: Commons.java,v 1.3 2006/07/27 16:28:24 ahmed Exp $
*
* 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 jaligner.util;
import java.net.JarURLConnection;
import java.net.URL;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Global constants/variables/settings
*
* @author Ahmed Moustafa (ahmed@users.sf.net)
*/
public abstract class Commons {
/**
* Tab
*/
public static final String TAB = "\t";
/**
* Logger
*/
private static final Logger logger = Logger.getLogger(Commons.class
.getName());
/**
* Build timestamp attribute in the manifest in the jar
*/
private static final String BUILD_TIMESTAMP = "Created-At";
/**
*
*/
private static final String currentRelease = getManifestBuildTimestamp();
/**
* Default home directory
*/
private static final String DEFAULT_USER_DIRECTORY = ".";
/**
* Default file separator
*/
private static final String DEFAULT_FILE_SEPARATOR = "/";
/**
* Default line separator
*/
private static final String DEFAULT_LINE_SEPARATOR = "\r\n";
/**
* User home directory
*/
private static String userDirectory = DEFAULT_USER_DIRECTORY;
static {
try {
userDirectory = System.getProperty("user.dir");
} catch (Exception e) {
logger.log(Level.WARNING, "Failed getting user current directory: "
+ e.getMessage(), e);
}
}
/**
* Line separator
*/
private static String fileSeparator = DEFAULT_FILE_SEPARATOR;
static {
try {
fileSeparator = System.getProperty("file.separator");
} catch (Exception e) {
logger.log(Level.WARNING, "Failed getting system file separator: "
+ e.getMessage(), e);
}
}
/**
* Line separator
*/
private static String lineSeparator = DEFAULT_LINE_SEPARATOR;
static {
try {
lineSeparator = System.getProperty("line.separator");
} catch (Exception e) {
logger.log(Level.WARNING, "Failed getting system line separator: "
+ e.getMessage(), e);
}
}
/**
* JNLP enabled
*/
private static boolean jnlp = false;
static {
try {
jnlp = "true".equalsIgnoreCase(System.getProperty("jnlp.enabled"));
} catch (Exception e) {
logger.log(Level.WARNING, "Failed getting jnlp enabled property: "
+ e.getMessage(), e);
}
setJnlp(jnlp);
}
/**
* Returns system file separator.
*
* @return file separator
*/
public static String getFileSeparator() {
return fileSeparator;
}
/**
* Returns system line separator.
*
* @return line separator
*/
public static String getLineSeparator() {
return lineSeparator;
}
/**
* Returns user's current directory.
*
* @return user's current directory
*/
public static String getUserDirectory() {
return userDirectory;
}
/**
* Sets the JNLP flag to true of false
*
* @param jnlp
* true or false
*/
public static void setJnlp(boolean jnlp) {
Commons.jnlp = jnlp;
}
/**
* Returns true if jnlp is enabled
*
* @return true if jnlp is enabled, otherwise returns false
*/
public static boolean isJnlp() {
return jnlp;
}
/**
* Gets the build teimstamp from the jar manifest
*
* @return build timestamp
*/
private static String getManifestBuildTimestamp() {
JarURLConnection connection = null;
JarFile jarFile = null;
URL url = Commons.class.getClassLoader().getResource("jaligner");
try {
// Get jar connection
connection = (JarURLConnection) url.openConnection();
// Get the jar file
jarFile = connection.getJarFile();
// Get the manifest
Manifest manifest = jarFile.getManifest();
// Get the manifest entries
Attributes attributes = manifest.getMainAttributes();
Attributes.Name name = new Attributes.Name(BUILD_TIMESTAMP);
return attributes.getValue(name);
} catch (Exception e) {
String message = "Failed getting the current release info: "
+ e.getMessage();
logger.log(Level.WARNING, message);
}
return null;
}
/**
* Returns the current release version of JAligner
*
* @return current release
*/
public static String getCurrentRelease() {
return currentRelease;
}
/**
* Returns information about JAligner
*
* @return information about JAligner
*/
public static String getJAlignerInfo() {
return "JAligner - Build: " + getCurrentRelease()
+ " - By: Ahmed Moustafa (ahmed@users.sf.net)";
}
}