Package org.neo4j.smack.test.util

Source Code of org.neo4j.smack.test.util.ServerHelper

package org.neo4j.smack.test.util;

import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.smack.Neo4jServer;
import org.neo4j.smack.Smack;
import org.neo4j.test.ImpermanentGraphDatabase;
import org.neo4j.tooling.GlobalGraphOperations;

public class ServerHelper {

    public static final String HOST = "localhost";
    public static final int PORT = 7473;

    public static Neo4jServer createServer() {
        return new Neo4jServer(HOST, PORT, new ImpermanentGraphDatabase());
    }
   
    public static void cleanTheDatabase(final Neo4jServer server) {
        new Transactor( server.getSmackServer().getDatabase(), new UnitOfWork()
        {
            @Override
            public void doWork()
            {
                deleteAllNodesAndRelationships( server.getSmackServer() );

                deleteAllIndexes( server.getSmackServer() );
            }

            private void deleteAllNodesAndRelationships( final Smack server )
            {
                Iterable<Node> allNodes = GlobalGraphOperations.at( server.getDatabase() ).getAllNodes();
                for ( Node n : allNodes )
                {
                    Iterable<Relationship> relationships = n.getRelationships();
                    for ( Relationship rel : relationships )
                    {
                        rel.delete();
                    }
                    if ( n.getId() != 0 )
                    { // Don't delete the reference node - tests depend on it
                      // :-(
                        n.delete();
                    }
                    else
                    { // Remove all state from the reference node instead
                        for ( String key : n.getPropertyKeys() )
                        {
                            n.removeProperty( key );
                        }
                    }
                }
            }

            private void deleteAllIndexes( final Smack server )
            {
                for ( String indexName : server.getDatabase().index()
                        .nodeIndexNames() )
                {
                    try{
                        server.getDatabase().index()
                                .forNodes( indexName )
                                .delete();
                    } catch(UnsupportedOperationException e) {
                        // Encountered a read-only index.
                    }
                }

                for ( String indexName : server.getDatabase().index()
                        .relationshipIndexNames() )
                {
                    try {
                        server.getDatabase().index()
                                .forRelationships( indexName )
                                .delete();
                    } catch(UnsupportedOperationException e) {
                        // Encountered a read-only index.
                    }
                }
            }
        } ).execute();
    }
}
TOP

Related Classes of org.neo4j.smack.test.util.ServerHelper

TOP
Copyright © 2018 www.massapi.com. 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.