/** * Returns all the Property names as Set of String. out, in and label are not returned as properties even if are part of the * underlying document because are considered internal properties. */ @Override public Set<String> getPropertyKeys() { final OrientBaseGraph graph = setCurrentGraphInThreadLocal(); final ODocument doc = getRecord(); final Set<String> result = new HashSet<String>(); for (String field : doc.fieldNames()) if (graph != null && settings.isUseVertexFieldsForEdgeLabels()) { if (!field.startsWith(CONNECTION_OUT_PREFIX) && !field.startsWith(CONNECTION_IN_PREFIX)) result.add(field); } else if (!field.equals(OrientBaseGraph.CONNECTION_OUT) && !field.equals(OrientBaseGraph.CONNECTION_IN)) result.add(field); return result; }
@Override public Map<String, Object> getProperties() { if (this.rawElement == null) return null; final ODocument raw = this.rawElement.getRecord(); if (raw == null) return null; final OrientBaseGraph graph = setCurrentGraphInThreadLocal(); final Map<String, Object> result = new HashMap<String, Object>(); for (String field : raw.fieldNames()) if (graph != null && settings.isUseVertexFieldsForEdgeLabels()) { if (!field.startsWith(CONNECTION_OUT_PREFIX) && !field.startsWith(CONNECTION_IN_PREFIX)) result.put(field, raw.field(field)); } else if (!field.equals(OrientBaseGraph.CONNECTION_OUT) && !field.equals(OrientBaseGraph.CONNECTION_IN)) result.put(field, raw.field(field)); return result; }
graph.removeEdgesInternal(this, doc, null, true, settings.isUseVertexFieldsForEdgeLabels(), settings.isAutoScaleEdgeType());
.getConnectionFieldName(Direction.OUT, label, settings.isUseVertexFieldsForEdgeLabels()); final String inFieldName = currentVertex .getConnectionFieldName(Direction.IN, label, settings.isUseVertexFieldsForEdgeLabels());
graph.settings.isUseVertexFieldsForEdgeLabels())) { vertexCorrupted = true; if (!checkOnly) { graph.settings.isUseVertexFieldsForEdgeLabels())) { vertexCorrupted = true; if (!checkOnly) { final Object o = it.next(); if (isEdgeBroken(vertex, fieldName, connection.getKey(), (OIdentifiable) o, stats, graph.settings.isUseVertexFieldsForEdgeLabels())) { vertexCorrupted = true; if (!checkOnly) {
final OrientConfigurableGraph.Settings settings = graph.settings; final boolean useVertexFieldsForEdgeLabels = settings.isUseVertexFieldsForEdgeLabels();
List<OTriple<String, Direction, String>> result = new ArrayList<>(); if (settings.isUseVertexFieldsForEdgeLabels()) { if (iClassNames == null || iClassNames.length == 0 || (iClassNames.length == 1 && iClassNames[0].equalsIgnoreCase("E"))) { for (String fieldName : doc.fieldNames()) {
settings.isUseVertexFieldsForEdgeLabels()); final String inFieldName = currentVertex.getConnectionFieldName(Direction.IN, label, settings.isUseVertexFieldsForEdgeLabels());
throw new IllegalStateException("Invalid content found while iterating edges, value '" + value + "' is not an edge"); if (this.sourceVertex.settings.isUseVertexFieldsForEdgeLabels() || edge.isLabeled(labels)) return edge;
final boolean useVertexFieldsForEdgeLabels = settings.isUseVertexFieldsForEdgeLabels();
if (settings.isUseVertexFieldsForEdgeLabels()) { if (settings.isUseVertexFieldsForEdgeLabels()) {
OrientBaseGraph.encodeClassNames(iLabels); if (settings.isUseVertexFieldsForEdgeLabels() || iLabels == null || iLabels.length == 0) {
} else if (klass.isEdgeType()) { if (settings.isUseVertexFieldsForEdgeLabels() || OrientEdge.isLabeled(OrientEdge.getRecordLabel(fieldRecord), iLabels)) { OIdentifiable vertexDoc = OrientEdge.getConnection(fieldRecord, connection.getKey().opposite()); if (vertexDoc == null) {
if (!settings.isUseVertexFieldsForEdgeLabels() && label != null) return false;
final boolean useVertexFieldsForEdgeLabels = settings.isUseVertexFieldsForEdgeLabels();
rawElement = doc; final boolean useVertexFieldsForEdgeLabels = settings.isUseVertexFieldsForEdgeLabels();
@Override public OIdentifiable getGraphElementRecord(final Object iObject) { final ORecord rec = ((OIdentifiable) iObject).getRecord(); if (rec == null || !(rec instanceof ODocument)) return null; final ODocument value = (ODocument) rec; final OIdentifiable v; OImmutableClass immutableClass = ODocumentInternal.getImmutableSchemaClass(value); if (immutableClass.isVertexType()) { // DIRECT VERTEX v = value; } else if (immutableClass.isEdgeType()) { // EDGE if (vertex.settings.isUseVertexFieldsForEdgeLabels() || OrientEdge.isLabeled(OrientEdge.getRecordLabel(value), iLabels)) v = OrientEdge.getConnection(value, connection.getKey().opposite()); else v = null; } else throw new IllegalStateException("Invalid content found between connections: " + value); return v; }
public boolean filter(final OrientEdge iObject) { if (targetVertex != null && !targetVertex.equals(iObject.getVertex(connection.getKey().opposite()))) return false; return this.sourceVertex.settings.isUseVertexFieldsForEdgeLabels() || iObject.isLabeled(labels); }
/** * Returns true if the out/in fields in vertex are post-fixed with edge labels. This improves traversal time by partitioning edges * on different collections, one per Edge's class. */ public boolean isUseVertexFieldsForEdgeLabels() { return settings.isUseVertexFieldsForEdgeLabels(); }
protected void addSingleEdge(final ODocument doc, final OMultiCollectionIterator<Edge> iterable, String fieldName, final OPair<Direction, String> connection, final Object fieldValue, final OIdentifiable iTargetVertex, final String[] iLabels) { final OrientBaseGraph graph = getGraph(); final OrientEdge toAdd = getEdge(graph, doc, fieldName, connection, fieldValue, iTargetVertex, iLabels); if (toAdd != null && (settings.isUseVertexFieldsForEdgeLabels() || toAdd.isLabeled(iLabels))) // ADD THE EDGE iterable.add(toAdd); }