Package org.jgap.util

Source Code of org.jgap.util.SystemKit

/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.util;

import java.io.*;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.Option;

/**
* System-related utility functions.
*
* @author Klaus Meffert
* @since 3.2
*/
public class SystemKit {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.8 $";

  /**
   * @return total memory available by the VM in megabytes.
   *
   * @author Klaus Meffert
   * @since 3.2 (since 3.0 in GPGenotype)
   */
  public static double getTotalMemoryMB() {
    return getTotalMemoryKB() / 1024;
  }

  /**
   * @return total memory available by the VM in kilobytes.
   *
   * @author Klaus Meffert
   * @since 3.2.1
   */
  public static double getTotalMemoryKB() {
    return (Runtime.getRuntime().totalMemory() / 1024);
  }

  /**
   * @return free memory available in the VM in megabytes.
   *
   * @author Klaus Meffert
   * @since 3.2 (since 3.0 in GPGenotype)
   */
  public static double getFreeMemoryMB() {
    return getFreeMemoryKB() / 1024;
  }

  /**
   * @return free memory available in the VM in kilobytes.
   *
   * @author Klaus Meffert
   * @since 3.2.1
   */
  public static double getFreeMemoryKB() {
    return (Runtime.getRuntime().freeMemory() / 1024);
  }

  /**
   * Nicifies a decimal string by cutting of all but two decimal places.
   *
   * @param a_mem the number to make nice
   * @return nicified number as a string
   *
   * @since 3.3.1
   */
  public static String niceMemory(double a_mem) {
    String freeMB = "" + a_mem;
    int index = freeMB.indexOf('.');
    int len = freeMB.length();
    if (len - index > 2) {
      freeMB = freeMB.substring(0, index + 2);
    }
    return freeMB;
  }

  /**
   * Returns the first line of the result of a shell command.
   * Taken from UUID.
   *
   * @param commands the commands to run
   * @return the first line of the command
   * @throws IOException
   *
   * @since 3.3.3
   */
  static String getFirstLineOfCommand(String[] commands)
      throws IOException {
    Process p = null;
    BufferedReader reader = null;
    try {
      p = Runtime.getRuntime().exec(commands);
      reader = new BufferedReader(new InputStreamReader(
          p.getInputStream()), 128);
      return reader.readLine();
    } finally {
      if (p != null) {
        if (reader != null) {
          try {
            reader.close();
          } catch (IOException ex) {}
        }
        try {
          p.getErrorStream().close();
        } catch (IOException ex) {}
        try {
          p.getOutputStream().close();
        } catch (IOException ex) {}
        p.destroy();
      }
    }
  }

  /**
   * Prints all available comamnd line options.
   *
   * @param cmd the CommandLine object
   * @param options the Options list
   *
   * @author Klaus Meffert
   * @since 3.3.4
   */
  public static void printHelp(CommandLine cmd, Options options) {
    if (cmd.hasOption("help")) {
      System.out.println("");
      System.out.println(" Command line options:");
      System.out.println(" ---------------------");
      for (Object opt0 : options.getOptions()) {
        Option opt = (Option) opt0;
        String s = opt.getOpt();
        s = StringKit.fill(s, 20, ' ');
        System.out.println(" " + s + " - " + opt.getDescription());
      }
      System.exit(0);
    }
  }

}
TOP

Related Classes of org.jgap.util.SystemKit

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.