ExecutionEntry.java
package sk.iway.iwcm.components.monitoring.jpa;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.system.datatable.DataTableColumnType;
import sk.iway.iwcm.system.datatable.annotations.DataTableColumn;
@Getter
@Setter
public class ExecutionEntry implements Comparable<ExecutionEntry>, Serializable
{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
@DataTableColumn(inputType = DataTableColumnType.TEXTAREA, title = "")
String whatWasExecuted;
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_executions")
private Long numberOfHits = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_cache_hits")
private Long numberOfCacheHits = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_execution_time")
private Long averageExecutionTime = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_slowest_one")
private Long maximumExecutionTime = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_fastest_one")
private Long minimumExecutionTime = Long.MAX_VALUE;
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.component_total_time")
private Long totalTimeOfExecutions = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.average_memory_consumed")
private Long totalMemoryConsumed = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "components.monitoring.consumption_peek")
private Long memoryConsumptionPeek = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "")
private Long totalTimeOfCacheExecutions = Long.valueOf(0);
@DataTableColumn(inputType = DataTableColumnType.NUMBER, title = "")
private Long validMemoryMeasurements = Long.valueOf(0);
public ExecutionEntry(){}
public ExecutionEntry(String name) {
this.whatWasExecuted = name;
}
//----------------------------GETTERS AND SETTERS-----------------------------
public String getName()
{
return this.whatWasExecuted;
}
public long getNumberOfExecutions()
{
return this.numberOfHits;
}
public long getTotalTimeSpentOnServingThisComponent()
{
return totalTimeOfCacheExecutions + totalTimeOfExecutions;
}
public long getAverageExecutionTime()
{
if (this.numberOfHits == 0)
return 0;
return this.totalTimeOfExecutions / this.numberOfHits;
}
public long getAverageCacheExecutionTime()
{
if (this.numberOfCacheHits == 0)
return 0;
return this.totalTimeOfCacheExecutions / this.numberOfCacheHits;
}
public long getAverageMemoryConsumption()
{
if (validMemoryMeasurements == 0)
return 0;
return totalMemoryConsumed / validMemoryMeasurements;
}
@Override
public int compareTo(ExecutionEntry anotherEntry)
{
return -Long.valueOf(getAverageExecutionTime()).
compareTo(Long.valueOf(anotherEntry.getAverageExecutionTime()));
}
@Override
public boolean equals(Object o)
{
if (!(o instanceof ExecutionEntry)) return false;
return ((ExecutionEntry)o).getName().equals(this.getName()) && compareTo((ExecutionEntry)o)==0;
}
@Override
public int hashCode(){
return getName().hashCode() + Long.valueOf(getAverageExecutionTime()).hashCode();
}
@Override
public String toString()
{
return whatWasExecuted + " took " + getAverageExecutionTime() + " ms on average";
}
}