Search in sources :

Example 11 with GraphDatabase

use of org.neo4j.android.client.GraphDatabase in project neo4j-mobile-android by neo4j-contrib.

the class RootNodeActivity method updateNodesList.

private void updateNodesList() {
    try {
        referenceNodeLayout.removeAllViews();
        rootNodesLayout.removeAllViews();
        cycleNodesLayout.removeAllViews();
        GraphDatabase database = dbManager.getCurrentNeo4jDatabase();
        database.beginTx();
        try {
            ParcelableNode referenceNode = database.getReferenceNode();
            addNodeListItem(referenceNodeLayout, referenceNode);
            List<ParcelableNode> rootNodes = new ArrayList<ParcelableNode>();
            NodeIterator nodeIterator = database.getAllNodes();
            while (nodeIterator.hasNext()) {
                ParcelableNode node = nodeIterator.next();
                if (!node.hasRelationship(Direction.INCOMING)) {
                    rootNodes.add(node);
                }
            }
            for (ParcelableNode rootNode : rootNodes) {
                addNodeListItem(rootNodesLayout, rootNode);
            }
        // TODO: [eRiC] what happens if all graphs are circular? ->
        // pick
        // one node per graph:
        } finally {
            database.txFinish();
        }
    } catch (Exception e) {
        Ln.e(e, "database exception");
        showErrorDialog();
    }
}
Also used : NodeIterator(org.neo4j.android.client.NodeIterator) GraphDatabase(org.neo4j.android.client.GraphDatabase) ArrayList(java.util.ArrayList) ParcelableNode(org.neo4j.android.common.ParcelableNode) Neo4jServiceException(org.neo4j.android.client.Neo4jServiceException) RemoteException(android.os.RemoteException)

Example 12 with GraphDatabase

use of org.neo4j.android.client.GraphDatabase in project neo4j-mobile-android by neo4j-contrib.

the class RootNodeActivity method retrieveReferenceNodeId.

private void retrieveReferenceNodeId() {
    try {
        GraphDatabase database = dbManager.getCurrentNeo4jDatabase();
        database.beginTx();
        try {
            ParcelableNode referenceNode = database.getReferenceNode();
            referenceNodeId = referenceNode.getId();
        } finally {
            database.txFinish();
        }
    } catch (Exception e) {
        Ln.e(e, "database exception");
        showErrorDialog();
    }
}
Also used : GraphDatabase(org.neo4j.android.client.GraphDatabase) ParcelableNode(org.neo4j.android.common.ParcelableNode) Neo4jServiceException(org.neo4j.android.client.Neo4jServiceException) RemoteException(android.os.RemoteException)

Example 13 with GraphDatabase

use of org.neo4j.android.client.GraphDatabase in project neo4j-mobile-android by neo4j-contrib.

the class RootNodeActivity method createNode.

private void createNode(boolean createDefaultRelationship) throws RemoteException, Neo4jServiceException {
    GraphDatabase database = dbManager.getCurrentNeo4jDatabase();
    database.beginTx();
    try {
        ParcelableNode node = new ParcelableNode();
        long nodeId = database.createNode(node);
        Ln.i("created node '" + node + "' with id '" + nodeId + "'");
        if (createDefaultRelationship) {
            ParcelableRelationship relationship = new ParcelableRelationship();
            relationship.setStartNodeId(referenceNodeId);
            relationship.setEndNodeId(nodeId);
            relationship.setName(defaultRelationshipName);
            long relationshipId = database.createRelationship(relationship);
            Ln.i("created relationship '" + relationship + "' with id '" + relationshipId + "'");
        }
        database.txSuccess();
    } finally {
        database.txFinish();
    }
}
Also used : GraphDatabase(org.neo4j.android.client.GraphDatabase) ParcelableRelationship(org.neo4j.android.common.ParcelableRelationship) ParcelableNode(org.neo4j.android.common.ParcelableNode)

Example 14 with GraphDatabase

use of org.neo4j.android.client.GraphDatabase in project neo4j-mobile-android by neo4j-contrib.

the class NodeActivity method updateNodesList.

private void updateNodesList() {
    try {
        nodeRelationshipsLayout.removeAllViews();
        GraphDatabase database = dbManager.getCurrentNeo4jDatabase();
        database.beginTx();
        try {
            ParcelableNode centerNode = database.getNodeById(centerNodeId);
            List<ParcelableRelationship> relationships = centerNode.getRelationships();
            final Set<Long> pointingToCenterNodeNodeIds = new TreeSet<Long>();
            Set<ParcelableNode> peerNodes = new TreeSet<ParcelableNode>(new Comparator<ParcelableNode>() {

                @Override
                public int compare(ParcelableNode firstNode, ParcelableNode secondNode) {
                    if (firstNode.getId() < secondNode.getId()) {
                        return -1;
                    } else if (firstNode.getId() > secondNode.getId()) {
                        return 1;
                    } else {
                        return 0;
                    }
                }
            });
            int loopRelationshipsCount = 0;
            String lastLoopRelationshipName = "";
            for (ParcelableRelationship relationship : relationships) {
                if (relationship.getStartNodeId() == relationship.getEndNodeId()) {
                    loopRelationshipsCount++;
                    lastLoopRelationshipName = relationship.getName();
                } else {
                    if (centerNodeId == relationship.getStartNodeId()) {
                        peerNodes.add(database.getNodeById(relationship.getEndNodeId()));
                    } else {
                        pointingToCenterNodeNodeIds.add(relationship.getStartNodeId());
                        peerNodes.add(database.getNodeById(relationship.getStartNodeId()));
                    }
                }
            }
            nodeCenterButton.setText("" + centerNodeId);
            nodeCenterButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    if (pointingToCenterNodeNodeIds.isEmpty()) {
                    // do nothing.
                    } else if (pointingToCenterNodeNodeIds.size() == 1) {
                        showNodeActivity(pointingToCenterNodeNodeIds.iterator().next(), true);
                    } else {
                        showRelatedStartNodes(pointingToCenterNodeNodeIds);
                    }
                }
            });
            String text = getResources().getString(R.string.node_relationships_loop_button);
            if (loopRelationshipsCount == 0) {
                nodeLoopRelationshipsButton.setText(text);
            } else if (loopRelationshipsCount == 1) {
                nodeLoopRelationshipsButton.setText(text + "\n" + lastLoopRelationshipName);
            } else {
                nodeLoopRelationshipsButton.setText(text + "\n# " + loopRelationshipsCount);
            }
            nodeLoopRelationshipsButton.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    showRelationshipActivity(centerNodeId, centerNodeId);
                }
            });
            for (ParcelableNode peerNode : peerNodes) {
                addNodeRelationshipsListItem(peerNode);
            }
        } finally {
            database.txFinish();
        }
    } catch (Exception e) {
        Ln.e(e, "database exception");
        showErrorDialog();
    }
}
Also used : GraphDatabase(org.neo4j.android.client.GraphDatabase) ParcelableNode(org.neo4j.android.common.ParcelableNode) ContentView(roboguice.inject.ContentView) View(android.view.View) InjectView(roboguice.inject.InjectView) Neo4jServiceException(org.neo4j.android.client.Neo4jServiceException) RemoteException(android.os.RemoteException) TreeSet(java.util.TreeSet) ParcelableRelationship(org.neo4j.android.common.ParcelableRelationship)

Example 15 with GraphDatabase

use of org.neo4j.android.client.GraphDatabase in project neo4j-mobile-android by neo4j-contrib.

the class NodePropertiesActivity method createProperty.

private void createProperty(String key, String value) {
    try {
        GraphDatabase database = dbManager.getCurrentNeo4jDatabase();
        database.beginTx();
        try {
            ParcelableNode node = database.getNodeById(nodeId);
            if (!node.hasProperty(key)) {
                node.setProperty(key, value);
                database.updateNode(node);
                database.txSuccess();
            } else {
                showPropertyAlreadyExistsError(key, value);
            }
        } finally {
            database.txFinish();
        }
    } catch (Exception e) {
        Ln.e(e, "failed to create new property with key '" + key + "' and value '" + value + "' on node with id '" + nodeId + "'.");
        showErrorDialog();
    }
    updateNodePropertiesList();
}
Also used : GraphDatabase(org.neo4j.android.client.GraphDatabase) ParcelableNode(org.neo4j.android.common.ParcelableNode)

Aggregations

GraphDatabase (org.neo4j.android.client.GraphDatabase)18 ParcelableNode (org.neo4j.android.common.ParcelableNode)12 ParcelableRelationship (org.neo4j.android.common.ParcelableRelationship)11 AlertDialog (android.app.AlertDialog)6 DialogInterface (android.content.DialogInterface)6 RemoteException (android.os.RemoteException)4 View (android.view.View)4 Formatter (java.util.Formatter)4 Neo4jServiceException (org.neo4j.android.client.Neo4jServiceException)4 ContentView (roboguice.inject.ContentView)4 InjectView (roboguice.inject.InjectView)4 TextView (android.widget.TextView)3 ArrayList (java.util.ArrayList)3 Intent (android.content.Intent)2 EditText (android.widget.EditText)2 NodeIterator (org.neo4j.android.client.NodeIterator)2 Button (android.widget.Button)1 ImageButton (android.widget.ImageButton)1 List (java.util.List)1 TreeSet (java.util.TreeSet)1