X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.objmap2%2Fsrc%2Forg%2Fsimantics%2Fobjmap%2Fgraph%2Frules%2Fdomain%2FMappingUtils.java;h=a0d0d4dac2df176cc881fb9759f4173a911a1db1;hb=08b7807b;hp=5e97f852dea2a17f79596a90580b927074de5117;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git
diff --git a/bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/domain/MappingUtils.java b/bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/domain/MappingUtils.java
index 5e97f852d..a0d0d4dac 100644
--- a/bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/domain/MappingUtils.java
+++ b/bundles/org.simantics.objmap2/src/org/simantics/objmap/graph/rules/domain/MappingUtils.java
@@ -1,92 +1,92 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2013 Association for Decentralized Information Management
- * in Industry THTH ry.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * VTT Technical Research Centre of Finland - initial API and implementation
- *******************************************************************************/
-package org.simantics.objmap.graph.rules.domain;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.log4j.Logger;
-import org.simantics.db.Resource;
-import org.simantics.db.WriteGraph;
-import org.simantics.db.exception.DatabaseException;
-
-/**
- * Static utility methods for rule implementations.
- * @author Hannu Niemistö
- */
-public class MappingUtils {
-
- static Logger LOGGER = Logger.getLogger("org.simantics.objmap");
-
- /**
- * Adds and removes statements to/from the database so that objects
- * will be exactly the objects connected to subject
by predicate
.
- * Returns true if the method made modifications to the database.
- */
- public static boolean synchronizeStatements(WriteGraph g, Resource subject, Resource predicate, Resource[] objects,
- boolean deleteExtraObjects)
- throws DatabaseException {
- Collection currentObjects0 = g.getObjects(subject, predicate);
- Resource[] currentObjects = currentObjects0.toArray(new Resource[currentObjects0.size()]);
-
- Arrays.sort(objects);
- Arrays.sort(currentObjects);
-
- boolean modified = false;
- int i=0, j=0;
- if(currentObjects.length > 0 && objects.length > 0)
- while(true) {
- int cmp = currentObjects[i].compareTo(objects[j]);
- if(cmp < 0) {
- LOGGER.info(" remove statement");
- if(deleteExtraObjects)
- g.deny(currentObjects[i]);
- else
- g.denyStatement(subject, predicate, currentObjects[i]);
- modified = true;
- ++i;
- if(i >= currentObjects.length)
- break;
- }
- else if(cmp > 0) {
- LOGGER.info(" add statement");
- g.claim(subject, predicate, objects[j]);
- modified = true;
- ++j;
- if(j >= objects.length)
- break;
- }
- else {
- ++i; ++j;
- if(i >= currentObjects.length)
- break;
- if(j >= objects.length)
- break;
- }
- }
- while(i < currentObjects.length) {
- if(deleteExtraObjects)
- g.deny(currentObjects[i]);
- else
- g.denyStatement(subject, predicate, currentObjects[i]);
- modified = true;
- ++i;
- }
- while(j < objects.length) {
- g.claim(subject, predicate, objects[j]);
- modified = true;
- ++j;
- }
- return modified;
- }
-
-}
+/*******************************************************************************
+ * Copyright (c) 2007, 2013 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.objmap.graph.rules.domain;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.simantics.db.Resource;
+import org.simantics.db.WriteGraph;
+import org.simantics.db.exception.DatabaseException;
+
+/**
+ * Static utility methods for rule implementations.
+ * @author Hannu Niemistö
+ */
+public class MappingUtils {
+
+ static Logger LOGGER = Logger.getLogger("org.simantics.objmap");
+
+ /**
+ * Adds and removes statements to/from the database so that objects
+ * will be exactly the objects connected to subject
by predicate
.
+ * Returns true if the method made modifications to the database.
+ */
+ public static boolean synchronizeStatements(WriteGraph g, Resource subject, Resource predicate, Resource[] objects,
+ boolean deleteExtraObjects)
+ throws DatabaseException {
+ Collection currentObjects0 = g.getObjects(subject, predicate);
+ Resource[] currentObjects = currentObjects0.toArray(new Resource[currentObjects0.size()]);
+
+ Arrays.sort(objects);
+ Arrays.sort(currentObjects);
+
+ boolean modified = false;
+ int i=0, j=0;
+ if(currentObjects.length > 0 && objects.length > 0)
+ while(true) {
+ int cmp = currentObjects[i].compareTo(objects[j]);
+ if(cmp < 0) {
+ LOGGER.info(" remove statement");
+ if(deleteExtraObjects)
+ g.deny(currentObjects[i]);
+ else
+ g.denyStatement(subject, predicate, currentObjects[i]);
+ modified = true;
+ ++i;
+ if(i >= currentObjects.length)
+ break;
+ }
+ else if(cmp > 0) {
+ LOGGER.info(" add statement");
+ g.claim(subject, predicate, objects[j]);
+ modified = true;
+ ++j;
+ if(j >= objects.length)
+ break;
+ }
+ else {
+ ++i; ++j;
+ if(i >= currentObjects.length)
+ break;
+ if(j >= objects.length)
+ break;
+ }
+ }
+ while(i < currentObjects.length) {
+ if(deleteExtraObjects)
+ g.deny(currentObjects[i]);
+ else
+ g.denyStatement(subject, predicate, currentObjects[i]);
+ modified = true;
+ ++i;
+ }
+ while(j < objects.length) {
+ g.claim(subject, predicate, objects[j]);
+ modified = true;
+ ++j;
+ }
+ return modified;
+ }
+
+}