Package org.neo4j.cypher.javacompat

Examples of org.neo4j.cypher.javacompat.ExecutionEngine


  private Map<AssociationKeyMetadata, Neo4jAssociationQueries> associationQueries;

  private final ExecutionEngine executionEngine;

  public Neo4jDialect(Neo4jDatastoreProvider provider) {
    this.executionEngine = new ExecutionEngine( provider.getDataBase(), StringLogger.SYSTEM_DEBUG );
    this.neo4jSequenceGenerator = provider.getSequenceGenerator();
  }
View Full Code Here


public class CypherCRUD {

  private final ExecutionEngine engine;

  public CypherCRUD(GraphDatabaseService graphDb) {
    this.engine = new ExecutionEngine( graphDb );
  }
View Full Code Here

    @Test
    public void shouldGenerateNodesAndRelationshipsCorrectlyForVertexProperties() {
        // todo: review this feature check - this test does a lot of stuff - maybe losing some important assertions this way
        if (g.features().vertex().supportsMultiProperties()) {
            g.tx().readWrite();
            ExecutionEngine cypher = Neo4jHelper.getCypher(g);
            Neo4jVertex a = (Neo4jVertex) g.addVertex("name", "marko", "name", "okram");
            Neo4jVertex b = (Neo4jVertex) g.addVertex("name", "stephen", "location", "virginia");

            tryCommit(g, g -> {
                assertEquals(2, g.V().count().next().intValue());
                assertEquals(2, a.properties("name").count().next().intValue());
                assertEquals(1, b.properties("name").count().next().intValue());
                assertEquals(1, b.properties("location").count().next().intValue());
                assertEquals(0, g.E().count().next().intValue());

                assertEquals(4l, cypher.execute("MATCH n RETURN COUNT(n)").iterator().next().get("COUNT(n)"));
                assertEquals(2l, cypher.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                assertEquals(2l, cypher.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                final AtomicInteger counter = new AtomicInteger(0);
                a.getBaseVertex().getRelationships(Direction.OUTGOING).forEach(relationship -> {
                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.getType().name());
                    counter.incrementAndGet();
                });
                assertEquals(2, counter.getAndSet(0));
                cypher.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)").forEach(results -> {
                    assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                    counter.incrementAndGet();
                });
                assertEquals(2, counter.getAndSet(0));
                StreamFactory.stream(a.getBaseVertex().getRelationships(Direction.OUTGOING)).map(Relationship::getEndNode).forEach(node -> {
                    assertEquals(2, StreamFactory.stream(node.getPropertyKeys()).count());
                    assertEquals("name", node.getProperty(T.key.getAccessor()));
                    assertTrue("marko".equals(node.getProperty(T.value.getAccessor())) || "okram".equals(node.getProperty(T.value.getAccessor())));
                    assertEquals(0, node.getDegree(Direction.OUTGOING));
                    assertEquals(1, node.getDegree(Direction.INCOMING));
                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.getRelationships(Direction.INCOMING).iterator().next().getType().name());
                    counter.incrementAndGet();
                });
                assertEquals(2, counter.getAndSet(0));

                assertEquals(2, StreamFactory.stream(b.getBaseVertex().getPropertyKeys()).count());
                assertEquals("stephen", b.getBaseVertex().getProperty("name"));
                assertEquals("virginia", b.getBaseVertex().getProperty("location"));
            });

            a.singleProperty("name", "the marko");
            tryCommit(g, g -> {
                assertEquals(2, g.V().count().next().intValue());
                assertEquals(1, a.properties().count().next().intValue());
                assertEquals(1, b.properties("name").count().next().intValue());
                assertEquals(1, b.properties("location").count().next().intValue());
                assertEquals(0, g.E().count().next().intValue());

                assertEquals(2l, cypher.execute("MATCH n RETURN COUNT(n)").iterator().next().get("COUNT(n)"));
                assertEquals(0l, cypher.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)").iterator().next().get("COUNT(r)"));

                assertEquals(1, StreamFactory.stream(a.getBaseVertex().getPropertyKeys()).count());
                assertEquals("the marko", a.getBaseVertex().getProperty("name"));
                assertEquals(2, StreamFactory.stream(b.getBaseVertex().getPropertyKeys()).count());
                assertEquals("stephen", b.getBaseVertex().getProperty("name"));
                assertEquals("virginia", b.getBaseVertex().getProperty("location"));
            });

            a.property("name").remove();
            tryCommit(g, g -> {
                assertEquals(2, g.V().count().next().intValue());
                assertEquals(0, a.properties().count().next().intValue());
                assertEquals(2, b.properties().count().next().intValue());
                assertEquals(0, g.E().count().next().intValue());
                assertEquals(2l, cypher.execute("MATCH n RETURN COUNT(n)").iterator().next().get("COUNT(n)"));
                assertEquals(0l, cypher.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                assertEquals(0, StreamFactory.stream(a.getBaseVertex().getPropertyKeys()).count());
                assertEquals(2, StreamFactory.stream(b.getBaseVertex().getPropertyKeys()).count());
            });

            a.singleProperty("name", "the marko", "acl", "private");
            tryCommit(g, g -> {
                assertEquals(2, g.V().count().next().intValue());
                assertEquals(1, a.properties("name").count().next().intValue());
                assertEquals(1, b.properties("name").count().next().intValue());
                assertEquals(1, b.properties("location").count().next().intValue());
                assertEquals(0, g.E().count().next().intValue());

                assertEquals(3l, cypher.execute("MATCH n RETURN COUNT(n)").iterator().next().get("COUNT(n)"));
                assertEquals(1l, cypher.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                assertEquals(1l, cypher.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                final AtomicInteger counter = new AtomicInteger(0);
                a.getBaseVertex().getRelationships(Direction.OUTGOING).forEach(relationship -> {
                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.getType().name());
                    counter.incrementAndGet();
                });
                assertEquals(1, counter.getAndSet(0));
                cypher.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)").forEach(results -> {
                    assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                    counter.incrementAndGet();
                });
                assertEquals(1, counter.getAndSet(0));
                StreamFactory.stream(a.getBaseVertex().getRelationships(Direction.OUTGOING)).map(Relationship::getEndNode).forEach(node -> {
                    assertEquals(3, StreamFactory.stream(node.getPropertyKeys()).count());
                    assertEquals("name", node.getProperty(T.key.getAccessor()));
                    assertEquals("the marko", node.getProperty(T.value.getAccessor()));
                    assertEquals("private", node.getProperty("acl"));
                    assertEquals(0, node.getDegree(Direction.OUTGOING));
                    assertEquals(1, node.getDegree(Direction.INCOMING));
                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), node.getRelationships(Direction.INCOMING).iterator().next().getType().name());
                    counter.incrementAndGet();
                });
                assertEquals(1, counter.getAndSet(0));

                assertEquals(1, StreamFactory.stream(a.getBaseVertex().getPropertyKeys()).count());
                assertTrue(a.getBaseVertex().hasProperty("name"));
                assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_TOKEN, a.getBaseVertex().getProperty("name"));
                assertEquals(2, StreamFactory.stream(b.getBaseVertex().getPropertyKeys()).count());
                assertEquals("stephen", b.getBaseVertex().getProperty("name"));
                assertEquals("virginia", b.getBaseVertex().getProperty("location"));
            });

            a.property("name", "marko", "acl", "private");
            a.property("name", "okram", "acl", "public");
            // TODO tx.commit() THIS IS REQUIRED: ?! Why does Neo4j not delete vertices correctly?
            g.tx().commit();
            a.singleProperty("name", "the marko", "acl", "private");
            tryCommit(g, g -> {
                assertEquals(2, g.V().count().next().intValue());
                assertEquals(1, a.properties("name").count().next().intValue());
                assertEquals(1, b.properties("name").count().next().intValue());
                assertEquals(1, b.properties("location").count().next().intValue());
                assertEquals(0, g.E().count().next().intValue());

                assertEquals(3l, cypher.execute("MATCH n RETURN COUNT(n)").iterator().next().get("COUNT(n)"));
                assertEquals(1l, cypher.execute("MATCH (n)-[r]->(m) RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                assertEquals(1l, cypher.execute("MATCH (a)-[r]->() WHERE id(a) = " + a.id() + " RETURN COUNT(r)").iterator().next().get("COUNT(r)"));
                final AtomicInteger counter = new AtomicInteger(0);
                a.getBaseVertex().getRelationships(Direction.OUTGOING).forEach(relationship -> {
                    assertEquals(Neo4jVertexProperty.VERTEX_PROPERTY_PREFIX.concat("name"), relationship.getType().name());
                    counter.incrementAndGet();
                });
                assertEquals(1, counter.getAndSet(0));
                cypher.execute("MATCH (a)-[]->(m) WHERE id(a) = " + a.id() + " RETURN labels(m)").forEach(results -> {
                    assertEquals(VertexProperty.DEFAULT_LABEL, ((List<String>) results.get("labels(m)")).get(0));
                    counter.incrementAndGet();
                });
                assertEquals(1, counter.getAndSet(0));
                StreamFactory.stream(a.getBaseVertex().getRelationships(Direction.OUTGOING)).map(Relationship::getEndNode).forEach(node -> {
View Full Code Here

    }

    public Neo4jCypherStep(final Traversal traversal, final String query, final Map<String, Object> parameters) {
        super(traversal);
        final Neo4jGraph graph = (Neo4jGraph) traversal.sideEffects().getGraph();
        final ExecutionEngine cypher = Neo4jHelper.getCypher(graph);
        this.setFunction(traverser -> {
            final S s = traverser.get();
            parameters.put(START, s);
            final ExecutionResult result = cypher.execute(query, parameters);
            final ResourceIterator<Map<String, Object>> itty = result.iterator();
            return itty.hasNext() ? new Neo4jCypherIterator(itty, graph) : Collections.emptyIterator();
        });
    }
View Full Code Here

    private Neo4jGraph(final GraphDatabaseService baseGraph) {
        this.configuration.copy(EMPTY_CONFIGURATION);
        this.baseGraph = baseGraph;
        this.transactionManager = ((GraphDatabaseAPI) baseGraph).getDependencyResolver().resolveDependency(TransactionManager.class);
        this.cypher = new ExecutionEngine(this.baseGraph);
        this.neo4jGraphVariables = new Neo4jGraphVariables(this);

        ///////////
        final Optional<Boolean> metaProperties = this.neo4jGraphVariables.get(Graph.System.system(CONFIG_META_PROPERTIES));
        if (metaProperties.isPresent()) {
View Full Code Here

            this.baseGraph = ha ?
                    new HighlyAvailableGraphDatabaseFactory().newHighlyAvailableDatabaseBuilder(directory).setConfig(neo4jSpecificConfig).newGraphDatabase() :
                    new GraphDatabaseFactory().newEmbeddedDatabaseBuilder(directory).
                            setConfig(neo4jSpecificConfig).newGraphDatabase();
            this.transactionManager = ((GraphDatabaseAPI) this.baseGraph).getDependencyResolver().resolveDependency(TransactionManager.class);
            this.cypher = new ExecutionEngine(this.baseGraph);
            this.neo4jGraphVariables = new Neo4jGraphVariables(this);
            ///////////
            if (!this.neo4jGraphVariables.get(Graph.System.system(CONFIG_META_PROPERTIES)).isPresent())
                this.neo4jGraphVariables.set(Graph.System.system(CONFIG_META_PROPERTIES), this.configuration.getBoolean(CONFIG_META_PROPERTIES, false));
            // TODO: Logger saying the configuration properties are ignored if already in Graph.Variables
View Full Code Here

        return getReferenceNode(db, "rtree");
    }

    public static Node getReferenceNode(GraphDatabaseService db, String name) {
        if (engine == null || db != dbRef) {
            engine = new ExecutionEngine(db);
            ReferenceNodes.dbRef = db;
        }
        ExecutionResult result = engine.execute("MERGE (ref:ReferenceNode {name:{name}}) RETURN ref", map("name", name));
        return IteratorUtil.single(result.<Node>columnAs("ref"));
    }
View Full Code Here

        IndexHits<Node> hits = index.get("timestamp", 123L);
        assertEquals(2, hits.size());
        hits = index.query("[122 TO 125]");
        assertEquals(3, hits.size());

        ExecutionEngine engine = new ExecutionEngine(db);
        ExecutionResult result = engine.execute("start n=node:timeline1('[100 TO 200]') return n");
        System.out.println(result.toString());
        tx.success();
        tx.finish();
    }
View Full Code Here

    public Neo4j2Graph(final GraphDatabaseService rawGraph) {
        this.rawGraph = rawGraph;

        transactionManager = ((GraphDatabaseAPI) rawGraph).getDependencyResolver().resolveDependency(TransactionManager.class);

        cypher = new ExecutionEngine(rawGraph);
        init();
    }
View Full Code Here

                this.rawGraph = builder.setConfig(configuration).newGraphDatabase();
            else
                this.rawGraph = builder.newGraphDatabase();

            transactionManager = ((GraphDatabaseAPI) rawGraph).getDependencyResolver().resolveDependency(TransactionManager.class);
            cypher = new ExecutionEngine(rawGraph);

            init();

        } catch (Exception e) {
            if (this.rawGraph != null)
View Full Code Here

TOP

Related Classes of org.neo4j.cypher.javacompat.ExecutionEngine

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.