/*******************************************************************************
* Copyright (c) 2014-2016 IncQuery Labs Ltd.
* 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:
* Akos Horvath, Abel Hegedus, Zoltan Ujhelyi, Peter Lunk - initial API and implementation
*******************************************************************************/
package org.eclipse.viatra.examples.cps.integration;
import org.eclipse.emf.mwe2.runtime.workflow.IWorkflowContext;
import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine;
import org.eclipse.viatra.query.runtime.exception.ViatraQueryException;
import org.eclipse.viatra.examples.cps.deployment.Deployment;
import org.eclipse.viatra.examples.cps.traceability.CPSToDeployment;
import org.eclipse.viatra.examples.cps.xform.m2t.monitor.DeploymentChangeDelta;
import org.eclipse.viatra.examples.cps.xform.m2t.monitor.DeploymentChangeMonitor;
import org.eclipse.viatra.integration.mwe2.IPublishTo;
import org.eclipse.viatra.integration.mwe2.mwe2impl.TransformationStep;
public class ChangeMonitorTransformationStep extends TransformationStep {
protected AdvancedViatraQueryEngine engine;
protected DeploymentChangeMonitor monitor;
protected DeploymentChangeDelta delta;
@Override
public void doInitialize(IWorkflowContext ctx) {
// create transformation
System.out.println("Initialized change monitor");
engine = (AdvancedViatraQueryEngine) ctx.get("engine");
Deployment deployment = ((CPSToDeployment) ctx.get("model")).getDeployment();
monitor = new DeploymentChangeMonitor(deployment, engine);
try {
monitor.startMonitoring();
} catch (ViatraQueryException e) {
e.printStackTrace();
}
}
@Override
public void doExecute() {
delta = monitor.createCheckpoint();
System.out.println("Checkpoint created");
}
@Override
public void publishMessages() {
for (IPublishTo iPublishTo : publishTo) {
iPublishTo.publishMessage(delta);
}
}
@Override
public void dispose() {
System.out.println("Disposed change monitor");
}
}