static GraphDescription create(Graph graph) { if (graph == null) { return EMPTY; } Map<String, NODE> nodes = new HashMap<String, NODE>(); for (NODE node : graph.nodes()) { if (nodes.put(defined(node.name()), node) != null) { throw new IllegalArgumentException("Node \"" + node.name() + "\" defined more than once"); } } Map<String, REL> rels = new HashMap<String, REL>(); List<REL> relationships = new ArrayList<REL>(); for (REL rel : graph.relationships()) { createIfAbsent(nodes, rel.start()); createIfAbsent(nodes, rel.end()); String name = rel.name(); if (!name.equals("")) { if (rels.put(name, rel) != null) { throw new IllegalArgumentException( "Relationship \"" + name + "\" defined more than once"); } } relationships.add(rel); } parse(graph.value(), nodes, relationships); return new GraphDescription( nodes.values().toArray(NO_NODES), relationships.toArray(NO_RELS), graph.autoIndexNodes(), graph.autoIndexRelationships()); }
@Override public Map<String, Node> create(GraphDatabaseService graphdb) { Map<String, Node> result = new HashMap<String, Node>(); Transaction tx = graphdb.beginTx(); try { graphdb.index().getRelationshipAutoIndexer().setEnabled(autoIndexRelationships); for (NODE def : nodes) { result.put( def.name(), init( graphdb.createNode(), def.setNameProperty() ? def.name() : null, def.properties(), graphdb.index().getNodeAutoIndexer(), autoIndexNodes)); } for (REL def : rels) { init( result .get(def.start()) .createRelationshipTo( result.get(def.end()), DynamicRelationshipType.withName(def.type())), def.setNameProperty() ? def.name() : null, def.properties(), graphdb.index().getRelationshipAutoIndexer(), autoIndexRelationships); } tx.success(); } finally { tx.finish(); } return result; }