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.diagram.synchronization.graph;
\r
14 import org.simantics.db.WriteGraph;
\r
15 import org.simantics.db.common.request.WriteRequest;
\r
16 import org.simantics.db.exception.DatabaseException;
\r
17 import org.simantics.db.request.Write;
\r
18 import org.simantics.diagram.internal.DebugPolicy;
\r
19 import org.simantics.diagram.internal.timing.GTask;
\r
20 import org.simantics.diagram.internal.timing.Timing;
\r
21 import org.simantics.diagram.synchronization.ErrorHandler;
\r
22 import org.simantics.diagram.synchronization.IModification;
\r
23 import org.simantics.utils.logging.TimeLogger;
\r
26 * A graph database write request that composes several {@link IModification}
\r
27 * instances into a single {@link Write} request.
\r
29 * @author Tuukka Lehtonen
\r
31 * @see IModification
\r
33 public class ModificationProcessRequest extends WriteRequest {
\r
35 ErrorHandler errorHandler;
\r
36 IModification[] modifications;
\r
38 public ModificationProcessRequest(ErrorHandler errorHandler, IModification[] modifications) {
\r
39 this.errorHandler = errorHandler;
\r
40 this.modifications = modifications;
\r
44 public void perform(final WriteGraph g) throws DatabaseException {
\r
46 if (DebugPolicy.DEBUG_GRAPH_WRITEBACK)
\r
47 System.out.println(Thread.currentThread() + " Performing " + modifications.length + " modifications");
\r
48 Timing.timed("" + modifications.length + " MODIFICATIONS", new GTask() {
\r
50 public void run() throws DatabaseException {
\r
51 for (IModification m : modifications) {
\r
60 public void modification(final WriteGraph g, final IModification m) throws DatabaseException {
\r
61 Timing.timed(m.toString(), new GTask() {
\r
63 public void run() throws DatabaseException {
\r
66 if (DebugPolicy.DEBUG_GRAPH_WRITEBACK_MODIFICATION)
\r
67 System.out.println(Thread.currentThread() + " Performing modification: " + m);
\r
69 } catch (Exception e) {
\r
71 errorHandler.error(e.getMessage(), e);
\r
74 errorHandler.error(e.getMessage(), e);
\r