Package net.azib.ipscan.gui

Source Code of net.azib.ipscan.gui.StatisticsDialog

/**
* This file is a part of Angry IP Scanner source code,
* see http://www.angryip.org/ for more information.
* Licensed under GPLv2.
*/

package net.azib.ipscan.gui;

import java.text.DecimalFormat;
import java.text.NumberFormat;

import net.azib.ipscan.config.Labels;
import net.azib.ipscan.core.ScanningResultList;
import net.azib.ipscan.core.UserErrorException;
import net.azib.ipscan.core.ScanningResultList.ScanInfo;

/**
* StatisticsDialog - shows statistical information about the last scan
*
* @author Anton Keks
*/
public class StatisticsDialog extends InfoDialog {
 
  private final ScanningResultList scanningResults;

  public StatisticsDialog(ScanningResultList scanningResults) {
    super(Labels.getLabel("title.statistics"), null);
    this.scanningResults = scanningResults;
  }
 
  @Override
  public void open() {
    if (scanningResults.isInfoAvailable()) {
      setMessage(prepareText());
     
      if (shell != null) {
        // close the same window if it is already open ('scanning incomplete')
        shell.close();
        shell.dispose();
      }

      super.open();
    }
    else {
      throw new UserErrorException("commands.noResults");
    }
  }

  String prepareText() {
    ScanInfo scanInfo = scanningResults.getScanInfo();
    title2 = Labels.getLabel(scanInfo.isCompletedNormally() ?
        "text.scan.completed" : "text.scan.incomplete");
       
    String ln = System.getProperty("line.separator");
    StringBuilder text = new StringBuilder();
    text.append(Labels.getLabel("text.scan.time.total"))
      .append(timeToText(scanInfo.getScanTime())).append(ln);
    text.append(Labels.getLabel("text.scan.time.average"))
      .append(timeToText((double)scanInfo.getScanTime() / scanInfo.getHostCount())).append(ln);
   
    text.append(ln).append(scanningResults.getFeederName()).append(ln)
      .append(scanningResults.getFeederInfo()).append(ln).append(ln);
   
    text.append(Labels.getLabel("text.scan.hosts.total")).append(scanInfo.getHostCount()).append(ln);
    text.append(Labels.getLabel("text.scan.hosts.alive")).append(scanInfo.getAliveCount()).append(ln);
    if (scanInfo.getWithPortsCount() > 0)
      text.append(Labels.getLabel("text.scan.hosts.ports")).append(scanInfo.getWithPortsCount()).append(ln);
    return text.toString();
  }
 
  /**
   * @param scanTime in milliseconds
   * @return provided time in human-readable form
   */
  static String timeToText(double scanTime) {
    double totalSeconds = scanTime/1000;
    double totalMinutes = totalSeconds/60;
    double totalHours = totalMinutes/60;
    NumberFormat format = new DecimalFormat("#.#");
    if (totalHours >= 1)
      return format.format(totalHours) + Labels.getLabel("unit.hour");
    if (totalMinutes >= 1)
      return format.format(totalMinutes) + Labels.getLabel("unit.minute");
    return format.format(totalSeconds) + Labels.getLabel("unit.second");
  }

}
TOP

Related Classes of net.azib.ipscan.gui.StatisticsDialog

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.