1 package org.openprovenance.model; 2 import java.util.List; 3 import java.util.LinkedList; 4 5 /*** Utilities for manipulating OPM Graphs. */ 6 7 public class OPMUtilities { 8 9 private OPMFactory of=new OPMFactory(); 10 11 public List<Node> getNodes(OPMGraph g) { 12 List<Node> res=new LinkedList(); 13 res.addAll(g.getArtifacts().getArtifact()); 14 res.addAll(g.getProcesses().getProcess()); 15 res.addAll(g.getAgents().getAgent()); 16 return res; 17 } 18 19 public List<Edge> getEdges(OPMGraph g) { 20 List<Edge> res=new LinkedList(); 21 CausalDependencies dep=g.getCausalDependencies(); 22 for (Object o:dep.getUsedOrWasGeneratedByOrWasTriggeredBy()) { 23 res.add((Edge)o); 24 } 25 return res; 26 } 27 28 29 30 31 public OPMGraph union (OPMGraph g1, OPMGraph g2) { 32 33 Accounts accs=union(g1.getAccounts(),g2.getAccounts()); 34 35 Processes ps=union(g1.getProcesses(),g2.getProcesses()); 36 37 Artifacts as=union(g1.getArtifacts(),g2.getArtifacts()); 38 39 Agents ags=union(g1.getAgents(),g2.getAgents()); 40 41 CausalDependencies lks=union(g1.getCausalDependencies(), 42 g2.getCausalDependencies()); 43 44 OPMGraph g=of.newOPMGraph(accs, 45 ps, 46 as, 47 ags, 48 lks); 49 return g; 50 } 51 52 public Accounts union (Accounts g1, Accounts g2) { 53 Accounts res=of.newAccounts(null,null); 54 if (g1.getAccount()!=null) { 55 res.getAccount().addAll(g1.getAccount()); 56 } 57 if (g2.getAccount()!=null) { 58 res.getAccount().addAll(g2.getAccount()); 59 } 60 if (g1.getOverlaps()!=null) { 61 res.getOverlaps().addAll(g1.getOverlaps()); 62 } 63 if (g2.getOverlaps()!=null) { 64 res.getOverlaps().addAll(g2.getOverlaps()); 65 } 66 return res; 67 } 68 69 public Agents union (Agents g1, Agents g2) { 70 return null; 71 } 72 73 public Processes union (Processes g1, Processes g2) { 74 return null; 75 } 76 77 public Artifacts union (Artifacts g1, Artifacts g2) { 78 return null; 79 } 80 81 public CausalDependencies union (CausalDependencies g1, CausalDependencies g2) { 82 return null; 83 } 84 85 /*** Returns a graph with the same structure, in which the * 86 effective membership of all nodes has been computed. The 87 function returns an entirely new graph, without modifying the 88 original. */ 89 90 public OPMGraph effectiveMembership (OPMGraph g) { 91 Accounts accs=g.getAccounts(); 92 93 Processes ps=g.getProcesses(); 94 95 Artifacts as=g.getArtifacts(); 96 97 Agents ags=g.getAgents(); 98 99 CausalDependencies lks=g.getCausalDependencies(); 100 101 OPMGraph g2=of.newOPMGraph(accs, 102 ps, 103 as, 104 ags, 105 lks); 106 return g2; 107 } 108 109 public Accounts accountMembership (ArtifactRef aid, OPMGraph g) { 110 return null; 111 } 112 113 public OPMGraph view (OPMGraph g, Accounts accs) { 114 return g; 115 } 116 117 public boolean legalAccount (OPMGraph g) { 118 return true; 119 } 120 121 public OPMGraph intersection (OPMGraph g1, OPMGraph g2) { 122 return g1; 123 } 124 125 } 126