Search in sources :

Example 21 with Vertex

use of com.tinkerpop.blueprints.Vertex in project orientdb by orientechnologies.

the class DatabaseConflictStategyTest method startThread.

private Thread startThread(final int version, final long timeout, final String key) {
    Thread th = new Thread() {

        @Override
        public void run() {
            OrientVertex vtx1 = null;
            OrientGraph graph = getGraphFactory().getTx();
            Iterable<Vertex> vtxs = graph.getVertices();
            for (Vertex vtx : vtxs) {
                vtx1 = (OrientVertex) vtx;
            }
            try {
                Thread.sleep(timeout);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            vtx1.setProperty(key, "key-" + version);
            graph.commit();
            printVertex(version + "", vtx1);
            graph.shutdown();
        }
    };
    th.start();
    return th;
}
Also used : OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex) Vertex(com.tinkerpop.blueprints.Vertex) OrientGraph(com.tinkerpop.blueprints.impls.orient.OrientGraph) OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex)

Example 22 with Vertex

use of com.tinkerpop.blueprints.Vertex in project orientdb by orientechnologies.

the class OGraphSONUtility method objectNodeFromElement.

/**
   * Creates GraphSON for a single graph element.
   */
public ObjectNode objectNodeFromElement(final Element element) {
    final boolean isEdge = element instanceof Edge;
    final boolean showTypes = mode == GraphSONMode.EXTENDED;
    final List<String> propertyKeys = isEdge ? this.edgePropertyKeys : this.vertexPropertyKeys;
    final ElementPropertiesRule elementPropertyConfig = isEdge ? this.edgePropertiesRule : this.vertexPropertiesRule;
    final ObjectNode jsonElement = createJSONMap(createPropertyMap(element, propertyKeys, elementPropertyConfig, normalized), propertyKeys, showTypes);
    if ((isEdge && this.includeReservedEdgeId) || (!isEdge && this.includeReservedVertexId)) {
        putObject(jsonElement, GraphSONTokens._ID, element.getId());
    }
    // are graph implementations that have Edge extend from Vertex
    if (element instanceof Edge) {
        final Edge edge = (Edge) element;
        if (this.includeReservedEdgeId) {
            putObject(jsonElement, GraphSONTokens._ID, element.getId());
        }
        if (this.includeReservedEdgeType) {
            jsonElement.put(GraphSONTokens._TYPE, GraphSONTokens.EDGE);
        }
        if (this.includeReservedEdgeOutV) {
            putObject(jsonElement, GraphSONTokens._OUT_V, edge.getVertex(Direction.OUT).getId());
        }
        if (this.includeReservedEdgeInV) {
            putObject(jsonElement, GraphSONTokens._IN_V, edge.getVertex(Direction.IN).getId());
        }
        if (this.includeReservedEdgeLabel) {
            jsonElement.put(GraphSONTokens._LABEL, edge.getLabel());
        }
    } else if (element instanceof Vertex) {
        if (this.includeReservedVertexId) {
            putObject(jsonElement, GraphSONTokens._ID, element.getId());
        }
        if (this.includeReservedVertexType) {
            jsonElement.put(GraphSONTokens._TYPE, GraphSONTokens.VERTEX);
        }
    }
    return jsonElement;
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ElementPropertiesRule(com.tinkerpop.blueprints.util.io.graphson.ElementPropertyConfig.ElementPropertiesRule) Edge(com.tinkerpop.blueprints.Edge)

Example 23 with Vertex

use of com.tinkerpop.blueprints.Vertex in project orientdb by orientechnologies.

the class OGraphMLReader method inputGraph.

/**
   * Input the GraphML stream data into the graph. More control over how data is streamed is provided by this method.
   *
   * @param inputGraph
   *          the graph to populate with the GraphML data
   * @param graphMLInputStream
   *          an InputStream of GraphML data
   * @param bufferSize
   *          the amount of elements to hold in memory before committing a transactions (only valid for TransactionalGraphs)
   * @param vertexIdKey
   *          if the id of a vertex is a &lt;data/&gt; property, fetch it from the data property.
   * @param edgeIdKey
   *          if the id of an edge is a &lt;data/&gt; property, fetch it from the data property.
   * @param edgeLabelKey
   *          if the label of an edge is a &lt;data/&gt; property, fetch it from the data property.
   * @throws IOException
   *           thrown when the GraphML data is not correctly formatted
   */
public OGraphMLReader inputGraph(final Graph inputGraph, final InputStream graphMLInputStream, int bufferSize, String vertexIdKey, String edgeIdKey, String edgeLabelKey) throws IOException {
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    try {
        XMLStreamReader reader = inputFactory.createXMLStreamReader(graphMLInputStream);
        final OrientBaseGraph graph = (OrientBaseGraph) inputGraph;
        if (storeVertexIds)
            graph.setSaveOriginalIds(storeVertexIds);
        Map<String, String> keyIdMap = new HashMap<String, String>();
        Map<String, String> keyTypesMaps = new HashMap<String, String>();
        // <Mapped ID String, ID Object>
        // <Default ID String, Mapped ID String>
        Map<String, ORID> vertexMappedIdMap = new HashMap<String, ORID>();
        // Buffered Vertex Data
        String vertexId = null;
        Map<String, Object> vertexProps = null;
        boolean inVertex = false;
        // Buffered Edge Data
        String edgeId = null;
        String edgeLabel = null;
        String vertexLabel = null;
        // [0] = outVertex , [1] = inVertex
        Vertex[] edgeEndVertices = null;
        Map<String, Object> edgeProps = null;
        boolean inEdge = false;
        int bufferCounter = 0;
        long importedVertices = 0;
        long importedEdges = 0;
        while (reader.hasNext()) {
            Integer eventType = reader.next();
            if (eventType.equals(XMLEvent.START_ELEMENT)) {
                String elementName = reader.getName().getLocalPart();
                if (elementName.equals(GraphMLTokens.KEY)) {
                    String id = reader.getAttributeValue(null, GraphMLTokens.ID);
                    String attributeName = reader.getAttributeValue(null, GraphMLTokens.ATTR_NAME);
                    String attributeType = reader.getAttributeValue(null, GraphMLTokens.ATTR_TYPE);
                    keyIdMap.put(id, attributeName);
                    keyTypesMaps.put(id, attributeType);
                } else if (elementName.equals(GraphMLTokens.NODE)) {
                    vertexId = reader.getAttributeValue(null, GraphMLTokens.ID);
                    vertexLabel = reader.getAttributeValue(null, LABELS);
                    if (vertexLabel != null) {
                        if (vertexLabel.startsWith(":"))
                            // REMOVE : AS PREFIX
                            vertexLabel = vertexLabel.substring(1);
                        final String[] vertexLabels = vertexLabel.split(":");
                        // GET ONLY FIRST LABEL AS CLASS
                        vertexLabel = vertexId + ",class:" + vertexLabels[vertexLabelIndex];
                    } else
                        vertexLabel = vertexId;
                    inVertex = true;
                    vertexProps = new HashMap<String, Object>();
                } else if (elementName.equals(GraphMLTokens.EDGE)) {
                    edgeId = reader.getAttributeValue(null, GraphMLTokens.ID);
                    edgeLabel = reader.getAttributeValue(null, GraphMLTokens.LABEL);
                    edgeLabel = edgeLabel == null ? GraphMLTokens._DEFAULT : edgeLabel;
                    String[] vertexIds = new String[2];
                    vertexIds[0] = reader.getAttributeValue(null, GraphMLTokens.SOURCE);
                    vertexIds[1] = reader.getAttributeValue(null, GraphMLTokens.TARGET);
                    edgeEndVertices = new Vertex[2];
                    for (int i = 0; i < 2; i++) {
                        // i=0 => outVertex, i=1 => inVertex
                        if (vertexIdKey == null) {
                            edgeEndVertices[i] = null;
                        } else {
                            final Object vId = vertexMappedIdMap.get(vertexIds[i]);
                            edgeEndVertices[i] = vId != null ? graph.getVertex(vId) : null;
                        }
                        if (null == edgeEndVertices[i]) {
                            edgeEndVertices[i] = graph.addVertex(vertexLabel);
                            if (vertexIdKey != null) {
                                mapId(vertexMappedIdMap, vertexIds[i], (ORID) edgeEndVertices[i].getId());
                            }
                            bufferCounter++;
                            importedVertices++;
                            printStatus(reader, importedVertices, importedEdges);
                        }
                    }
                    inEdge = true;
                    vertexLabel = null;
                    edgeProps = new HashMap<String, Object>();
                } else if (elementName.equals(GraphMLTokens.DATA)) {
                    String key = reader.getAttributeValue(null, GraphMLTokens.KEY);
                    String attributeName = keyIdMap.get(key);
                    if (attributeName == null)
                        attributeName = key;
                    String value = reader.getElementText();
                    if (inVertex) {
                        if ((vertexIdKey != null) && (key.equals(vertexIdKey))) {
                            // Should occur at most once per Vertex
                            vertexId = value;
                        } else if (attributeName.equalsIgnoreCase(LABELS)) {
                        // IGNORE LABELS
                        } else {
                            final Object attrValue = typeCastValue(key, value, keyTypesMaps);
                            final OGraphMLImportStrategy strategy = vertexPropsStrategy.get(attributeName);
                            if (strategy != null) {
                                attributeName = strategy.transformAttribute(attributeName, attrValue);
                            }
                            if (attributeName != null)
                                vertexProps.put(attributeName, attrValue);
                        }
                    } else if (inEdge) {
                        if ((edgeLabelKey != null) && (key.equals(edgeLabelKey)))
                            edgeLabel = value;
                        else if ((edgeIdKey != null) && (key.equals(edgeIdKey)))
                            edgeId = value;
                        else {
                            final Object attrValue = typeCastValue(key, value, keyTypesMaps);
                            final OGraphMLImportStrategy strategy = edgePropsStrategy.get(attributeName);
                            if (strategy != null) {
                                attributeName = strategy.transformAttribute(attributeName, attrValue);
                            }
                            if (attributeName != null)
                                edgeProps.put(attributeName, attrValue);
                        }
                    }
                }
            } else if (eventType.equals(XMLEvent.END_ELEMENT)) {
                String elementName = reader.getName().getLocalPart();
                if (elementName.equals(GraphMLTokens.NODE)) {
                    ORID currentVertex = null;
                    if (vertexIdKey != null)
                        currentVertex = vertexMappedIdMap.get(vertexId);
                    if (currentVertex == null) {
                        final OrientVertex v = graph.addVertex(vertexLabel, vertexProps);
                        if (vertexIdKey != null)
                            mapId(vertexMappedIdMap, vertexId, v.getIdentity());
                        bufferCounter++;
                        importedVertices++;
                        printStatus(reader, importedVertices, importedEdges);
                    } else {
                        // UPDATE IT
                        final OrientVertex v = graph.getVertex(currentVertex);
                        v.setProperties(vertexProps);
                    }
                    vertexId = null;
                    vertexLabel = null;
                    vertexProps = null;
                    inVertex = false;
                } else if (elementName.equals(GraphMLTokens.EDGE)) {
                    Edge currentEdge = ((OrientVertex) edgeEndVertices[0]).addEdge(null, (OrientVertex) edgeEndVertices[1], edgeLabel, null, edgeProps);
                    bufferCounter++;
                    importedEdges++;
                    printStatus(reader, importedVertices, importedEdges);
                    edgeId = null;
                    edgeLabel = null;
                    edgeEndVertices = null;
                    edgeProps = null;
                    inEdge = false;
                }
            }
            if (bufferCounter > bufferSize) {
                graph.commit();
                bufferCounter = 0;
            }
        }
        reader.close();
        graph.commit();
    } catch (Exception xse) {
        throw OException.wrapException(new ODatabaseImportException("Error on importing GraphML"), xse);
    }
    return this;
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex) XMLStreamReader(javax.xml.stream.XMLStreamReader) HashMap(java.util.HashMap) ODatabaseImportException(com.orientechnologies.orient.core.db.tool.ODatabaseImportException) OrientVertex(com.tinkerpop.blueprints.impls.orient.OrientVertex) OrientBaseGraph(com.tinkerpop.blueprints.impls.orient.OrientBaseGraph) ODatabaseImportException(com.orientechnologies.orient.core.db.tool.ODatabaseImportException) OException(com.orientechnologies.common.exception.OException) IOException(java.io.IOException) ORID(com.orientechnologies.orient.core.id.ORID) Edge(com.tinkerpop.blueprints.Edge) XMLInputFactory(javax.xml.stream.XMLInputFactory)

Example 24 with Vertex

use of com.tinkerpop.blueprints.Vertex in project orientdb by orientechnologies.

the class OFlowTransformerTest method testSkipOnCondition.

@Test
public void testSkipOnCondition() {
    process("{source: { content: { value: 'name,surname\nJay,Miner\nSkipMe,Test' } }, extractor : { csv: {} }," + " transformers: [{vertex: {class:'V'}}, " + "{flow:{operation:'skip',if: 'name <> \'Jay\''}}," + "{field:{fieldName:'name', value:'3'}}" + "], loader: { orientdb: { dbURL: 'memory:OETLBaseTest', dbType:'graph' } } }");
    assertEquals(1, graph.countVertices("V"));
    Iterator<Vertex> it = graph.getVertices().iterator();
    Vertex v1 = it.next();
    Object value1 = v1.getProperty("name");
    assertEquals("3", value1);
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) OETLBaseTest(com.orientechnologies.orient.etl.OETLBaseTest) Test(org.junit.Test)

Example 25 with Vertex

use of com.tinkerpop.blueprints.Vertex in project orientdb by orientechnologies.

the class OMergeTransformerTest method shouldMergeVertexOnDuplitcatedInputSet.

@Test
public void shouldMergeVertexOnDuplitcatedInputSet() throws Exception {
    //CSV contains duplicated data
    process("{source: { content: { value: 'num,name\n10000,FirstName\n10001,SecondName\n10000,FirstNameUpdated' } }, extractor : { csv: {} }," + " transformers: [{merge: { joinFieldName:'num', lookup:'Person.num'}}, {vertex: {class:'Person', skipDuplicates: true}}]," + " " + "loader: { orientdb: { dbURL: 'memory:OETLBaseTest', dbType:'graph', useLightweightEdges:false } } }");
    assertThat(graph.countVertices("Person")).isEqualTo(2);
    final Iterable<Vertex> vertices = graph.getVertices("Person.num", "10000");
    assertThat(vertices).hasSize(1);
    final Vertex updated = vertices.iterator().next();
    assertThat(updated.getProperty("name")).isEqualTo("FirstNameUpdated");
}
Also used : Vertex(com.tinkerpop.blueprints.Vertex) OETLBaseTest(com.orientechnologies.orient.etl.OETLBaseTest) Test(org.junit.Test)

Aggregations

Vertex (com.tinkerpop.blueprints.Vertex)406 Test (org.junit.Test)119 Edge (com.tinkerpop.blueprints.Edge)111 Graph (com.tinkerpop.blueprints.Graph)85 TinkerGraph (com.tinkerpop.blueprints.impls.tg.TinkerGraph)84 JSONObject (org.codehaus.jettison.json.JSONObject)51 HashSet (java.util.HashSet)49 ArrayList (java.util.ArrayList)40 OrientVertex (com.tinkerpop.blueprints.impls.orient.OrientVertex)37 GremlinPipeline (com.tinkerpop.gremlin.java.GremlinPipeline)28 HashMap (java.util.HashMap)25 OrientGraph (com.tinkerpop.blueprints.impls.orient.OrientGraph)22 JSONArray (org.codehaus.jettison.json.JSONArray)20 OCommandSQL (com.orientechnologies.orient.core.sql.OCommandSQL)19 Test (org.testng.annotations.Test)16 KeyIndexableGraph (com.tinkerpop.blueprints.KeyIndexableGraph)15 Map (java.util.Map)15 ODocument (com.orientechnologies.orient.core.record.impl.ODocument)14 OrientBaseGraph (com.tinkerpop.blueprints.impls.orient.OrientBaseGraph)13 OSQLSynchQuery (com.orientechnologies.orient.core.sql.query.OSQLSynchQuery)11