Version.java :  » Code-Analyzer » findbugs-1.3.9 » edu » umd » cs » findbugs » Java Open Source

Java Open Source » Code Analyzer » findbugs 1.3.9 
findbugs 1.3.9 » edu » umd » cs » findbugs » Version.java
/*
 * FindBugs - Find bugs in Java programs
 * Copyright (C) 2003-2005 University of Maryland
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library 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
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package edu.umd.cs.findbugs;

import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * Version number and release date information.
 */
public class Version {
  /**
   * Major version number.
   */
  public static final int MAJOR = 1;

  /**
   * Minor version number.
   */
  public static final int MINOR = 3;

  /**
   * Patch level.
   */
  public static final int PATCHLEVEL = 9;

  /**
   * Development version or release candidate?
   */
  public static final boolean IS_DEVELOPMENT = false;

  /**
   * Release candidate number.
   * "0" indicates that the version is not a release candidate.
   */
  public static final int RELEASE_CANDIDATE = 0;

  /**
   * Release date.
   */
  public static final String COMPUTED_DATE;
  public static final String DATE;
  private static final String COMPUTED_ECLIPSE_DATE;

  static {
    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss z, dd MMMM, yyyy");
    SimpleDateFormat eclipseDateFormat = new SimpleDateFormat("yyyyMMdd");
    
    COMPUTED_DATE = dateFormat.format(new Date());
    COMPUTED_ECLIPSE_DATE = eclipseDateFormat.format(new Date()) ;
  }
  
  /**
   * Preview release number.
   * "0" indicates that the version is not a preview release.
   */
  public static final int PREVIEW = 0;

  private static final String RELEASE_SUFFIX_WORD =
    (RELEASE_CANDIDATE > 0
        ? "rc" + RELEASE_CANDIDATE
        : (PREVIEW > 0 ? "preview" + PREVIEW : "dev-" + COMPUTED_ECLIPSE_DATE));

  public static final String RELEASE_BASE = MAJOR + "." + MINOR + "." + PATCHLEVEL ;
  /**
   * Release version string.
   */
  public static final String COMPUTED_RELEASE =
    RELEASE_BASE + (IS_DEVELOPMENT ? "-" + RELEASE_SUFFIX_WORD : "");

  /**
   * Release version string.
   */
  public static final String RELEASE;
  
  /**
   * Version of Eclipse plugin.
   */
  public static final String COMPUTED_ECLIPSE_UI_VERSION = 
    RELEASE_BASE + "." + COMPUTED_ECLIPSE_DATE;
  
  static {
    InputStream in = null;
    String release, date;
    try {
      Properties versionProperties = new Properties();
       in = Version.class.getResourceAsStream("version.properties");
       versionProperties.load(in);
       release = (String) versionProperties.get("release.number");
       date = (String) versionProperties.get("release.date");
       if (release == null) 
         release = COMPUTED_RELEASE;
       if (date == null) 
         date = COMPUTED_DATE;
    } catch (RuntimeException e) {
      release = COMPUTED_RELEASE;
      date = COMPUTED_DATE;
    } catch (IOException e) {
      release = COMPUTED_RELEASE;
      date = COMPUTED_DATE;
    } finally {
      try {
      if (in != null) in.close();
      } catch (IOException e) { 
        assert true; // nothing to do here
      }
    }
    RELEASE = release;
    DATE = date;
  }

  
  /**
   * FindBugs website.
   */
  public static final String WEBSITE = "http://findbugs.sourceforge.net";

  /**
   * Downloads website.
   */
  public static final String DOWNLOADS_WEBSITE = "http://prdownloads.sourceforge.net/findbugs";

  /**
   * Support email.
   */
  public static final String SUPPORT_EMAIL = "http://findbugs.sourceforge.net/reportingBugs.html";

  public static void main(String[] argv) {
    if (argv.length != 1)
      usage();

    String arg = argv[0];
    if (!IS_DEVELOPMENT && RELEASE_CANDIDATE != 0) {
      throw new IllegalStateException("Non developmental version, but is release candidate " + RELEASE_CANDIDATE);
    }
    if (arg.equals("-release"))
      System.out.println(RELEASE);
    else if (arg.equals("-date"))
      System.out.println(DATE);
    else if (arg.equals("-props")) {
      System.out.println("release.base=" + RELEASE_BASE);
      System.out.println("release.number=" + COMPUTED_RELEASE);
      System.out.println("release.date=" + COMPUTED_DATE);
      System.out.println("eclipse.ui.version=" + COMPUTED_ECLIPSE_UI_VERSION);
      System.out.println("findbugs.website=" + WEBSITE);
      System.out.println("findbugs.downloads.website=" + DOWNLOADS_WEBSITE);
    } else {
      usage();
      System.exit(1);
    }
  }

  private static void usage() {
    System.err.println("Usage: " + Version.class.getName() +
        "  (-release|-date|-props)");
  }
}

// vim:ts=4
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.