1 package org.simantics.interop.test;
\r
3 import java.util.ArrayList;
\r
4 import java.util.Collection;
\r
5 import java.util.List;
\r
7 import org.simantics.db.Resource;
\r
8 import org.simantics.db.Statement;
\r
11 private Resource begin;
\r
12 private Resource end;
\r
13 private List<Statement> statements = new ArrayList<Statement>(2);
\r
15 public Path(Statement s) {
\r
16 begin = s.getSubject();
\r
17 end = s.getObject();
\r
21 public Path(Path p) {
\r
24 statements.addAll(p.statements);
\r
27 public Resource getBegin() {
\r
31 public Resource getEnd() {
\r
35 public List<Statement> getStatements() {
\r
39 public int getLength() {
\r
40 return statements.size();
\r
43 public boolean add(Statement s) {
\r
44 if (!statements.get(statements.size()-1).getObject().equals(s.getSubject()))
\r
45 //throw new RuntimeException("Non continuous path. " + s.getSubject() + " does not match " + statements.get(statements.size()-1).getObject());
\r
47 if (s.getObject().equals(begin))
\r
49 for (Statement stm : statements) {
\r
50 if (stm.getObject().equals(s.getObject()))
\r
53 end = s.getObject();
\r
58 public static Collection<Path> expand(Path path, Collection<Statement> statements) {
\r
59 Collection<Path> result = new ArrayList<Path>(statements.size());
\r
60 for (Statement s : statements) {
\r
61 Path p = new Path(path);
\r
68 public static Collection<Path> create(Collection<Statement> statements) {
\r
69 Collection<Path> result = new ArrayList<Path>(statements.size());
\r
70 for (Statement s : statements) {
\r
71 Path p = new Path(s);
\r
78 public boolean equals(Object arg0) {
\r
79 if(!arg0.getClass().equals(getClass()))
\r
81 Path other = (Path)arg0;
\r
82 if (!begin.equals(other.begin))
\r
84 if (!end.equals(other.end))
\r
86 if (statements.size() != other.statements.size())
\r
88 for (int i = 0; i < statements.size(); i++) {
\r
89 if (!statements.get(i).getPredicate().equals(other.statements.get(i).getPredicate())||
\r
90 !statements.get(i).getObject().equals(other.statements.get(i).getObject()))
\r
97 public int hashCode() {
\r
98 return begin.hashCode() + end.hashCode();
\r
102 public String toString() {
\r
104 for (int i = 0; i < statements.size() ; i++) {
\r
105 s += statements.get(i).getSubject();
\r
106 s += "<" + statements.get(i).getPredicate() +">";
\r
107 if (i == statements.size() -1)
\r
108 s += statements.get(i).getObject();
\r