All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.FitNesseVersion Maven / Gradle / Ivy

There is a newer version: 20241026
Show newest version
// Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the GNU General Public License version 2 or later.
package fitnesse;

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Represents a version of a fitnesse release. Versions have the following format: v20100103[suffix]
 * I.e. the suffix is optional.
 **/
public class FitNesseVersion {
  private static final Logger LOG = Logger.getLogger(FitNesseVersion.class.getName());
  private static final String UNKNOWN_VERSION = "vUnknown";

  private final String version;

  public FitNesseVersion() {
    this(versionFromMetaInf());
  }

  public FitNesseVersion(String version) {
    this.version = version;
  }

  private static String versionFromMetaInf() {
    InputStream is = null;
    try {
      is = FitNesseVersion.class.getResourceAsStream("/META-INF/FitNesseVersion.txt");
      if (is == null) {
        return UNKNOWN_VERSION;
      }
      byte[] b = new byte[64];
      int len = is.read(b);
      return new String(b, 0, len, Charset.forName("ISO-8859-1"));
    } catch (IOException e) {
      LOG.log(Level.WARNING, "Unable to read FitNesse version", e);
      return UNKNOWN_VERSION;
    } finally {
      if (is != null) {
        try {
          is.close();
        } catch (IOException e) {
          LOG.log(Level.SEVERE, "Unable to close FitNesse version file (should never happen)", e);
        }
      }
    }
  }

  @Override
  public String toString() {
    return version;
  }

  static Long dateVersion(String fullTextVersion) {
    try {
      return Long.parseLong(fullTextVersion.substring(1, Math.min(9, fullTextVersion.length())));
    } catch (Exception e) {
      throw new IllegalArgumentException("Unable to extract date version from " + fullTextVersion, e);
    }
  }

  /**
   * Compare this instance's version against the specified one.
   * Note: the suffixes are ignored when comparing versions
   * @param requiredVersion minimum required version
   * @return true if this version is not younger than the specified one, suffix excluded
   **/
  public boolean isAtLeast(String requiredVersion) {
    long thisVersion = dateVersion(version);
    long otherVersion = dateVersion(requiredVersion);
    return thisVersion >= otherVersion;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy