Search in sources :

Example 6 with Folder

use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.

the class LifecycleTest method shouldNotSaveObjectUpdatedByPreDeleteEventHandler.

@Test
public void shouldNotSaveObjectUpdatedByPreDeleteEventHandler() {
    // not interested in the default one for this suite
    session.dispose(eventListener);
    session.register(uuidEventListener);
    Folder f = new Folder();
    Document d = new Document();
    f.setName("folder");
    d.setFolder(f);
    f.getDocuments().add(d);
    assertThat(f.getUuid()).isNull();
    session.save(f);
    assertThat(f.getUuid()).isNotNull();
    // 
    assertThat(((Neo4jSession) session).context().isDirty(f)).isFalse();
    session.delete(d);
    assertThat(f.getName()).isEqualTo("updated by pre-delete");
    assertThat(((Neo4jSession) session).context().isDirty(f)).isTrue();
    session.clear();
    Folder f2 = session.load(Folder.class, f.getId());
    assertThat(f2.getDocuments().isEmpty()).isTrue();
    assertThat(f2.getName()).isEqualTo("folder");
}
Also used : Folder(org.neo4j.ogm.domain.filesystem.Folder) Document(org.neo4j.ogm.domain.filesystem.Document) Test(org.junit.Test)

Example 7 with Folder

use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.

the class StaleObjectTest method init.

@Before
public void init() throws IOException {
    SessionFactory sessionFactory = new SessionFactory(getDriver(), "org.neo4j.ogm.domain.filesystem");
    session = sessionFactory.openSession();
    session.purgeDatabase();
    a = new Document();
    a.setName("a");
    b = new Document();
    b.setName("b");
    f = new Folder();
    f.setName("f");
    f.getDocuments().add(a);
    f.getDocuments().add(b);
    a.setFolder(f);
    b.setFolder(f);
    session.save(f);
    assertThat(a.toString()).isEqualTo("Document{folder=Folder{name='f', documents=2, archived=0}, name='a'}");
    assertThat(b.toString()).isEqualTo("Document{folder=Folder{name='f', documents=2, archived=0}, name='b'}");
}
Also used : SessionFactory(org.neo4j.ogm.session.SessionFactory) Document(org.neo4j.ogm.domain.filesystem.Document) Folder(org.neo4j.ogm.domain.filesystem.Folder) Before(org.junit.Before)

Example 8 with Folder

use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.

the class StaleObjectTest method testSaveDegenerateDocument.

@Test
public void testSaveDegenerateDocument() {
    // note that we don't clear the current folder object.
    a.setFolder(null);
    session.save(a);
    Folder p = session.load(Folder.class, f.getId());
    assertThat(p.toString()).isEqualTo("Folder{name='f', documents=1, archived=0}");
    // the document object loaded into the session by virtue of reloading f is no longer b. we guarantee to fetch the latest version of all reachable objects
    // and we overwrite objects in the mapping context.
    // directly after a save all objects in the save tree are guaranteed to not be dirty
    // directly after a load, all objects in the load tree are guaranteed to not be dirty
    assertThat(p.getDocuments().iterator().next() == b).isFalse();
    assertThat(a.toString()).isEqualTo("Document{folder=null, name='a'}");
    assertThat(b.toString()).isEqualTo(// b is attached to f, which hasn't been saved or reloaded, so is unchanged
    "Document{folder=Folder{name='f', documents=2, archived=0}, name='b'}");
    assertThat(p.getDocuments().iterator().next().toString()).isEqualTo("Document{folder=Folder{name='f', documents=1, archived=0}, name='b'}");
}
Also used : Folder(org.neo4j.ogm.domain.filesystem.Folder) Test(org.junit.Test)

Example 9 with Folder

use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.

the class DegenerateEntityModelTests method testSaveDegenerateFolderClone.

@Test
public void testSaveDegenerateFolderClone() {
    Folder clone = new Folder();
    clone.setId(f.getId());
    clone.setName(f.getName());
    clone.setDocuments(new HashSet<>());
    session.save(clone);
    session.clear();
    assertThat(session.query("MATCH (f:Folder { name: 'f' } ), " + "(a:Document { name: 'a' } ), " + "(b:Document { name: 'b' } ) return f", emptyMap()).queryResults()).hasSize(1);
}
Also used : Folder(org.neo4j.ogm.domain.filesystem.Folder) Test(org.junit.Test)

Example 10 with Folder

use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.

the class DirectRelationshipsTest method shouldBeAbleToCreateDifferentRelationshipsToTheSameDocument.

@Test
public void shouldBeAbleToCreateDifferentRelationshipsToTheSameDocument() {
    Folder folder = new Folder();
    Document document = new Document();
    document.setFolder(folder);
    folder.getDocuments().add(document);
    folder.getArchived().add(document);
    // save folder
    Compiler compiler = mapper.map(folder).getCompiler();
    compiler.useStatementFactory(new RowStatementFactory());
    List<Statement> statements = compiler.createNodesStatements();
    List<String> createNodeStatements = cypherStatements(statements);
    assertThat(createNodeStatements).hasSize(2);
    assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Folder`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
    assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Document`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
    for (Statement statement : statements) {
        List rows = (List) statement.getParameters().get("rows");
        assertThat(rows).hasSize(1);
    }
    statements = compiler.createRelationshipsStatements();
    List<String> createRelStatements = cypherStatements(statements);
    assertThat(createRelStatements).hasSize(2);
    assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`CONTAINS`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
    assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`ARCHIVED`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
    boolean archivedType = false;
    boolean containsType = false;
    for (Statement statement : statements) {
        if (statement.getStatement().contains("ARCHIVED")) {
            archivedType = true;
        }
        if (statement.getStatement().contains("CONTAINS")) {
            containsType = true;
        }
    }
    assertThat(archivedType).isTrue();
    assertThat(containsType).isTrue();
    // save document
    compiler = mapper.map(document).getCompiler();
    compiler.useStatementFactory(new RowStatementFactory());
    statements = compiler.createNodesStatements();
    createNodeStatements = cypherStatements(statements);
    assertThat(createNodeStatements).hasSize(2);
    assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Folder`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
    assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Document`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
    statements = compiler.createRelationshipsStatements();
    createRelStatements = cypherStatements(statements);
    assertThat(createRelStatements).hasSize(2);
    assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`CONTAINS`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
    assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`ARCHIVED`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
    archivedType = false;
    containsType = false;
    for (Statement statement : statements) {
        if (statement.getStatement().contains("ARCHIVED")) {
            archivedType = true;
        }
        if (statement.getStatement().contains("CONTAINS")) {
            containsType = true;
        }
    }
    assertThat(archivedType).isTrue();
    assertThat(containsType).isTrue();
}
Also used : Compiler(org.neo4j.ogm.cypher.compiler.Compiler) Statement(org.neo4j.ogm.request.Statement) RowStatementFactory(org.neo4j.ogm.session.request.RowStatementFactory) ArrayList(java.util.ArrayList) List(java.util.List) Folder(org.neo4j.ogm.domain.filesystem.Folder) Document(org.neo4j.ogm.domain.filesystem.Document) Test(org.junit.Test)

Aggregations

Folder (org.neo4j.ogm.domain.filesystem.Folder)15 Test (org.junit.Test)13 Document (org.neo4j.ogm.domain.filesystem.Document)10 Compiler (org.neo4j.ogm.cypher.compiler.Compiler)7 RowStatementFactory (org.neo4j.ogm.session.request.RowStatementFactory)7 Statement (org.neo4j.ogm.request.Statement)6 ArrayList (java.util.ArrayList)3 List (java.util.List)3 MappedRelationship (org.neo4j.ogm.context.MappedRelationship)3 Before (org.junit.Before)2 Date (java.util.Date)1 EntityGraphMapper (org.neo4j.ogm.context.EntityGraphMapper)1 Actor (org.neo4j.ogm.domain.cineasts.annotated.Actor)1 Knows (org.neo4j.ogm.domain.cineasts.annotated.Knows)1 SessionFactory (org.neo4j.ogm.session.SessionFactory)1