public class SchemaInstance {
// vertex-name -> vertex-schema
private Map<String, VertexSchema> vertexMap = new HashMap<>();
public class SchemaInstance {
// vertex-name -> vertex-schema
private Map<String, VertexSchema> vertexMap = new HashMap<>();
// source:target:type -> edge-schema
private Map<String, EdgeSchema> edgeKeyMap = new HashMap<>();
// source:target:type -> edge-schema
private Map<String, EdgeSchema> edgeKeyMap = new HashMap<>();
// source:target -> edge-schema
private Map<String, Set<EdgeSchema>> edgeSourceTargetMap = new HashMap<>();
// source:target -> edge-schema
private Map<String, Set<EdgeSchema>> edgeSourceTargetMap = new HashMap<>();
// vertex-name -> edge-schema
private Map<String, Set<EdgeSchema>> vertexEdgeMap = new HashMap<>();
// vertex-name -> edge-schema
private Map<String, Set<EdgeSchema>> vertexEdgeMap = new HashMap<>();
public VertexSchema getVertexSchema(String vertexName) {
return vertexMap.get(vertexName.toLowerCase());
}
public VertexSchema getVertexSchema(String vertexName) {
return vertexMap.get(vertexName.toLowerCase());
}
public EdgeSchema getEdgeSchema(String source, String target, String type) {
return edgeKeyMap.get(generateEdgeKey(source, target, type));
}
public EdgeSchema getEdgeSchema(String source, String target, String type) {
return edgeKeyMap.get(generateEdgeKey(source, target, type));
}
public Set<EdgeSchema> getEdgeSchemas(String source, String target) {
return edgeSourceTargetMap.get(source.toLowerCase() + ":" + target.toLowerCase());
}
public Set<EdgeSchema> getEdgeSchemas(String source, String target) {
return edgeSourceTargetMap.get(source.toLowerCase() + ":" + target.toLowerCase());
}
public Set<EdgeSchema> getEdgeSchema(String vertexName) {
return vertexEdgeMap.get(vertexName.toLowerCase());
}
public Set<EdgeSchema> getEdgeSchema(String vertexName) {
return vertexEdgeMap.get(vertexName.toLowerCase());
}
public void addVertex(VertexSchema v) {
vertexMap.put(v.getName().toLowerCase(), v);
}
public void addVertex(VertexSchema v) {
vertexMap.put(v.getName().toLowerCase(), v);
}
- if (e.getSource().equals(FromJsonEdgeSchema.WILDCARD_CHAR) ||
- e.getTarget().equals(FromJsonEdgeSchema.WILDCARD_CHAR)) {
+ if (e.getSource().equals(FromJsonEdgeSchema.WILDCARD_CHAR)
+ || e.getTarget().equals(FromJsonEdgeSchema.WILDCARD_CHAR)) {
// Handle wildcard edges
for (VertexSchema vertex : vertexMap.values()) {
addWildcardEdge(e, vertex);
}
// Handle wildcard edges
for (VertexSchema vertex : vertexMap.values()) {
addWildcardEdge(e, vertex);
}
private void addWildcardEdge(EdgeSchema e, VertexSchema vertex) throws SchemaProviderException {
FromJsonEdgeSchema newEdge = new FromJsonEdgeSchema(e);
newEdge.replaceWildcard(vertex.getName());
private void addWildcardEdge(EdgeSchema e, VertexSchema vertex) throws SchemaProviderException {
FromJsonEdgeSchema newEdge = new FromJsonEdgeSchema(e);
newEdge.replaceWildcard(vertex.getName());
private void addEdgeInternal(EdgeSchema e) {
edgeKeyMap.put(generateEdgeKey(e.getSource(), e.getTarget(), e.getName()), e);
private void addEdgeInternal(EdgeSchema e) {
edgeKeyMap.put(generateEdgeKey(e.getSource(), e.getTarget(), e.getName()), e);
Set<EdgeSchema> edgeListSource = vertexEdgeMap.get(e.getSource().toLowerCase());
Set<EdgeSchema> edgeListTarget = vertexEdgeMap.get(e.getTarget().toLowerCase());
Set<EdgeSchema> edgeListSource = vertexEdgeMap.get(e.getSource().toLowerCase());
Set<EdgeSchema> edgeListTarget = vertexEdgeMap.get(e.getTarget().toLowerCase());
if (edgeListSource == null) {
edgeListSource = new HashSet<EdgeSchema>();
}
if (edgeListTarget == null) {
edgeListTarget = new HashSet<EdgeSchema>();
}
if (edgeListSource == null) {
edgeListSource = new HashSet<EdgeSchema>();
}
if (edgeListTarget == null) {
edgeListTarget = new HashSet<EdgeSchema>();
}
edgeListSource.add(e);
edgeListTarget.add(e);
vertexEdgeMap.put(e.getSource().toLowerCase(), edgeListSource);
vertexEdgeMap.put(e.getTarget().toLowerCase(), edgeListTarget);
edgeListSource.add(e);
edgeListTarget.add(e);
vertexEdgeMap.put(e.getSource().toLowerCase(), edgeListSource);
vertexEdgeMap.put(e.getTarget().toLowerCase(), edgeListTarget);
String sourceTargetKey = e.getSource().toLowerCase() + ":" + e.getTarget().toLowerCase();
Set<EdgeSchema> edgeList = edgeSourceTargetMap.get(sourceTargetKey);
if (edgeList == null) {
edgeList = new HashSet<EdgeSchema>();
}
String sourceTargetKey = e.getSource().toLowerCase() + ":" + e.getTarget().toLowerCase();
Set<EdgeSchema> edgeList = edgeSourceTargetMap.get(sourceTargetKey);
if (edgeList == null) {
edgeList = new HashSet<EdgeSchema>();
}
private String generateEdgeKey(String source, String target, String type) {
String key = source + ":" + target + ":" + type;
return key.toLowerCase();
}
public Map<String, VertexSchema> getVertexMap() {
private String generateEdgeKey(String source, String target, String type) {
String key = source + ":" + target + ":" + type;
return key.toLowerCase();
}
public Map<String, VertexSchema> getVertexMap() {