org.vertexium.inmemory.InMemoryVertex Maven / Gradle / Ivy
package org.vertexium.inmemory;
import org.vertexium.*;
import org.vertexium.inmemory.util.EdgeToEdgeIdIterable;
import org.vertexium.mutation.ExistingElementMutation;
import org.vertexium.mutation.ExistingElementMutationImpl;
import org.vertexium.query.VertexQuery;
import org.vertexium.search.IndexHint;
import org.vertexium.util.ConvertingIterable;
import org.vertexium.util.FilterIterable;
import org.vertexium.util.IterableUtils;
import java.util.EnumSet;
public class InMemoryVertex extends InMemoryElement implements Vertex {
public InMemoryVertex(
InMemoryGraph graph,
String id,
InMemoryTableVertex inMemoryTableElement,
EnumSet fetchHints,
Long endTime,
Authorizations authorizations
) {
super(
graph,
id,
inMemoryTableElement,
fetchHints,
endTime,
authorizations
);
}
@Override
public Iterable getEdges(Direction direction, Authorizations authorizations) {
return getEdges(direction, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdgeInfos(Direction direction, Authorizations authorizations) {
String[] labels = null;
return getEdgeInfos(direction, labels, authorizations);
}
@Override
public Iterable getEdgeInfos(Direction direction, String label, Authorizations authorizations) {
return getEdgeInfos(direction, new String[]{label}, authorizations);
}
@Override
public Iterable getEdgeInfos(Direction direction, final String[] labels, Authorizations authorizations) {
Iterable results = new ConvertingIterable(getEdges(direction, getFetchHints(), authorizations)) {
@Override
protected EdgeInfo convert(final Edge o) {
return new EdgeInfo() {
@Override
public String getEdgeId() {
return o.getId();
}
@Override
public String getLabel() {
return o.getLabel();
}
@Override
public String getVertexId() {
return o.getOtherVertexId(InMemoryVertex.this.getId());
}
};
}
};
if (labels != null) {
results = new FilterIterable(results) {
@Override
protected boolean isIncluded(EdgeInfo o) {
for (String label : labels) {
if (o.getLabel().equals(label)) {
return true;
}
}
return false;
}
};
}
return results;
}
@Override
public Iterable getEdges(Direction direction, EnumSet fetchHints, Authorizations authorizations) {
return getEdges(direction, fetchHints, null, authorizations);
}
@Override
public Iterable getEdges(final Direction direction, EnumSet fetchHints, Long endTime, Authorizations authorizations) {
return new FilterIterable(getGraph().getEdgesFromVertex(getId(), fetchHints, endTime, authorizations)) {
@Override
protected boolean isIncluded(Edge edge) {
switch (direction) {
case IN:
return edge.getVertexId(Direction.IN).equals(getId());
case OUT:
return edge.getVertexId(Direction.OUT).equals(getId());
default:
return true;
}
}
};
}
@Override
public Iterable getEdgeIds(Direction direction, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(direction, getFetchHints(), authorizations));
}
@Override
public Iterable getEdges(Direction direction, String label, Authorizations authorizations) {
return getEdges(direction, label, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdges(Direction direction, String label, EnumSet fetchHints, Authorizations authorizations) {
return getEdges(direction, labelToArrayOrNull(label), authorizations);
}
@Override
public Iterable getEdgeIds(Direction direction, String label, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(direction, label, authorizations));
}
@Override
public Iterable getEdges(Direction direction, String[] labels, Authorizations authorizations) {
return getEdges(direction, labels, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdges(Direction direction, final String[] labels, EnumSet fetchHints, Authorizations authorizations) {
return new FilterIterable(getEdges(direction, authorizations)) {
@Override
protected boolean isIncluded(Edge edge) {
if (labels == null) {
return true;
}
for (String label : labels) {
if (label.equals(edge.getLabel())) {
return true;
}
}
return false;
}
};
}
@Override
public Iterable getEdgeIds(Direction direction, String[] labels, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(direction, labels, authorizations));
}
@Override
public Iterable getEdges(Vertex otherVertex, Direction direction, Authorizations authorizations) {
return getEdges(otherVertex, direction, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdges(final Vertex otherVertex, Direction direction, EnumSet fetchHints, Authorizations authorizations) {
return new FilterIterable(getEdges(direction, authorizations)) {
@Override
protected boolean isIncluded(Edge edge) {
return edge.getOtherVertexId(getId()).equals(otherVertex.getId());
}
};
}
@Override
public Iterable getEdgeIds(Vertex otherVertex, Direction direction, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(otherVertex, direction, authorizations));
}
@Override
public Iterable getEdges(Vertex otherVertex, Direction direction, String label, Authorizations authorizations) {
return getEdges(otherVertex, direction, label, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdges(final Vertex otherVertex, Direction direction, String label, EnumSet fetchHints, Authorizations authorizations) {
return new FilterIterable(getEdges(direction, label, authorizations)) {
@Override
protected boolean isIncluded(Edge edge) {
return edge.getOtherVertexId(getId()).equals(otherVertex.getId());
}
};
}
@Override
public Iterable getEdgeIds(Vertex otherVertex, Direction direction, String label, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(otherVertex, direction, label, authorizations));
}
@Override
public Iterable getEdges(Vertex otherVertex, Direction direction, String[] labels, Authorizations authorizations) {
return getEdges(otherVertex, direction, labels, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getEdges(final Vertex otherVertex, Direction direction, String[] labels, EnumSet fetchHints, Authorizations authorizations) {
return new FilterIterable(getEdges(direction, labels, authorizations)) {
@Override
protected boolean isIncluded(Edge edge) {
return edge.getOtherVertexId(getId()).equals(otherVertex.getId());
}
};
}
@Override
public Iterable getEdgeIds(Vertex otherVertex, Direction direction, String[] labels, Authorizations authorizations) {
return new EdgeToEdgeIdIterable(getEdges(otherVertex, direction, labels, authorizations));
}
@Override
public int getEdgeCount(Direction direction, Authorizations authorizations) {
return IterableUtils.count(getEdgeIds(direction, authorizations));
}
@Override
public Iterable getEdgeLabels(Direction direction, Authorizations authorizations) {
return IterableUtils.toSet(new ConvertingIterable(getEdges(direction, authorizations)) {
@Override
protected String convert(Edge o) {
return o.getLabel();
}
});
}
@Override
public Iterable getVertices(Direction direction, Authorizations authorizations) {
return getVertices(direction, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getVertices(Direction direction, final EnumSet fetchHints, final Authorizations authorizations) {
return getVertices(direction, (String[])null, fetchHints, authorizations);
}
@Override
public Iterable getVertices(Direction direction, String label, Authorizations authorizations) {
return getVertices(direction, label, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getVertices(Direction direction, String label, EnumSet fetchHints, Authorizations authorizations) {
return getVertices(direction, labelToArrayOrNull(label), fetchHints, authorizations);
}
@Override
public Iterable getVertices(Direction direction, String[] labels, Authorizations authorizations) {
return getVertices(direction, labels, getGraph().getDefaultFetchHints(), authorizations);
}
@Override
public Iterable getVertices(final Direction direction, final String[] labels, final EnumSet fetchHints, final Authorizations authorizations) {
Iterable vertexIds = getVertexIds(direction, labels, authorizations);
return getGraph().getVertices(vertexIds, fetchHints, authorizations);
}
@Override
public Iterable getVertexIds(Direction direction, String label, Authorizations authorizations) {
return getVertexIds(direction, labelToArrayOrNull(label), authorizations);
}
@Override
public Iterable getVertexIds(Direction direction, String[] labels, Authorizations authorizations) {
return new ConvertingIterable(getEdgeInfos(direction, labels, authorizations)) {
@Override
protected String convert(EdgeInfo e) {
return e.getVertexId();
}
};
}
@Override
public Iterable getVertexIds(Direction direction, Authorizations authorizations) {
return getVertexIds(direction, (String[])null, authorizations);
}
@Override
public VertexQuery query(Authorizations authorizations) {
return query(null, authorizations);
}
@Override
public VertexQuery query(String queryString, Authorizations authorizations) {
return getGraph().getSearchIndex().queryVertex(getGraph(), this, queryString, authorizations);
}
@Override
@SuppressWarnings("unchecked")
public ExistingElementMutation prepareMutation() {
return new ExistingElementMutationImpl(this) {
@Override
public Vertex save(Authorizations authorizations) {
IndexHint indexHint = getIndexHint();
Visibility oldElementVisibility = InMemoryVertex.this.getVisibility();
saveExistingElementMutation(this, indexHint, authorizations);
Vertex vertex = getElement();
if (indexHint != IndexHint.DO_NOT_INDEX) {
saveMutationToSearchIndex(
vertex,
oldElementVisibility,
getNewElementVisibility(),
getAlterPropertyVisibilities(),
getExtendedData(),
authorizations
);
}
return vertex;
}
};
}
private static String[] labelToArrayOrNull(String label) {
return label == null ? null : new String[]{label};
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, authorizations), getGraph().getDefaultFetchHints(), null, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, EnumSet fetchHints, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, authorizations), fetchHints, null, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, EnumSet fetchHints, Long endTime, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, authorizations), fetchHints, endTime, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, String label, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, label, authorizations), getGraph().getDefaultFetchHints(), null, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, String label, EnumSet fetchHints, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, label, authorizations), fetchHints, null, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, String[] labels, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, labels, authorizations), getGraph().getDefaultFetchHints(), null, authorizations);
}
@Override
public Iterable getEdgeVertexPairs(Direction direction, String[] labels, EnumSet fetchHints, Authorizations authorizations) {
return getEdgeVertexPairs(getEdgeInfos(direction, labels, authorizations), fetchHints, null, authorizations);
}
private Iterable getEdgeVertexPairs(Iterable edgeInfos, EnumSet fetchHints, Long endTime, Authorizations authorizations) {
return EdgeVertexPair.getEdgeVertexPairs(getGraph(), getId(), edgeInfos, fetchHints, endTime, authorizations);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy