Skip to content

Commit 59cb510

Browse files
authored
Reenable multidimensionnal trace saving (#206)
* rename compute class equivalence option Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr> * reenable save of trace model add user configurable addon option to save trace on step add user configurable addon option to save trace on engine stop fix #204 fix #205 Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr> * use default value of the addon option specification in launchconf Signed-off-by: Didier Vojtisek <didier.vojtisek@inria.fr>
1 parent f97db11 commit 59cb510

File tree

5 files changed

+44
-12
lines changed

5 files changed

+44
-12
lines changed

framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/tabs/AbstractLaunchConfigurationDataProcessingTab.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ public void initializeFrom(ILaunchConfiguration configuration) {
190190
Button checkbox = configWidget.mainCheckButton;
191191
checkbox.setSelection(value);
192192
configWidget.setOptionsEnabled(value);
193-
configWidget.optionInitializeFrom(configuration);
193+
configWidget.optionInitializeFrom(configuration, extension);
194194
} catch (CoreException e) {
195195
Activator.error(e.getMessage(), e);
196196
}
@@ -212,7 +212,7 @@ public void initializeFrom(ILaunchConfiguration configuration) {
212212
Button checkbox = configWidget.mainCheckButton;
213213
checkbox.setSelection(value);
214214
configWidget.setOptionsEnabled(value);
215-
configWidget.optionInitializeFrom(configuration);
215+
configWidget.optionInitializeFrom(configuration, extension);
216216
} catch (CoreException e) {
217217
Activator.error(e.getMessage(), e);
218218
}

framework/execution_framework/plugins/org.eclipse.gemoc.executionframework.engine.ui/src/org/eclipse/gemoc/executionframework/engine/ui/launcher/tabs/EngineAddonLaunchConfigWidget.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.eclipse.gemoc.executionframework.engine.ui.launcher.tabs;
22

33
import java.util.HashMap;
4+
import java.util.Optional;
45

56
import org.eclipse.core.runtime.CoreException;
67
import org.eclipse.debug.core.ILaunchConfiguration;
@@ -135,12 +136,14 @@ public void setOptionsEnabled(boolean enabled) {
135136
}
136137

137138

138-
public void optionInitializeFrom(ILaunchConfiguration configuration) {
139+
public void optionInitializeFrom(ILaunchConfiguration configuration, EngineAddonSpecificationExtension extension) {
139140
if( optionGroup != null) {
140141
for(EngineAddonBooleanOptionSpecificationExtension booleanOption : booleanOptionButtons.keySet()) {
141142
try {
142143
String key = booleanOption.getId();
143-
boolean value = configuration.getAttribute(key, false);
144+
Optional<EngineAddonBooleanOptionSpecificationExtension> booleanOptionSpec = extension.getAddonBooleanOptionSpecificationExtensions().stream().filter(s -> key.equals(s.getId()) ).findFirst();
145+
boolean defaultValue = booleanOptionSpec.isPresent() ? booleanOptionSpec.get().getDefaultValue() : false;
146+
boolean value = configuration.getAttribute(key, defaultValue);
144147
booleanOptionButtons.get(booleanOption).setSelection(value);
145148
} catch (CoreException e) {
146149
Activator.error(e.getMessage(), e);

framework/framework_commons/plugins/org.eclipse.gemoc.xdsmlframework.api/src/org/eclipse/gemoc/xdsmlframework/api/extensions/engine_addon/EngineAddonBooleanOptionSpecificationExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public EngineAddonBooleanOptionSpecificationExtension(IConfigurationElement conf
2323

2424
public boolean getDefaultValue()
2525
{
26-
return getAttribute(EngineAddonSpecificationExtensionPoint.GEMOC_ENGINE_ADDON_EXTENSION_POINT_OPTION_DEFAULTVALUE).equalsIgnoreCase("true");
26+
String defaultValueString = getAttribute(EngineAddonSpecificationExtensionPoint.GEMOC_ENGINE_ADDON_EXTENSION_POINT_OPTION_DEFAULTVALUE);
27+
return (defaultValueString != null ? defaultValueString : "false" ).equalsIgnoreCase("true");
2728
}
2829

2930
}

trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/plugin.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,21 @@
2525
shortDescription="Data Trace support for any language">
2626
<addon_booleanOption
2727
defaultValue="false"
28-
id="org.eclipse.gemoc.trace.gemoc.addon_booleanOption"
28+
id="org.eclipse.gemoc.trace.gemoc.addon_equivClassComputing_booleanOption"
2929
name="Equivalency classes computing"
3030
shortDescription="Activate equivalency classes computing during trace recording (warning this is time consumming on long running models that don&apos;t have equivalent states)">
3131
</addon_booleanOption>
32+
<addon_booleanOption
33+
id="org.eclipse.gemoc.trace.gemoc.addon_saveTraceOnStep_booleanOption"
34+
name="Save trace on each step"
35+
shortDescription="Save trace on each step">
36+
</addon_booleanOption>
37+
<addon_booleanOption
38+
defaultValue="true"
39+
id="org.eclipse.gemoc.trace.gemoc.addon_saveTraceOnEngineStop_booleanOption"
40+
name="Save trace on engine stop"
41+
shortDescription="Activate trace saving when the engine stops">
42+
</addon_booleanOption>
3243
</addon>
3344
</extension>
3445
</plugin>

trace/generator/plugins/org.eclipse.gemoc.trace.gemoc/src/org/eclipse/gemoc/trace/gemoc/traceaddon/AbstractTraceAddon.xtend

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine
4444
import org.eclipse.gemoc.xdsmlframework.api.engine_addon.IEngineAddon
4545
import org.eclipse.gemoc.xdsmlframework.api.engine_addon.modelchangelistener.BatchModelChangeListener
4646
import org.eclipse.gemoc.xdsmlframework.api.extensions.engine_addon.EngineAddonSpecificationExtensionPoint
47+
import org.eclipse.gemoc.trace.gemoc.Activator
4748

4849
abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTraceAddon<Step<?>, State<?, ?>, TracedObject<?>, Dimension<?>, Value<?>> {
4950

@@ -59,6 +60,8 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac
5960

6061

6162
protected boolean activateUpdateEquivalenceClasses = true;
63+
protected boolean activateSaveOnEveryStep = true;
64+
protected boolean activateSaveOnEngineStop = true;
6265

6366
protected abstract def ITraceConstructor constructTraceConstructor(Resource modelResource, Resource traceResource,
6467
Map<EObject, TracedObject<?>> exeToTraced)
@@ -128,10 +131,13 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac
128131
// Updating the state of the trace explorer
129132
traceExplorer.updateCallStack(step)
130133
])
131-
/*try {
132-
traceConstructor.save()
133-
} catch (Throwable t) {
134-
}*/
134+
if(activateSaveOnEveryStep) {
135+
try {
136+
traceConstructor.save()
137+
} catch (Throwable t) {
138+
Activator.warn("Error while saving trace",t)
139+
}
140+
}
135141
}
136142
}
137143

@@ -144,8 +150,10 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac
144150

145151

146152
// load addon options from the execution context
147-
this.activateUpdateEquivalenceClasses = _executionContext.runConfiguration.getAttribute("org.eclipse.gemoc.trace.gemoc.addon_booleanOption", false);
148-
153+
this.activateUpdateEquivalenceClasses = _executionContext.runConfiguration.getAttribute("org.eclipse.gemoc.trace.gemoc.addon_equivClassComputing_booleanOption", false);
154+
this.activateSaveOnEveryStep = _executionContext.runConfiguration.getAttribute("org.eclipse.gemoc.trace.gemoc.addon_saveTraceOnStep_booleanOption", false);
155+
this.activateSaveOnEngineStop = _executionContext.runConfiguration.getAttribute("org.eclipse.gemoc.trace.gemoc.addon_saveTraceOnEngineStop_booleanOption", false);
156+
149157
val modelResource = _executionContext.resourceModel
150158

151159
// Creating the resource of the trace
@@ -189,6 +197,15 @@ abstract class AbstractTraceAddon implements IEngineAddon, IMultiDimensionalTrac
189197
}
190198
}
191199
}
200+
override engineStopped(IExecutionEngine<?> engine) {
201+
if(activateSaveOnEngineStop) {
202+
try {
203+
traceConstructor.save()
204+
} catch (Throwable t) {
205+
Activator.warn("Error while saving trace",t)
206+
}
207+
}
208+
}
192209

193210
/**
194211
* Wrapper using lambda to always use a RecordingCommand when modifying the trace

0 commit comments

Comments
 (0)