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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
Aggregations