1
votes

I am able to successfully run the Embeddedjava program.but my nodes are not getting reflected when i open the neo4j interface through localhost.For your reference

I made the following changes to my neo4j-server.properties

org.neo4j.server.database.location=C:/neo4j-community-1.9.6/data/graph.db/
org.neo4j.server.webadmin.data.uri=C:/neo4j-community-1.9.6/data/graph.db/

this is the same DB_path that i am using in the code.

Everytime I run the program ,the count on the dashboard increases by 2(i have created 2 nodes in my program).But when i run the query

START root=node(*)
 return count(root)

it gives me the answer as 0.

Also,i noticed that the data/keystore file does not get generated when i run the java program.it gets generated only when i start the interface through localhost:7474.Does this have anything to do ?

Java Code

import java.io.File;
import java.io.IOException;

import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.kernel.impl.util.FileUtils;
import  org.neo4j.kernel.StoreLocker;


public class EmbeddedNeo4j
{
private static final String DB_PATH = "C://neo4j-community-1.9.6//data//graph.db";

public String greeting;

// START SNIPPET: vars
GraphDatabaseService graphDb;
Node firstNode;
Node secondNode;
Relationship relationship;
// END SNIPPET: vars

// START SNIPPET: createReltype
private static enum RelTypes implements RelationshipType
{
    KNOWS
}
// END SNIPPET: createReltype

public static void main( final String[] args )
{
    EmbeddedNeo4j hello = new EmbeddedNeo4j();
    hello.createDb();
    hello.removeData();
    hello.shutDown();
}

    void createDb()
{
   // clearDb();
    // START SNIPPET: startDb
    graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
   // registerShutdownHook( graphDb );
    // END SNIPPET: startDb

    // START SNIPPET: transaction
    Transaction tx=null;
    try
    {
         tx= graphDb.beginTx();
         firstNode = graphDb.createNode();
        firstNode.setProperty( "message", "Hello, " );
        secondNode = graphDb.createNode();
        secondNode.setProperty( "message", "World!" );

        relationship = firstNode.createRelationshipTo( secondNode, RelTypes.KNOWS );
        relationship.setProperty( "message", "brave Neo4j " );
        // END SNIPPET: addData

        // START SNIPPET: readData
        System.out.print( firstNode.getProperty( "message" ) );
        System.out.print( relationship.getProperty( "message" ) );
        System.out.print( secondNode.getProperty( "message" ) );
        // END SNIPPET: readData

        greeting = ( (String) firstNode.getProperty( "message" ) )
                   + ( (String) relationship.getProperty( "message" ) )
                   + ( (String) secondNode.getProperty( "message" ) );
                   tx.success();
    }
    catch(Exception e)
    {
    tx.failure();
    }


    finally
    {
        // Database operations go here
        // END SNIPPET: transaction
        // START SNIPPET: addData


        // START SNIPPET: transaction

        tx.finish();
    }
    // END SNIPPET: transaction
}

   private void clearDb()
   {
    try
    {
        FileUtils.deleteRecursively( new File(DB_PATH) );
    }
    catch ( IOException e )
    {
        throw new RuntimeException( e );
    }
}

void removeData()
{
    Transaction tx=null;
    try 
    {

     tx = graphDb.beginTx() ;
     firstNode.getSingleRelationship( RelTypes.KNOWS, Direction.OUTGOING ).delete();
        firstNode.delete();
        secondNode.delete();
         tx.success();
}
catch(Exception e)
{
tx.failure();
}

finally

    {
        // START SNIPPET: removingData
        // let's remove the data

        // END SNIPPET: removingData


        tx.finish();
    }
}

void shutDown()
{
    System.out.println();
    System.out.println( "Shutting down database ..." );
    // START SNIPPET: shutdownServer
    graphDb.shutdown();
    // END SNIPPET: shutdownServer
}

// START SNIPPET: shutdownHook
private static void registerShutdownHook( final GraphDatabaseService graphDb )
{
    // Registers a shutdown hook for the Neo4j instance so that it
    // shuts down nicely when the VM exits (even if you "Ctrl-C" the
    // running application).
    Runtime.getRuntime().addShutdownHook( new Thread()
    {
        @Override
        public void run()
        {
            graphDb.shutdown();
        }
    } );
}
// END SNIPPET: shutdownHook
 }
2
Can you share your java code?Luanne
Yes.I edited my question and added itLearnerFreak

2 Answers

0
votes
public static void main( final String[] args )
{
    EmbeddedNeo4j hello = new EmbeddedNeo4j();
    hello.createDb();
    hello.removeData();
    hello.shutDown();
}

You are creating DB then calling removeData.

0
votes

If your question is about the webadmin showing you an increase of 2 nodes when the query to count all nodes shows 0, then you should ignore the webadmin node count. It is not truly the number of nodes but sort of the highest node ID in use. The query

START root=node(*)
 return count(root)

will correctly show you the number of nodes. This is 0 which is expected since your java program creates nodes and then deletes them.