/*
 * HDNLibrary.java
 * 
 * Author: http://www.hrtdotnet.jp/
 * 
 */
package jp.hrtdotnet.java;

import java.io.IOException;
import java.util.jar.Attributes;
import java.util.jar.JarFile;

/**
 * HDNLibrary の情報を定義してあるクラスです。
 * 
 * @version 2.1
 * @author hrtdotnet.jp
 * <br />http://www.hrtdotnet.jp/
 * @since 2.0
 */
class HDNLibrary {

    public static void main(String[] args) throws IOException {

        System.out.println("Informations.");
        System.out.println("Library-Name  : " + NAME);
        System.out.println("Major-Version : " + MAJOR_VERSION);
        System.out.println("Minor-Version : " + MINOR_VERSION);
        System.out.println("Version       : " + VERSION);
        System.out.println("Author        : " + AUTHOR);
        System.out.println("Web-Site      : " + WEB_SITE);
        System.out.println("JVM-Target    : " + JVM_TARGET);
    }

    // informations.
    /** ライブラリ名 */
    public static final String NAME;
    /** ライブラリのメジャーバージョン */
    public static final String MAJOR_VERSION;
    /** ライブラリのマイナーバージョン */
    public static final String MINOR_VERSION;
    /** ライブラリのバージョン（内部バージョンを含む全表示） */
    public static final String VERSION;
    /** 著作者 */
    public static final String AUTHOR;
    /** ウェブサイトのURL */
    public static final String WEB_SITE;
    /** targetオプションの値 */
    public static final String JVM_TARGET;

    static {
        JarFile jar = null;
        try {
            jar = new JarFile(System.getProperty("java.class.path"));
            Attributes attributes = jar.getManifest().getMainAttributes();
            NAME = attributes.getValue("Extension-Name");
            VERSION = attributes.getValue("Signature-Version");
            AUTHOR = attributes.getValue("Author");
            MINOR_VERSION = attributes.getValue("Implementation-Version");
            WEB_SITE = attributes.getValue("Implementation-URL");
            MAJOR_VERSION = attributes.getValue("Specification-Version");
            JVM_TARGET = attributes.getValue("X-Compile-Target-JDK");
        } catch (IOException e) {
            throw new RuntimeException("Cannot read a Library information.");
        }
    }

}
