package com.tinkerpop.blueprints.util.wrappers.event.listener;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Vertex;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicLong;
/**
* An event listener that acts as a counter for changes to the graph.
*
* @author Stephen Mallette
*/
public class StubGraphChangedListener implements GraphChangedListener {
private final AtomicLong addEdgeEvent = new AtomicLong(0);
private final AtomicLong addVertexEvent = new AtomicLong(0);
private final AtomicLong vertexPropertyChangedEvent = new AtomicLong(0);
private final AtomicLong vertexPropertyRemovedEvent = new AtomicLong(0);
private final AtomicLong vertexRemovedEvent = new AtomicLong(0);
private final AtomicLong edgePropertyChangedEvent = new AtomicLong(0);
private final AtomicLong edgePropertyRemovedEvent = new AtomicLong(0);
private final AtomicLong edgeRemovedEvent = new AtomicLong(0);
private final ConcurrentLinkedQueue<String> order = new ConcurrentLinkedQueue<String>();
public void reset() {
addEdgeEvent.set(0);
addVertexEvent.set(0);
vertexPropertyChangedEvent.set(0);
vertexPropertyRemovedEvent.set(0);
vertexRemovedEvent.set(0);
edgePropertyChangedEvent.set(0);
edgePropertyRemovedEvent.set(0);
edgeRemovedEvent.set(0);
order.clear();
}
public List<String> getOrder() {
return new ArrayList(this.order);
}
public void vertexAdded(final Vertex vertex) {
addVertexEvent.incrementAndGet();
order.add("v-added-" + vertex.getId());
}
public void vertexPropertyChanged(final Vertex vertex, final String s, final Object o, final Object n) {
vertexPropertyChangedEvent.incrementAndGet();
order.add("v-property-changed-" + vertex.getId() + "-" + s + ":" + o + "->" + n);
}
public void vertexPropertyRemoved(final Vertex vertex, final String s, final Object o) {
vertexPropertyRemovedEvent.incrementAndGet();
order.add("v-property-removed-" + vertex.getId() + "-" + s + ":" + o);
}
public void vertexRemoved(final Vertex vertex, final Map<String, Object> props) {
vertexRemovedEvent.incrementAndGet();
order.add("v-removed-" + vertex.getId());
}
public void edgeAdded(final Edge edge) {
addEdgeEvent.incrementAndGet();
order.add("e-added-" + edge.getId());
}
public void edgePropertyChanged(final Edge edge, final String s, final Object o, final Object n) {
edgePropertyChangedEvent.incrementAndGet();
order.add("e-property-changed-" + edge.getId() + "-" + s + ":" + o + "->" + n);
}
public void edgePropertyRemoved(final Edge edge, final String s, final Object o) {
edgePropertyRemovedEvent.incrementAndGet();
order.add("e-property-removed-" + edge.getId() + "-" + s + ":" + o);
}
public void edgeRemoved(final Edge edge, final Map<String, Object> props) {
edgeRemovedEvent.incrementAndGet();
order.add("e-removed-" + edge.getId());
}
public long addEdgeEventRecorded() {
return addEdgeEvent.get();
}
public long addVertexEventRecorded() {
return addVertexEvent.get();
}
public long vertexPropertyChangedEventRecorded() {
return vertexPropertyChangedEvent.get();
}
public long vertexPropertyRemovedEventRecorded() {
return vertexPropertyRemovedEvent.get();
}
public long vertexRemovedEventRecorded() {
return vertexRemovedEvent.get();
}
public long edgePropertyChangedEventRecorded() {
return edgePropertyChangedEvent.get();
}
public long edgePropertyRemovedEventRecorded() {
return edgePropertyRemovedEvent.get();
}
public long edgeRemovedEventRecorded() {
return edgeRemovedEvent.get();
}
}