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
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.layer0.utils.binaryPredicates;
\r
14 import java.util.Collection;
\r
16 import org.simantics.db.ReadGraph;
\r
17 import org.simantics.db.Resource;
\r
18 import org.simantics.db.WriteGraph;
\r
19 import org.simantics.db.common.utils.NameUtils;
\r
20 import org.simantics.db.exception.DatabaseException;
\r
21 import org.simantics.utils.datastructures.Pair;
\r
23 public class Relation extends BinaryPredicate {
\r
27 public Relation(Resource relation) {
\r
28 this.relation = relation;
\r
32 public Collection<Resource> getObjects(ReadGraph g, Resource subject) throws DatabaseException {
\r
33 return g.getObjects(subject, relation);
\r
37 public Collection<Pair<Resource, Resource>> getStatements(ReadGraph g) {
\r
38 throw new UnsupportedOperationException();
\r
42 public Collection<Resource> getSubjects(ReadGraph g, Resource object) throws DatabaseException {
\r
43 return g.getObjects(object, g.getInverse(relation));
\r
47 public boolean has(ReadGraph g, Resource subject, Resource object) throws DatabaseException {
\r
48 return g.hasStatement(subject, relation, object);
\r
52 public boolean supportsGetObjects() {
\r
57 public boolean supportsGetStatements() {
\r
62 public boolean supportsGetSubjects() {
\r
67 public void add(WriteGraph g, Resource subject, Resource object) throws DatabaseException {
\r
68 g.claim(subject, relation, object);
\r
72 public void remove(WriteGraph g, Resource subject, Resource object) throws DatabaseException {
\r
73 g.denyStatement(subject, relation, object);
\r
77 public boolean supportsAdditions() {
\r
82 public boolean supportsRemovals() {
\r
87 public int hashCode() {
\r
88 final int prime = 31;
\r
90 result = prime * result
\r
91 + ((relation == null) ? 0 : relation.hashCode());
\r
96 public boolean equals(Object obj) {
\r
101 if (getClass() != obj.getClass())
\r
103 Relation other = (Relation) obj;
\r
104 if (relation == null) {
\r
105 if (other.relation != null)
\r
107 } else if (!relation.equals(other.relation))
\r
113 public IBinaryPredicate inverse(ReadGraph g) throws DatabaseException {
\r
114 return new Relation(g.getInverse(relation));
\r
118 public String toString(ReadGraph g) throws DatabaseException {
\r
119 return NameUtils.getSafeName(g, relation);
\r