View Javadoc

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