blob: bb96c5d2fda40482f2ba6f9018bd41fe1081c275 [file] [log] [blame]
package org.eclipse.gmf.tooling.runtime.parsers;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gmf.tooling.runtime.ocl.tracker.OclTracker;
import org.eclipse.gmf.tooling.runtime.ocl.tracker.OclTrackerFactory;
abstract class OclTrackerWrapper {
private final OclTrackerFactory myOclTrackerFactory;
private OclTracker myOclTracker;
public OclTrackerWrapper(OclTrackerFactory oclTrackerFactory) {
myOclTrackerFactory = oclTrackerFactory;
}
public OclTracker getOclTracker() {
if (myOclTracker == null) {
myOclTracker = myOclTrackerFactory.createOclTracker(getExpressionBody(), true);
}
return myOclTracker;
}
public String getUpdatedString(IAdaptable element, int flags) {
EObject target = (EObject) element.getAdapter(EObject.class);
getOclTracker().initialize(target);
return String.valueOf(getOclTracker().getValue());
}
public boolean isAffectingEvent(Object event, int flags) {
if (event instanceof Notification) {
Notification notification = (Notification) event;
return getOclTracker().handleNotification(notification);
}
return false;
}
protected abstract String getExpressionBody();
}