blob: a3736b3d0e3765405a31c8b793a77879adcd54ca [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010-2014, Abel Hegedus, Istvan Rath and Daniel Varro
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-v20.html.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************/
package org.eclipse.viatra.modelobfuscator.ui.handlers;
import java.util.HashMap;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.viatra.modelobfuscator.emf.simple.AbstractModelObfuscator;
import org.eclipse.viatra.modelobfuscator.emf.simple.EMFModelObfuscatorBuilder;
import org.eclipse.viatra.modelobfuscator.emf.simple.ResourceFilter;
import org.eclipse.viatra.modelobfuscator.emf.simple.SimpleEMFModelObfuscator;
/**
* This command handler executes the model obfuscator in a way that only writable resources are modified in the resource
* set of the editing domain provided by the editor.
*
* <p/>The seed used for the obfuscator is displayed in a confirmation dialog and logged to the Eclips logger with Info
* level.
*
* <p/>The obfuscation is performed with a {@link SimpleEMFModelObfuscator} in an EMF command, therefore it supports undo/redo and correctly notifies the editor to
* show a dirty state.
*
* @author Abel Hegedus
*
*/
public class EMFModelObfuscatorHandler extends AbstractModelObfuscatorHandler {
@Override
protected AbstractModelObfuscator createModelObfuscator(ResourceSet resourceSet, final EditingDomain editingDomain, ExecutionEvent event ) {
return EMFModelObfuscatorBuilder.create().setInput(resourceSet)
.setTraceMap(new HashMap<String,String>())
.setFilter(new ResourceFilter() {
@Override
public boolean avoidObfuscation(Resource resource) {
return editingDomain.isReadOnly(resource);
}
}).build();
}
}