001 /** 002 * 003 */ 004 package edu.wwu.tobikley.acgc.algorithms; 005 006 import java.math.BigInteger; 007 008 /** 009 * Encapsulates the result of one iteration of a call of 010 * <code>CountingAlgorithm.algorithm()</code>. 011 * The following three pieces of information are included: 012 * 013 * <ul> 014 * <li>The type of the result (either "Overall" or "i. Iteration", 015 * <li>the result of the algorithm itself, and 016 * <li>the runtime it took the algorithm to compute the result. 017 * </ul> 018 * 019 * <code>CountingResult</code>s are sorted by the result value. 020 * 021 * @version 1.0 022 * @author Tobias Kley 023 */ 024 public class CountingResult implements Comparable{ 025 026 /** The type of the result. Allowed are either "Overall" or "i. Iteration". */ 027 private String type = null; 028 029 /** The result itself. */ 030 private BigInteger result = null; 031 032 /** The runtime it took the algorithm to compute the result. */ 033 private long runTime = 0; 034 035 /** 036 * Creates a new instance of a counting result. 037 * 038 * @param type The type of the result. 039 * @param result he result itself. 040 * @param runTime The runtime it took the algorithm to compute the result. 041 */ 042 public CountingResult(String type, BigInteger result, long runTime) { 043 this.type = type; 044 this.result = result; 045 this.runTime = runTime; 046 } 047 048 /** 049 * @return the type 050 */ 051 public String getType() { 052 return type; 053 } 054 055 /** 056 * @return the result 057 */ 058 public BigInteger getResult() { 059 return result; 060 } 061 062 /** 063 * @return the runTime 064 */ 065 public long getRunTime() { 066 return runTime; 067 } 068 069 /** 070 * Returns <code>[type]</code>: <code>[result]</code> in <code>[runTime]</code>. 071 * @return String representation of the above form. 072 */ 073 public String toString() { 074 return getType() + ": " + getResult() + " in " + getRunTime(); 075 } 076 /** 077 * CountingResults are compared by the value of their <code>result</code>. 078 */ 079 public int compareTo(Object o) { 080 CountingResult otherElement = (CountingResult) o; 081 return this.result.compareTo(otherElement.getResult()); 082 } 083 }