package dials.messages; import dials.DialsSystemConfiguration; import dials.datastore.FeatureManipulationActions; import dials.execution.ExecutionContext; import dials.model.FeatureModel; public class ContextualMessage implements FeatureManipulationActions { private ExecutionContext executionContext; private DialsSystemConfiguration configuration; public ContextualMessage(ExecutionContext executionContext, DialsSystemConfiguration configuration) { this.executionContext = executionContext; this.configuration = configuration; } public ContextualMessage(ContextualMessage message) { this(message.getExecutionContext(), message.getConfiguration()); } public ExecutionContext getExecutionContext() { return executionContext; } public DialsSystemConfiguration getConfiguration() { return configuration; } public FeatureModel getFeature() { return configuration.getRepository().getFeature(executionContext.getFeatureName()); } public void registerAbandonment() { executionContext.setAbandoned(true); } public boolean isAbandoned() { return executionContext.isAbandoned(); } @Override public void disableFeature(String featureName) { configuration.getRepository().disableFeature(featureName); } @Override public void registerFeatureAttempt(String featureName, boolean executed) { configuration.getRepository().registerFeatureAttempt(featureName, executed); } @Override public void registerFeatureError(String featureName) { configuration.getRepository().registerFeatureError(featureName); } @Override public void performDialAdjustment(String featureName, String filterName, String dataKey, String dataValue) { configuration.getRepository().performDialAdjustment(featureName, filterName, dataKey, dataValue); } }