
com.crawljax.plugins.crawloverview.model.Statistics Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of crawloverview-plugin Show documentation
Show all versions of crawloverview-plugin Show documentation
Generates an HTML report with a snapshot overview of what is crawled.
The newest version!
package com.crawljax.plugins.crawloverview.model;
import com.crawljax.core.CrawlSession;
import com.crawljax.core.state.StateFlowGraph;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import java.text.DecimalFormat;
import java.util.Date;
import javax.annotation.concurrent.Immutable;
import org.apache.commons.lang3.time.DurationFormatUtils;
@Immutable
public class Statistics {
private final String duration;
private final int crawlPaths;
private final String averageDomSize;
private final int edges;
private final Date startDate;
private final StateStatistics stateStats;
private final int failedEvents;
public Statistics(CrawlSession session, StateStatistics stateStats, Date startDate, int failedEvents) {
this.stateStats = stateStats;
this.failedEvents = failedEvents;
this.startDate = new Date(startDate.getTime());
StateFlowGraph stateFlowGraph = session.getStateFlowGraph();
this.duration = calculateDuration(session);
this.edges = stateFlowGraph.getAllEdges().size();
this.crawlPaths = session.getCrawlPaths().size();
double bytes = stateFlowGraph.getMeanStateStringSize();
this.averageDomSize = new DecimalFormat().format(bytes / 1000) + " kB";
}
@JsonCreator
public Statistics(
@JsonProperty("duration") String duration,
@JsonProperty("crawlPaths") int crawlPaths,
@JsonProperty("averageDomSize") String averageDomSize,
@JsonProperty("edges") int edges,
@JsonProperty("startDate") Date startDate,
@JsonProperty("stateStats") StateStatistics stateStats,
@JsonProperty("failedEvents") int failedEvents) {
this.duration = duration;
this.crawlPaths = crawlPaths;
this.averageDomSize = averageDomSize;
this.edges = edges;
this.startDate = startDate;
this.stateStats = stateStats;
this.failedEvents = failedEvents;
}
private String calculateDuration(CrawlSession session) {
long start = session.getStartTime();
long stop = System.currentTimeMillis();
return DurationFormatUtils.formatDurationWords(stop - start, true, true);
}
public String getAverageDomSize() {
return averageDomSize;
}
public String getDuration() {
return duration;
}
public int getCrawlPaths() {
return crawlPaths;
}
public int getEdges() {
return edges;
}
public StateStatistics getStateStats() {
return stateStats;
}
public Date getStartDate() {
return new Date(startDate.getTime());
}
public int getFailedEvents() {
return failedEvents;
}
@Override
public int hashCode() {
return Objects.hashCode(duration, crawlPaths, averageDomSize, edges, stateStats, failedEvents);
}
@Override
public boolean equals(Object object) {
if (object instanceof Statistics) {
Statistics that = (Statistics) object;
return Objects.equal(this.duration, that.duration)
&& Objects.equal(this.crawlPaths, that.crawlPaths)
&& Objects.equal(this.averageDomSize, that.averageDomSize)
&& Objects.equal(this.edges, that.edges)
&& Objects.equal(this.stateStats, that.stateStats)
&& Objects.equal(this.failedEvents, that.failedEvents);
}
return false;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("duration", duration)
.add("failedEvents", failedEvents)
.add("crawlPaths", crawlPaths)
.add("averageDomSize", averageDomSize)
.add("edges", edges)
.add("startDate", startDate)
.add("stateStats", stateStats)
.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy