package io.lumify.csv; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; import io.lumify.core.ingest.graphProperty.GraphPropertyWorkData; import io.lumify.csv.model.Mapping; import org.apache.commons.csv.CSVRecord; import org.securegraph.Authorizations; import org.securegraph.Graph; import org.securegraph.Vertex; import java.util.HashMap; import java.util.Map; public class State { private final Mapping mapping; private final GraphPropertyWorkData data; private CSVRecord record; private Map<String, String> vertexIdCache = new HashMap<String, String>(); private Cache<String, Vertex> vertexCache = CacheBuilder.newBuilder() .maximumSize(100) .build(); public State(Mapping mapping, GraphPropertyWorkData data) { this.mapping = mapping; this.data = data; } public Mapping getMapping() { return mapping; } public GraphPropertyWorkData getData() { return data; } public void setRecord(CSVRecord record) { this.record = record; } public CSVRecord getRecord() { return record; } public String getCachedVertexId(String hash) { return vertexIdCache.get(hash); } public void addCachedVertex(String hash, Vertex entityVertex) { this.vertexIdCache.put(hash, entityVertex.getId()); this.vertexCache.put(hash, entityVertex); } public Vertex getVertex(Graph graph, String hash, Authorizations authorizations) { Vertex vertex = vertexCache.getIfPresent(hash); if (vertex != null) { return vertex; } String vertexId = getCachedVertexId(hash); if (vertexId != null) { return graph.getVertex(vertexId, authorizations); } return null; } }