
com.crawljax.plugins.crawloverview.model.OutPutModel Maven / Gradle / Ivy
Show all versions of crawloverview-plugin Show documentation
package com.crawljax.plugins.crawloverview.model;
import javax.annotation.concurrent.Immutable;
import com.crawljax.core.ExitNotifier.ExitStatus;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
/**
* Result of a Crawl session.
*
* This class is nearly {@link Immutable}. Unfortunately {@link State#getCandidateElements()} isn't
* so that might leak state.
*/
@Immutable
public final class OutPutModel {
private final ImmutableMap states;
private final ImmutableList edges;
private final Statistics statistics;
private final ExitStatus exitStatus;
@JsonCreator
public OutPutModel(@JsonProperty("states") ImmutableMap states,
@JsonProperty("edges") ImmutableList edges,
@JsonProperty("statistics") Statistics statistics,
@JsonProperty("exitStatus") ExitStatus exitStatus) {
this.states = states;
this.edges = edges;
this.statistics = statistics;
this.exitStatus = exitStatus;
}
public ImmutableMap getStates() {
return states;
}
public ImmutableList getEdges() {
return edges;
}
public Statistics getStatistics() {
return statistics;
}
public ExitStatus getExitStatus() {
return exitStatus;
}
@Override
public int hashCode() {
return Objects.hashCode(states, edges, statistics, exitStatus);
}
@Override
public boolean equals(Object object) {
if (object instanceof OutPutModel) {
OutPutModel that = (OutPutModel) object;
return Objects.equal(this.states, that.states)
&& Objects.equal(this.edges, that.edges)
&& Objects.equal(this.statistics, that.statistics)
&& Objects.equal(this.exitStatus, that.exitStatus);
}
return false;
}
@Override
public String toString() {
return Objects.toStringHelper(this).add("exitStatus", exitStatus)
.add("states", states).add("edges", edges)
.add("statistics", statistics).toString();
}
}