package org.openntf.domino.tests.ntf; import java.util.Iterator; import org.openntf.domino.Database; import org.openntf.domino.Session; import org.openntf.domino.graph2.annotations.AdjacencyUnique; import org.openntf.domino.graph2.annotations.IncidenceUnique; import org.openntf.domino.graph2.annotations.TypedProperty; import org.openntf.domino.graph2.builtin.DEdgeFrame; import org.openntf.domino.graph2.builtin.DVertexFrame; import org.openntf.domino.graph2.builtin.identity.Person; import org.openntf.domino.graph2.builtin.social.Comment; import org.openntf.domino.graph2.builtin.social.Commentable; import org.openntf.domino.graph2.builtin.social.Likeable; import org.openntf.domino.graph2.builtin.social.Rateable; import org.openntf.domino.graph2.builtin.social.SocialStore; import org.openntf.domino.graph2.impl.DConfiguration; import org.openntf.domino.graph2.impl.DElementStore; import org.openntf.domino.graph2.impl.DFramedGraphFactory; import org.openntf.domino.graph2.impl.DGraph; import org.openntf.domino.junit.TestRunnerUtil; import org.openntf.domino.utils.Factory; import org.openntf.domino.utils.Factory.SessionType; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Vertex; import com.tinkerpop.frames.FramedTransactionalGraph; import com.tinkerpop.frames.InVertex; import com.tinkerpop.frames.OutVertex; import com.tinkerpop.frames.Property; import com.tinkerpop.frames.modules.javahandler.JavaHandler; import com.tinkerpop.frames.modules.javahandler.JavaHandlerClass; import com.tinkerpop.frames.modules.javahandler.JavaHandlerContext; import com.tinkerpop.frames.modules.typedgraph.TypeValue; @SuppressWarnings("unused") public class Graph2Demo implements Runnable { private long marktime; private DGraph graph; public static String crewId = "graph2/crew.nsf"; public static String movieId = "graph2/movies.nsf"; public static String characterId = "graph2/characters.nsf"; public static String edgeId = "graph2/edges.nsf"; public static String usersId = "graph2/users.nsf"; public static String socialId = "graph2/social.nsf"; public static String nabId = "names.nsf"; public static String ntfUnid = "2F25B5EDE23C245785257A600059FD2E"; //NTF this is my own person document. You may need to change it. private static final String DIRECTEDBY = "DirectedBy"; private static final String APPEARSIN = "AppearsIn"; private static final String PORTRAYS = "Portrays"; private static final String STARRING = "Starring"; private static final String SPAWNS = "Spawns"; private static final String KILLS = "Kills"; @TypeValue("movie") public interface Movie extends Rateable, Commentable, Likeable { @TypedProperty("title") public String getTitle(); @TypedProperty("title") public void setTitle(String title); @IncidenceUnique(label = DIRECTEDBY) public DirectedBy getDirectedBy(); @IncidenceUnique(label = DIRECTEDBY) public DirectedBy addDirectedBy(Crew crew); @IncidenceUnique(label = DIRECTEDBY) public void removeDirectedBy(Crew crew); @AdjacencyUnique(label = DIRECTEDBY) public Crew getDirectedByCrew(); @AdjacencyUnique(label = DIRECTEDBY) public Crew addDirectedByCrew(Crew crew); @IncidenceUnique(label = STARRING) public Iterable<Starring> getStarringInvert(); @IncidenceUnique(label = STARRING, direction = Direction.IN) public Iterable<Starring> getStarring(); @IncidenceUnique(label = STARRING, direction = Direction.IN) public Starring addStarring(Crew crew); @IncidenceUnique(label = STARRING, direction = Direction.IN) public void removeStarring(Crew crew); @AdjacencyUnique(label = STARRING, direction = Direction.IN) public Iterable<Crew> getStarringCrew(); @AdjacencyUnique(label = STARRING, direction = Direction.IN) public Crew addStarringCrew(Crew crew); } @TypeValue(DIRECTEDBY) public interface DirectedBy extends DEdgeFrame { @TypedProperty("rating") public Integer getRating(); @TypedProperty("rating") public void setRating(Integer rating); @OutVertex Crew getDirector(); @InVertex Movie getMovie(); } @TypeValue(STARRING) public interface Starring extends DEdgeFrame { @InVertex Movie getMovie(); @OutVertex Crew getStar(); } @TypeValue(PORTRAYS) public interface Portrays extends DEdgeFrame { @OutVertex Crew getStar(); @InVertex Character getCharacter(); } @TypeValue(APPEARSIN) public interface AppearsIn extends DEdgeFrame { @OutVertex Character getCharacter(); @InVertex Movie getMovie(); } @TypeValue(SPAWNS) public interface Spawns extends DEdgeFrame { @OutVertex Character getParent(); @InVertex Character getSpawn(); } @TypeValue(KILLS) public interface Kills extends DEdgeFrame { @Property("film") public String getFilm(); @Property("film") public void setFilm(String film); @OutVertex Character getKiller(); @InVertex Character getVictim(); } @TypeValue("character") public interface Character extends DVertexFrame { @Property("name") public String getName(); @Property("name") public void setName(String name); @AdjacencyUnique(label = APPEARSIN) public Iterable<Movie> getAppearsInMovies(); @IncidenceUnique(label = APPEARSIN) public Iterable<AppearsIn> getAppearsIn(); @IncidenceUnique(label = APPEARSIN) public AppearsIn addAppearsIn(Movie movie); @IncidenceUnique(label = APPEARSIN) public void removeAppearsIn(AppearsIn appearance); @AdjacencyUnique(label = PORTRAYS, direction = Direction.IN) public Iterable<Crew> getPortrayedByCrew(); @IncidenceUnique(label = PORTRAYS, direction = Direction.IN) public Iterable<Portrays> getPortrayedBy(); @IncidenceUnique(label = PORTRAYS, direction = Direction.IN) public Portrays addPortrayedBy(Crew crew); @IncidenceUnique(label = PORTRAYS, direction = Direction.IN) public void removePortrayedBy(Portrays portrayal); @AdjacencyUnique(label = KILLS, direction = Direction.IN) public Iterable<Character> getKilledByCharacters(); @IncidenceUnique(label = KILLS, direction = Direction.IN) public Iterable<Kills> getKilledBy(); @IncidenceUnique(label = KILLS, direction = Direction.IN) public Kills addKilledBy(Character character); @IncidenceUnique(label = KILLS, direction = Direction.IN) public void removeKilledBy(Kills kill); @AdjacencyUnique(label = KILLS, direction = Direction.OUT) public Iterable<Character> getKillsCharacters(); @IncidenceUnique(label = KILLS, direction = Direction.OUT) public Iterable<Kills> getKills(); @IncidenceUnique(label = KILLS, direction = Direction.OUT) public Kills addKills(Character character); @IncidenceUnique(label = KILLS, direction = Direction.OUT) public void removeKills(Kills kill); @AdjacencyUnique(label = SPAWNS, direction = Direction.IN) public Iterable<Character> getSpawnedByCharacters(); @IncidenceUnique(label = SPAWNS, direction = Direction.IN) public Iterable<Spawns> getSpawnedBy(); @IncidenceUnique(label = SPAWNS, direction = Direction.IN) public Spawns addSpawnedBy(Character character); @IncidenceUnique(label = SPAWNS, direction = Direction.IN) public void removeSpawnedBy(Spawns spawn); @AdjacencyUnique(label = SPAWNS, direction = Direction.OUT) public Iterable<Character> getSpawnsCharacters(); @IncidenceUnique(label = SPAWNS, direction = Direction.OUT) public Iterable<Spawns> getSpawns(); @IncidenceUnique(label = SPAWNS, direction = Direction.OUT) public Spawns addSpawns(Character character); @AdjacencyUnique(label = SPAWNS, direction = Direction.OUT) public void removeSpawns(Character spawn); } @TypeValue("crew") @JavaHandlerClass(CrewImpl.class) public interface Crew extends DVertexFrame { @Property("firstName") public String getFirstName(); @Property("lastName") public String getLastName(); @Property("firstName") public void setFirstName(String firstName); @Property("lastName") public void setLastName(String lastName); @JavaHandler public void setFullName(String fullName); @AdjacencyUnique(label = PORTRAYS) public Iterable<Character> getPortraysCharacters(); @IncidenceUnique(label = PORTRAYS) public Iterable<Portrays> getPortrayals(); @IncidenceUnique(label = PORTRAYS) public Portrays addPortrayals(Character character); @IncidenceUnique(label = PORTRAYS) public void removePortrayals(Portrays portrayal); @AdjacencyUnique(label = STARRING) public Iterable<Movie> getStarsInMovies(); @IncidenceUnique(label = STARRING) public Iterable<Starring> getStarsIn(); @IncidenceUnique(label = STARRING) public Starring addStarsInMovie(Movie movie); @AdjacencyUnique(label = STARRING) public void removeStarsInMovie(Movie movie); } public static abstract class CrewImpl implements JavaHandlerContext<Vertex>, Crew { @Override public void setFullName(final String fullName) { int pos = fullName.lastIndexOf(' '); setFirstName(fullName.substring(0, pos)); setLastName(fullName.substring(pos + 1)); } } public static void main(final String[] args) { TestRunnerUtil.runAsDominoThread(new Graph2Demo(), TestRunnerUtil.NATIVE_SESSION); } public void timelog(final String message) { long curtime = System.nanoTime(); long elapsed = curtime - marktime; marktime = curtime; System.out.println(elapsed / 1000000 + " ms: " + message); } public Graph2Demo() { // whatever you might want to do in your constructor, but stay away from Domino objects } @Override public void run() { resetDbs(); System.out.println("Starting demo run..."); buildStarWarsGraph(); readGraphBack(); } public void resetDbs() { System.out.println("Resetting Star Wars test databases"); Session session = Factory.getSession(SessionType.NATIVE); Database crewDb = session.getDatabase(crewId); if (crewDb != null) { crewDb.getAllDocuments().removeAll(true); } Database movieDb = session.getDatabase(movieId); if (movieDb != null) { movieDb.getAllDocuments().removeAll(true); } Database characterDb = session.getDatabase(characterId); if (characterDb != null) { characterDb.getAllDocuments().removeAll(true); } Database edgeDb = session.getDatabase(edgeId); if (edgeDb != null) { edgeDb.getAllDocuments().removeAll(true); } Database usersDb = session.getDatabase(usersId); if (usersDb != null) { usersDb.getAllDocuments().removeAll(true); } // Database nabDb = session.getDatabase("", "names.nsf"); // Document ntfDoc = nabDb.getDocumentByUNID(ntfUnid); // ntfDoc.removeItem("_COUNT_OPEN_OUT_rates"); // ntfDoc.removeItem("_OPEN_OUT_rates"); // ntfDoc.removeItem("_ODA_GRAPHTYPE"); // ntfDoc.save(); session.recycle(); System.gc(); } private FramedTransactionalGraph<DGraph> setupGraph() { DElementStore crewStore = new DElementStore(); crewStore.setStoreKey(crewId); crewStore.addType(Crew.class); DElementStore movieStore = new DElementStore(); movieStore.setStoreKey(movieId); movieStore.addType(Movie.class); DElementStore characterStore = new DElementStore(); characterStore.setStoreKey(characterId); characterStore.addType(Character.class); DElementStore edgeStore = new DElementStore(); edgeStore.addType(DirectedBy.class); edgeStore.addType(AppearsIn.class); edgeStore.addType(Kills.class); edgeStore.addType(Starring.class); edgeStore.addType(Portrays.class); edgeStore.addType(Spawns.class); edgeStore.setStoreKey(edgeId); DElementStore usersStore = new DElementStore(); usersStore.setStoreKey(nabId); usersStore.setProxyStoreKey(usersId); usersStore.addType(Person.class); SocialStore socialStore = new SocialStore(); socialStore.setStoreKey(socialId); DConfiguration config = new DConfiguration(); graph = new DGraph(config); config.addElementStore(crewStore); config.addElementStore(movieStore); config.addElementStore(characterStore); config.addElementStore(edgeStore); config.addElementStore(usersStore); config.addElementStore(socialStore); config.setDefaultElementStore(edgeStore.getStoreKey()); DFramedGraphFactory factory = new DFramedGraphFactory(config); FramedTransactionalGraph<DGraph> framedGraph = factory.create(graph); return framedGraph; } public void readGraphBack() { long testStartTime = System.nanoTime(); marktime = System.nanoTime(); Session session = Factory.getSession(SessionType.FULL_ACCESS); graph = null; System.gc(); try { timelog("Beginning Star Wars re-read test..."); FramedTransactionalGraph<DGraph> framedGraph = setupGraph(); // // NoteCoordinate nc = NoteCoordinate.Utils.getNoteCoordinate(Long.toHexString(usersStore.getStoreKey()), ntfUnid); Person ntfUser = framedGraph.getVertex("Nathan Freeman", Person.class); Movie newhopeMovie = framedGraph.getVertex("Star Wars", Movie.class); Movie empireMovie = framedGraph.getVertex("The Empire Strikes Back", Movie.class); Movie jediMovie = framedGraph.getVertex("Return of the Jedi", Movie.class); Movie phantomMovie = framedGraph.getVertex("The Phantom Menace", Movie.class); Movie clonesMovie = framedGraph.getVertex("Attack of the Clones", Movie.class); Movie revengeMovie = framedGraph.getVertex("Revenge of the Sith", Movie.class); System.out.println("***************************"); System.out.println("Don't miss " + newhopeMovie.getTitle() + " rated " + newhopeMovie.getRaterRating(ntfUser) + " stars"); Iterable<Starring> starrings = newhopeMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName() + " (" + crew.asVertex().getId() + ")"); } } System.out.println("***************************"); System.out.println("Don't miss " + empireMovie.getTitle() + " rated " + empireMovie.getRaterRating(ntfUser) + " stars"); starrings = empireMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName()); } } System.out.println("***************************"); System.out.println("Don't miss " + jediMovie.getTitle() + " rated " + jediMovie.getRaterRating(ntfUser) + " stars"); starrings = jediMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName()); } } System.out.println("***************************"); System.out.println("Don't miss " + phantomMovie.getTitle()); starrings = phantomMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName()); } } System.out.println("***************************"); System.out.println("Don't miss " + clonesMovie.getTitle()); starrings = clonesMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName()); } } System.out.println("***************************"); System.out.println("Don't miss " + revengeMovie.getTitle()); starrings = revengeMovie.getStarring(); for (Starring starring : starrings) { Crew crew = starring.getStar(); Iterator<Character> chars = crew.getPortraysCharacters().iterator(); if (chars.hasNext()) { Character character = chars.next(); System.out.println(crew.getFirstName() + " " + crew.getLastName() + " as " + character.getName()); } else { System.out.println(crew.getFirstName() + " " + crew.getLastName()); } } } catch (Throwable t) { t.printStackTrace(); } } public void buildStarWarsGraph() { long testStartTime = System.nanoTime(); marktime = System.nanoTime(); try { timelog("Beginning Star Wars graph test..."); FramedTransactionalGraph<DGraph> framedGraph = setupGraph(); Person nathan = framedGraph.addVertex("Nathan Freeman", Person.class); Movie newhopeMovie = framedGraph.addVertex("Star Wars", Movie.class); newhopeMovie.setTitle("Star Wars"); Movie empireMovie = framedGraph.addVertex("The Empire Strikes Back", Movie.class); empireMovie.setTitle("The Empire Strikes Back"); empireMovie.addLiker(nathan); Movie jediMovie = framedGraph.addVertex("Return of the Jedi", Movie.class); jediMovie.setTitle("Return of the Jedi"); Movie phantomMovie = framedGraph.addVertex("The Phantom Menace", Movie.class); phantomMovie.setTitle("The Phantom Menace"); Movie clonesMovie = framedGraph.addVertex("Attack of the Clones", Movie.class); clonesMovie.setTitle("Attack of the Clones"); Movie revengeMovie = framedGraph.addVertex("Revenge of the Sith", Movie.class); revengeMovie.setTitle("Revenge of the Sith"); Comment comment = framedGraph.addVertex(null, Comment.class); comment.setBody("Really the worst of the bunch"); comment.addCommenter(nathan); revengeMovie.addComment(comment); Crew lucasCrew = framedGraph.addVertex("George Lucas", Crew.class); lucasCrew.setFullName("George Lucas"); Crew kershnerCrew = framedGraph.addVertex("Irvin Kershner", Crew.class); kershnerCrew.setFullName("Irvin Kershner"); Crew marquandCrew = framedGraph.addVertex("Richard Marquand", Crew.class); marquandCrew.setFullName("Richard Marquand"); DirectedBy nhDirector = newhopeMovie.addDirectedBy(lucasCrew); nhDirector.setRating(4); DirectedBy esbDirector = empireMovie.addDirectedBy(kershnerCrew); esbDirector.setRating(5); DirectedBy rojDirector = jediMovie.addDirectedBy(marquandCrew); rojDirector.setRating(4); DirectedBy pmDirector = phantomMovie.addDirectedBy(lucasCrew); pmDirector.setRating(3); DirectedBy aocDirector = clonesMovie.addDirectedBy(lucasCrew); aocDirector.setRating(2); DirectedBy rosDirector = revengeMovie.addDirectedBy(lucasCrew); rosDirector.setRating(1); Character luke = framedGraph.addVertex("Luke Skywalker", Character.class); luke.setName("Luke Skywalker"); luke.addAppearsIn(newhopeMovie); luke.addAppearsIn(empireMovie); luke.addAppearsIn(jediMovie); Character leia = framedGraph.addVertex("Leia Organa", Character.class); leia.setName("Leia Organa"); leia.addAppearsIn(newhopeMovie); leia.addAppearsIn(empireMovie); leia.addAppearsIn(jediMovie); Character han = framedGraph.addVertex("Han Solo", Character.class); han.setName("Han Solo"); han.addAppearsIn(newhopeMovie); han.addAppearsIn(empireMovie); han.addAppearsIn(jediMovie); Character chewy = framedGraph.addVertex("Chewbacca", Character.class); chewy.setName("Chewbacca"); chewy.addAppearsIn(newhopeMovie); chewy.addAppearsIn(empireMovie); chewy.addAppearsIn(jediMovie); chewy.addAppearsIn(revengeMovie); Character threepio = framedGraph.addVertex("C-3PO", Character.class); threepio.setName("C-3PO"); threepio.addAppearsIn(newhopeMovie); threepio.addAppearsIn(empireMovie); threepio.addAppearsIn(jediMovie); threepio.addAppearsIn(phantomMovie); threepio.addAppearsIn(clonesMovie); threepio.addAppearsIn(revengeMovie); Character artoo = framedGraph.addVertex("R2D2", Character.class); artoo.setName("R2D2"); artoo.addAppearsIn(newhopeMovie); artoo.addAppearsIn(empireMovie); artoo.addAppearsIn(jediMovie); artoo.addAppearsIn(phantomMovie); artoo.addAppearsIn(clonesMovie); artoo.addAppearsIn(revengeMovie); Character lando = framedGraph.addVertex("Lando Calrissian", Character.class); lando.setName("Lando Calrissian"); lando.addAppearsIn(empireMovie); lando.addAppearsIn(jediMovie); Character anakin = framedGraph.addVertex("Anakin Skywalker", Character.class); anakin.setName("Anakin Skywalker"); anakin.addAppearsIn(newhopeMovie); anakin.addAppearsIn(empireMovie); anakin.addAppearsIn(jediMovie); anakin.addAppearsIn(phantomMovie); anakin.addAppearsIn(clonesMovie); anakin.addAppearsIn(revengeMovie); Character palpatine = framedGraph.addVertex("Darth Sidious", Character.class); palpatine.setName("Darth Sidious"); palpatine.addAppearsIn(empireMovie); palpatine.addAppearsIn(jediMovie); palpatine.addAppearsIn(phantomMovie); palpatine.addAppearsIn(clonesMovie); palpatine.addAppearsIn(revengeMovie); Character obiwan = framedGraph.addVertex("Obi-Wan Kenobi", Character.class); obiwan.setName("Obi-Wan Kenobi"); obiwan.addAppearsIn(newhopeMovie); obiwan.addAppearsIn(empireMovie); obiwan.addAppearsIn(jediMovie); obiwan.addAppearsIn(phantomMovie); obiwan.addAppearsIn(clonesMovie); obiwan.addAppearsIn(revengeMovie); Character quigon = framedGraph.addVertex("Qui-Gon Jinn", Character.class); quigon.setName("Qui-Gon Jinn"); quigon.addAppearsIn(phantomMovie); Character yoda = framedGraph.addVertex("Yoda", Character.class); yoda.setName("Yoda"); yoda.addAppearsIn(empireMovie); yoda.addAppearsIn(jediMovie); yoda.addAppearsIn(phantomMovie); yoda.addAppearsIn(clonesMovie); yoda.addAppearsIn(revengeMovie); Character jango = framedGraph.addVertex("Jango Fett", Character.class); jango.setName("Jango Fett"); jango.addAppearsIn(clonesMovie); Character boba = framedGraph.addVertex("Boba Fett", Character.class); boba.setName("Boba Fett"); boba.addAppearsIn(empireMovie); boba.addAppearsIn(jediMovie); boba.addAppearsIn(clonesMovie); Character padme = framedGraph.addVertex("Padme", Character.class); padme.setName("Padme"); padme.addAppearsIn(phantomMovie); padme.addAppearsIn(clonesMovie); padme.addAppearsIn(revengeMovie); Character shmi = framedGraph.addVertex("Shmi Skywalker", Character.class); shmi.setName("Shmi Skywalker"); shmi.addAppearsIn(phantomMovie); shmi.addAppearsIn(clonesMovie); Character tyranus = framedGraph.addVertex("Darth Tyranus", Character.class); tyranus.setName("Darth Tyranus"); tyranus.addAppearsIn(clonesMovie); tyranus.addAppearsIn(revengeMovie); Character maul = framedGraph.addVertex("Darth Maul", Character.class); maul.setName("Darth Maul"); maul.addAppearsIn(phantomMovie); maul.addAppearsIn(clonesMovie); Character tarkin = framedGraph.addVertex("Grand Moff Tarkin", Character.class); tarkin.setName("Grand Moff Tarkin"); tarkin.addAppearsIn(newhopeMovie); Character windu = framedGraph.addVertex("Mace Windu", Character.class); windu.setName("Mace Windu"); windu.addAppearsIn(phantomMovie); windu.addAppearsIn(clonesMovie); windu.addAppearsIn(revengeMovie); Character greedo = framedGraph.addVertex("Greedo", Character.class); greedo.setName("Greedo"); greedo.addAppearsIn(newhopeMovie); Character wedge = framedGraph.addVertex("Wedge Antilles", Character.class); wedge.setName("Wedge Antilles"); wedge.addAppearsIn(newhopeMovie); wedge.addAppearsIn(empireMovie); wedge.addAppearsIn(jediMovie); Crew ford = framedGraph.addVertex("Harrison Ford", Crew.class); ford.setFullName("Harrison Ford"); ford.addStarsInMovie(newhopeMovie); ford.addStarsInMovie(empireMovie); ford.addStarsInMovie(jediMovie); han.addPortrayedBy(ford); Crew fischer = framedGraph.addVertex("Carrie Fischer", Crew.class); fischer.setFullName("Carrie Fischer"); newhopeMovie.addStarring(fischer); empireMovie.addStarring(fischer); jediMovie.addStarring(fischer); // fischer.addStarsInMovie(newhopeMovie); // fischer.addStarsInMovie(empireMovie); // fischer.addStarsInMovie(jediMovie); fischer.addPortrayals(leia); Crew hammill = framedGraph.addVertex("Mark Hammill", Crew.class); hammill.setFullName("Mark Hammill"); hammill.addStarsInMovie(newhopeMovie); hammill.addStarsInMovie(empireMovie); hammill.addStarsInMovie(jediMovie); hammill.addPortrayals(luke); Crew daniels = framedGraph.addVertex("Anthony Daniels", Crew.class); daniels.setFullName("Anthony Daniels"); daniels.addStarsInMovie(newhopeMovie); daniels.addStarsInMovie(empireMovie); daniels.addStarsInMovie(jediMovie); daniels.addStarsInMovie(phantomMovie); daniels.addStarsInMovie(clonesMovie); daniels.addStarsInMovie(revengeMovie); daniels.addPortrayals(threepio); Crew baker = framedGraph.addVertex("Kenny Baker", Crew.class); baker.setFullName("Kenny Baker"); baker.addStarsInMovie(newhopeMovie); baker.addStarsInMovie(empireMovie); baker.addStarsInMovie(jediMovie); baker.addStarsInMovie(phantomMovie); baker.addStarsInMovie(clonesMovie); baker.addStarsInMovie(revengeMovie); baker.addPortrayals(artoo); Crew prowse = framedGraph.addVertex("David Prowse", Crew.class); prowse.setFullName("David Prowse"); prowse.addStarsInMovie(newhopeMovie); prowse.addStarsInMovie(empireMovie); prowse.addStarsInMovie(jediMovie); prowse.addPortrayals(anakin); Crew williams = framedGraph.addVertex("Billy Dee Williams", Crew.class); williams.setFullName("Billy Dee Williams"); williams.addStarsInMovie(empireMovie); williams.addStarsInMovie(jediMovie); williams.addPortrayals(lando); Crew guinness = framedGraph.addVertex("Alec Guinness", Crew.class); guinness.setFullName("Alec Guinness"); guinness.addStarsInMovie(newhopeMovie); guinness.addStarsInMovie(empireMovie); guinness.addStarsInMovie(jediMovie); guinness.addPortrayals(obiwan); Crew ewan = framedGraph.addVertex("Ewan McGregor", Crew.class); ewan.setFullName("Ewan McGregor"); ewan.addStarsInMovie(phantomMovie); ewan.addStarsInMovie(clonesMovie); ewan.addStarsInMovie(revengeMovie); ewan.addPortrayals(obiwan); Crew cushing = framedGraph.addVertex("Peter Cushing", Crew.class); cushing.setFullName("Peter Cushing"); cushing.addStarsInMovie(newhopeMovie); cushing.addPortrayals(tarkin); Crew mayhew = framedGraph.addVertex("Peter Mayhew", Crew.class); mayhew.setFullName("Peter Mayhew"); mayhew.addStarsInMovie(newhopeMovie); mayhew.addStarsInMovie(empireMovie); mayhew.addStarsInMovie(jediMovie); mayhew.addStarsInMovie(revengeMovie); mayhew.addPortrayals(chewy); Crew oz = framedGraph.addVertex("Frank Oz", Crew.class); oz.setFullName("Frank Oz"); oz.addStarsInMovie(empireMovie); oz.addStarsInMovie(jediMovie); oz.addStarsInMovie(phantomMovie); oz.addStarsInMovie(clonesMovie); oz.addStarsInMovie(revengeMovie); oz.addPortrayals(yoda); Crew bulloch = framedGraph.addVertex("Jeremy Bulloch", Crew.class); bulloch.setFullName("Jeremy Bulloch"); bulloch.addStarsInMovie(empireMovie); bulloch.addStarsInMovie(jediMovie); bulloch.addPortrayals(boba); Crew revill = framedGraph.addVertex("Clive Revill", Crew.class); revill.setFullName("Clive Revill"); revill.addStarsInMovie(empireMovie); revill.addPortrayals(palpatine); Crew ian = framedGraph.addVertex("Ian McDiarmid", Crew.class); ian.setFullName("Ian McDiarmid"); ian.addStarsInMovie(jediMovie); ian.addStarsInMovie(phantomMovie); ian.addStarsInMovie(clonesMovie); ian.addStarsInMovie(revengeMovie); ian.addPortrayals(palpatine); Crew shaw = framedGraph.addVertex("Sebastian Shaw", Crew.class); shaw.setFullName("Sebastian Shaw"); shaw.addStarsInMovie(jediMovie); shaw.addPortrayals(anakin); Crew liam = framedGraph.addVertex("Liam Neeson", Crew.class); liam.setFullName("Liam Neeson"); liam.addStarsInMovie(phantomMovie); liam.addPortrayals(quigon); Crew portman = framedGraph.addVertex("Natalie Portman", Crew.class); portman.setFullName("Natalie Portman"); portman.addStarsInMovie(phantomMovie); portman.addStarsInMovie(clonesMovie); portman.addStarsInMovie(revengeMovie); portman.addPortrayals(padme); Crew lloyd = framedGraph.addVertex("Jake Lloyd", Crew.class); lloyd.setFullName("Jake Lloyd"); lloyd.addStarsInMovie(phantomMovie); lloyd.addPortrayals(anakin); Crew hayden = framedGraph.addVertex("Hayden Christensen", Crew.class); hayden.setFullName("Hayden Christensen"); hayden.addStarsInMovie(clonesMovie); hayden.addStarsInMovie(revengeMovie); hayden.addPortrayals(anakin); Crew august = framedGraph.addVertex("Pernill August", Crew.class); august.setFullName("Pernill August"); august.addStarsInMovie(phantomMovie); august.addStarsInMovie(clonesMovie); august.addPortrayals(shmi); Crew park = framedGraph.addVertex("Ray Park", Crew.class); park.setFullName("Ray Park"); park.addStarsInMovie(phantomMovie); park.addPortrayals(maul); Crew samuel = framedGraph.addVertex("Samuel L. Jackson", Crew.class); samuel.setFullName("Samuel L. Jackson"); samuel.addStarsInMovie(phantomMovie); samuel.addStarsInMovie(clonesMovie); samuel.addStarsInMovie(revengeMovie); samuel.addPortrayals(windu); Crew lee = framedGraph.addVertex("Christopher Lee", Crew.class); lee.setFullName("Christopher Lee"); lee.addStarsInMovie(clonesMovie); lee.addStarsInMovie(revengeMovie); lee.addPortrayals(tyranus); Crew morrison = framedGraph.addVertex("Temuera Morrison", Crew.class); morrison.setFullName("Temuera Morrison"); morrison.addStarsInMovie(clonesMovie); morrison.addPortrayals(jango); Crew logan = framedGraph.addVertex("Daniel Logan", Crew.class); logan.setFullName("Daniel Logan"); logan.addStarsInMovie(clonesMovie); logan.addPortrayals(boba); Crew blake = framedGraph.addVertex("Paul Blake", Crew.class); blake.setFullName("Paul Blake"); blake.addStarsInMovie(newhopeMovie); blake.addPortrayals(greedo); Crew lawson = framedGraph.addVertex("Denis Lawson", Crew.class); lawson.setFullName("Denis Lawson"); lawson.addStarsInMovie(newhopeMovie); lawson.addStarsInMovie(empireMovie); lawson.addStarsInMovie(jediMovie); lawson.addPortrayals(wedge); Kills curKills = null; curKills = anakin.addKills(obiwan); curKills.setFilm(newhopeMovie.asVertex().getId().toString()); curKills = luke.addKills(tarkin); curKills.setFilm(newhopeMovie.asVertex().getId().toString()); curKills = windu.addKills(jango); curKills.setFilm(clonesMovie.asVertex().getId().toString()); curKills = palpatine.addKills(windu); curKills.setFilm(revengeMovie.asVertex().getId().toString()); curKills = wedge.addKills(palpatine); curKills.setFilm(jediMovie.asVertex().getId().toString()); curKills = lando.addKills(palpatine); curKills.setFilm(jediMovie.asVertex().getId().toString()); curKills = maul.addKills(quigon); curKills.setFilm(phantomMovie.asVertex().getId().toString()); curKills = obiwan.addKills(maul); curKills.setFilm(phantomMovie.asVertex().getId().toString()); curKills = han.addKills(greedo); curKills.setFilm(newhopeMovie.asVertex().getId().toString()); curKills = han.addKills(boba); curKills.setFilm(jediMovie.asVertex().getId().toString()); curKills = anakin.addKills(tyranus); curKills.setFilm(revengeMovie.asVertex().getId().toString()); curKills = palpatine.addKills(anakin); curKills.setFilm(jediMovie.asVertex().getId().toString()); anakin.addSpawns(threepio); anakin.addSpawns(luke); anakin.addSpawns(leia); padme.addSpawns(luke); padme.addSpawns(leia); shmi.addSpawns(anakin); jango.addSpawns(boba); System.out.println("Commiting graph..."); graph.commit(); System.out.println("Committed!"); } catch (Throwable t) { t.printStackTrace(); } long testEndTime = System.nanoTime(); System.out.println("Completed " + getClass().getSimpleName() + " run in " + ((testEndTime - testStartTime) / 1000000) + " ms"); } }