]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/DirectStatementsImpl.java
Merge commit '0915910'
[simantics/platform.git] / bundles / org.simantics.db.procore / src / fi / vtt / simantics / procore / internal / DirectStatementsImpl.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package fi.vtt.simantics.procore.internal;\r
13 \r
14 import gnu.trove.list.array.TIntArrayList;\r
15 \r
16 import java.util.Collection;\r
17 import java.util.Iterator;\r
18 \r
19 import org.simantics.db.DirectStatements;\r
20 import org.simantics.db.Resource;\r
21 import org.simantics.db.Statement;\r
22 import org.simantics.db.impl.ResourceImpl;\r
23 import org.simantics.db.impl.support.ResourceSupport;\r
24 \r
25 final public class DirectStatementsImpl implements DirectStatements {\r
26 \r
27         final ResourceSupport support;\r
28         final int subject;\r
29         final TIntArrayList statements = new TIntArrayList();\r
30         \r
31         DirectStatementsImpl(ResourceSupport support, int subject) {\r
32                 this.support = support;\r
33                 this.subject = subject;\r
34         }\r
35         \r
36         void addStatement(int p, int o) {\r
37                 statements.add(p);\r
38                 statements.add(o);\r
39         }\r
40         \r
41         @Override\r
42         public Resource getSubject() {\r
43                 return new ResourceImpl(support, subject);\r
44         }\r
45 \r
46         @Override\r
47         public boolean add(Statement arg0) {\r
48                 throw new Error("Not supported");\r
49         }\r
50 \r
51         @Override\r
52         public boolean addAll(Collection<? extends Statement> arg0) {\r
53                 throw new Error("Not supported");\r
54         }\r
55 \r
56         @Override\r
57         public void clear() {\r
58                 throw new Error("Not supported");\r
59         }\r
60 \r
61         @Override\r
62         public boolean contains(Object arg0) {\r
63         Statement stm = (Statement)arg0;\r
64         ResourceImpl p = (ResourceImpl)stm.getPredicate();\r
65         ResourceImpl o = (ResourceImpl)stm.getObject();\r
66         for(int i=0;i<statements.size();i+=2) {\r
67             int pi = statements.getQuick(i);\r
68             int oi = statements.getQuick(i+1);\r
69             if(p.id == pi && o.id == oi) return true;\r
70         }\r
71         return false;\r
72         }\r
73 \r
74         @Override\r
75         public boolean containsAll(Collection<?> arg0) {\r
76                 throw new Error("Not supported");\r
77         }\r
78 \r
79         @Override\r
80         public boolean isEmpty() {\r
81                 throw new Error("Not supported");\r
82         }\r
83 \r
84         @Override\r
85         public Iterator<Statement> iterator() {\r
86                 return new Iterator<Statement>() {\r
87 \r
88                         int index = 0;\r
89                         int max = statements.size();\r
90                         \r
91                         @Override\r
92                         public boolean hasNext() {\r
93                                 return index < max; \r
94                         }\r
95 \r
96                         @Override\r
97                         public Statement next() {\r
98                                 return new DirectStatementImpl(support, subject, statements.getQuick(index++), statements.getQuick(index++));\r
99                         }\r
100 \r
101                         @Override\r
102                         public void remove() {\r
103                                 throw new Error("Not supported");\r
104                         }\r
105                         \r
106                 };\r
107         }\r
108 \r
109         @Override\r
110         public boolean remove(Object arg0) {\r
111                 throw new Error("Not supported");\r
112         }\r
113 \r
114         @Override\r
115         public boolean removeAll(Collection<?> arg0) {\r
116                 throw new Error("Not supported");\r
117         }\r
118 \r
119         @Override\r
120         public boolean retainAll(Collection<?> arg0) {\r
121                 throw new Error("Not supported");\r
122         }\r
123 \r
124         @Override\r
125         public int size() {\r
126                 return statements.size() >> 1;\r
127         }\r
128 \r
129         @Override\r
130         public Object[] toArray() {\r
131                 throw new Error("Not supported");\r
132         }\r
133 \r
134         @Override\r
135         public <T> T[] toArray(T[] arg0) {\r
136                 throw new Error("Not supported");\r
137         }\r
138         \r
139 }\r