blob: c0bbebae0012d8ed4af4945124df1ad388cfb521 [file] [log] [blame]
/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and
* limitations under the License.
*
************************************************************************/
package org.odftoolkit.simple;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Provides meta data about the Simple ODF library as build date, version
* number. Its main() method is the start method of the library, enabling the
* access of version methods from command line: "java -jar simple-odf.jar".
*/
public class JarManifest {
private static final String CURRENT_CLASS_RESOURCE_PATH = "org/odftoolkit/simple/JarManifest.class";
private static final String MANIFEST_JAR_PATH = "META-INF/MANIFEST.MF";
private static String SIMPLE_ODF_NAME;
private static String SIMPLE_ODF_VERSION;
private static String SIMPLE_ODF_WEBSITE;
private static String SIMPLE_ODF_BUILD_BY;
private static String SIMPLE_ODF_BUILD_DATE;
private static String SIMPLE_ODF_SUPPORTED_ODF_VERSION;
static {
try {
Manifest manifest = new Manifest(getManifestAsStream());
Attributes attr = manifest.getEntries().get("SIMPLE-ODF");
SIMPLE_ODF_NAME = attr.getValue("SIMPLE-ODF-Name");
SIMPLE_ODF_VERSION = attr.getValue("SIMPLE-ODF-Version");
SIMPLE_ODF_WEBSITE = attr.getValue("SIMPLE-ODF-Website");
SIMPLE_ODF_BUILD_BY = attr.getValue("SIMPLE-ODF-Built-By");
SIMPLE_ODF_BUILD_DATE = attr.getValue("SIMPLE-ODF-Built-Date");
SIMPLE_ODF_SUPPORTED_ODF_VERSION = attr.getValue("SIMPLE-ODF-Supported-ODF-Version");
} catch (Exception e) {
Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
null, e);
}
}
private static InputStream getManifestAsStream() {
String versionRef = JarManifest.class.getClassLoader().getResource(
CURRENT_CLASS_RESOURCE_PATH).toString();
String manifestRef = versionRef.substring(0, versionRef
.lastIndexOf(CURRENT_CLASS_RESOURCE_PATH))
+ MANIFEST_JAR_PATH;
URL manifestURL = null;
InputStream in = null;
try {
manifestURL = new URL(manifestRef);
} catch (MalformedURLException ex) {
Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
null, ex);
}
try {
in = manifestURL.openStream();
} catch (IOException ex) {
Logger.getLogger(JarManifest.class.getName()).log(Level.SEVERE,
null, ex);
}
return in;
}
private JarManifest() {
}
/**
* The main method is meant to be called when the JAR is being executed,
* e.g. "java -jar simple-odf.jar" and provides version information:
*
* simple-odf 0.3 (build 20110201-1729) from http://odftoolkit.org
* supporting ODF 1.2
*
* Allowing version access from the JAR without the need to unzip the JAR
* nor naming the JAR (requiring the change of class path for every version
* due to JAR naming change).
*/
public static void main(String[] args) throws IOException {
System.out.println(getSimpleOdfTitle() + " (build "
+ getSimpleOdfBuildDate() + ')' + "\nfrom "
+ getSimpleOdfWebsite() + " supporting ODF "
+ getSimpleOdfSupportedOdfVersion());
}
/**
* Return the name of Simple ODF;
*
* @return the Simple ODF library name
*/
public static String getSimpleOdfName() {
return SIMPLE_ODF_NAME;
}
/**
* Returns the Simple ODF library title
*
* @return A string containing both the name and the version of the Simple
* ODF library.
*/
public static String getSimpleOdfTitle() {
return getSimpleOdfName() + ' ' + getSimpleOdfVersion();
}
/**
* Return the version of the Simple ODF library (ie. simple-odf.jar)
*
* @return the Simple ODF library version
*/
public static String getSimpleOdfVersion() {
return SIMPLE_ODF_VERSION;
}
/**
* Return the website of the Simple ODF library (ie. simple-odf.jar)
*
* @return the Simple ODF library website
*/
public static String getSimpleOdfWebsite() {
return SIMPLE_ODF_WEBSITE;
}
/**
* Return the name of the one building the Simple ODF library (ie.
* simple-odf.jar)
*
* @return the name of the Simple ODF library builder
*/
public static String getSimpleOdfBuildResponsible() {
return SIMPLE_ODF_BUILD_BY;
}
/**
* Return the date when Simple ODF had been build
*
* @return the date of the build
*/
public static String getSimpleOdfBuildDate() {
return SIMPLE_ODF_BUILD_DATE;
}
/**
* Returns the version of the OpenDocument specification covered by the
* Simple ODF library (ie. simple-odf.jar)
*
* @return the supported ODF version number
*/
public static String getSimpleOdfSupportedOdfVersion() {
return SIMPLE_ODF_SUPPORTED_ODF_VERSION;
}
}