diff options
Diffstat (limited to 'model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java')
-rw-r--r-- | model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java new file mode 100644 index 00000000..b5660041 --- /dev/null +++ b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java | |||
@@ -0,0 +1,35 @@ | |||
1 | package org.eclipse.viatra.solver.data.query.relationView; | ||
2 | |||
3 | import org.eclipse.viatra.solver.data.model.Model; | ||
4 | import org.eclipse.viatra.solver.data.model.Tuple; | ||
5 | import org.eclipse.viatra.solver.data.model.Tuple.Tuple1; | ||
6 | import org.eclipse.viatra.solver.data.model.representation.RelationRepresentation; | ||
7 | |||
8 | public abstract class FilteredRelationView<D> extends RelationView<D>{ | ||
9 | |||
10 | protected FilteredRelationView(Model model, RelationRepresentation<D> representation) { | ||
11 | super(model, representation); | ||
12 | } | ||
13 | @Override | ||
14 | protected Object[] forwardMap(Tuple key, D value) { | ||
15 | return toTuple1Array(key); | ||
16 | } | ||
17 | @Override | ||
18 | public boolean get(Object[] tuple) { | ||
19 | int[] content = new int[tuple.length]; | ||
20 | for(int i = 0; i<tuple.length; i++) { | ||
21 | content[i] =((Tuple1)tuple[i]).get(0); | ||
22 | } | ||
23 | Tuple key = Tuple.of(content); | ||
24 | D value = this.model.get(representation, key); | ||
25 | return filter(key, value); | ||
26 | } | ||
27 | |||
28 | public static Object[] toTuple1Array(Tuple t) { | ||
29 | Object[] result = new Object[t.getSize()]; | ||
30 | for(int i = 0; i<t.getSize(); i++) { | ||
31 | result[i] = t.get(i); | ||
32 | } | ||
33 | return result; | ||
34 | } | ||
35 | } | ||