print mapping file for regular EMF obfuscator as well
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.runtime/src/org/eclipse/viatra/modelobfuscator/emf/simple/EMFModelObfuscatorBuilder.xtend b/plugins/org.eclipse.viatra.modelobfuscator.runtime/src/org/eclipse/viatra/modelobfuscator/emf/simple/EMFModelObfuscatorBuilder.xtend
index a7c74b7..14581da 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.runtime/src/org/eclipse/viatra/modelobfuscator/emf/simple/EMFModelObfuscatorBuilder.xtend
+++ b/plugins/org.eclipse.viatra.modelobfuscator.runtime/src/org/eclipse/viatra/modelobfuscator/emf/simple/EMFModelObfuscatorBuilder.xtend
@@ -37,7 +37,7 @@
private ResourceFilter filter
private String saltString = ""
private BigInteger seedNumber = new BigInteger(ObfuscatorUtil.generateBase36RandomString(32), 36)
- private String prefix = ""
+ private String prefix = "o"
private Map<String, String> obfuscationMap = null
/**
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLModelObfuscatorHandler.java b/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLModelObfuscatorHandler.java
index 5e9e82f..946d24f 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLModelObfuscatorHandler.java
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLModelObfuscatorHandler.java
@@ -10,43 +10,28 @@
*******************************************************************************/
package org.eclipse.viatra.modelobfuscator.ui.uml.handlers;
-import java.io.ByteArrayInputStream;
-import java.io.UnsupportedEncodingException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.HashMap;
import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.Path;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.viatra.modelobfuscator.api.ModelObfuscator;
import org.eclipse.viatra.modelobfuscator.emf.simple.ResourceFilter;
import org.eclipse.viatra.modelobfuscator.emf.uml.UMLObfuscatorBuilder;
import org.eclipse.viatra.modelobfuscator.ui.handlers.AbstractModelObfuscatorHandler;
-import org.eclipse.viatra.modelobfuscator.ui.uml.util.UMLHelper;
public class UMLModelObfuscatorHandler extends AbstractModelObfuscatorHandler {
- private String mapFilePath;
-
- @Override
+ @Override
protected ModelObfuscator createModelObfuscator(ResourceSet resourceSet, final EditingDomain editingDomain, ExecutionEvent event) {
final Resource selectedResource = getSelectedResource(event);
if(selectedResource==null) {
MessageDialog.openInformation(HandlerUtil.getActiveShell(event), "Model obfuscation", "Sorry, there is no selected resource. You may need to open a diagram.");
return null;
}
- mapFilePath = deleteUmlExtension(selectedResource.getURI().toPlatformString(true))+".mapping_"+getDate();
return UMLObfuscatorBuilder.create().setInput(resourceSet)
.setTraceMap(new HashMap<String,String>())
.setFilter(new ResourceFilter() {
@@ -57,46 +42,4 @@
}).build();
}
- private Resource getSelectedResource(ExecutionEvent event) {
- ISelection selection = HandlerUtil.getCurrentSelection(event);
-
- if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).toList().size()>0){
- Object selectedElement = ((IStructuredSelection)selection).toList().get(0);
- return UMLHelper.getResource(selectedElement);
- }
- return null;
- }
-
- private String deleteUmlExtension(String platformString) {
- return platformString.substring(0, platformString.lastIndexOf(".uml"));
- }
-
- private String getDate() {
- DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmm");
- Date date = new Date();
- return dateFormat.format(date);
- }
-
- @Override
- protected void print(String content) {
- try {
- IFile mapFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(mapFilePath+".csv"));
- int i = 0;
- while(mapFile.exists()) {
- i++;
- mapFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(mapFilePath+"_"+i+".csv"));
- }
- try {
- mapFile.create(new ByteArrayInputStream(content.getBytes("UTF-8")), true, null);
- } catch (CoreException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- super.print(content);
- }
- }
-
}
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLProfileReplacerHandler.java b/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLProfileReplacerHandler.java
index a0165d3..2caae61 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLProfileReplacerHandler.java
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/handlers/UMLProfileReplacerHandler.java
@@ -43,7 +43,7 @@
import org.eclipse.uml2.uml.Profile;
import org.eclipse.viatra.modelobfuscator.emf.uml.SimpleUMLProfileReplacer;
import org.eclipse.viatra.modelobfuscator.emf.uml.UMLProfileReplacerBuilder;
-import org.eclipse.viatra.modelobfuscator.ui.uml.util.UMLHelper;
+import org.eclipse.viatra.modelobfuscator.ui.util.ModelObfuscatorUIHelper;
public class UMLProfileReplacerHandler extends AbstractHandler {
@@ -151,7 +151,7 @@
if (selection instanceof IStructuredSelection
&& ((IStructuredSelection) selection).toList().size() > 0) {
Object selectedElement = ((IStructuredSelection) selection).toList().get(0);
- Resource selectedResource = UMLHelper.getResource(selectedElement);
+ Resource selectedResource = ModelObfuscatorUIHelper.getResource(selectedElement);
EObject eObject = selectedResource.getContents().get(0);
if(eObject instanceof Model)
return (Model) eObject;
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.viatra.modelobfuscator.ui/META-INF/MANIFEST.MF
index 5e246aa..cb83598 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui/META-INF/MANIFEST.MF
@@ -13,4 +13,6 @@
org.eclipse.emf.transaction
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.viatra.modelobfuscator.ui.handlers
+Export-Package: org.eclipse.viatra.modelobfuscator.ui,
+ org.eclipse.viatra.modelobfuscator.ui.handlers,
+ org.eclipse.viatra.modelobfuscator.ui.util
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/AbstractModelObfuscatorHandler.java b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/AbstractModelObfuscatorHandler.java
index af5b358..6fef7b7 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/AbstractModelObfuscatorHandler.java
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/AbstractModelObfuscatorHandler.java
@@ -11,30 +11,51 @@
*******************************************************************************/
package org.eclipse.viatra.modelobfuscator.ui.handlers;
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.Map;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.domain.IEditingDomainProvider;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.viatra.modelobfuscator.api.ModelObfuscator;
import org.eclipse.viatra.modelobfuscator.ui.ModelObfuscatorUIPlugin;
+import org.eclipse.viatra.modelobfuscator.ui.util.ModelObfuscatorUIHelper;
public abstract class AbstractModelObfuscatorHandler extends AbstractHandler {
- protected abstract ModelObfuscator createModelObfuscator(ResourceSet resourceSet, final EditingDomain editingDomain, ExecutionEvent event);
+ protected String mapFilePath;
+
+ protected abstract ModelObfuscator createModelObfuscator(ResourceSet resourceSet, final EditingDomain editingDomain, ExecutionEvent event);
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IEditorPart editorPart = HandlerUtil.getActiveEditor(event);
+ final Resource selectedResource = getSelectedResource(event);
+ if(selectedResource==null) {
+ MessageDialog.openInformation(HandlerUtil.getActiveShell(event), "Model obfuscation", "Sorry, there is no selected resource. You may need to open a diagram.");
+ return null;
+ }
+ final String mapFilePath = selectedResource.getURI().toPlatformString(true)+".mapping_"+getDate();
ResourceSet resourceSet = null;
if (editorPart instanceof IEditingDomainProvider) {
IEditingDomainProvider editingDomainProvider = (IEditingDomainProvider) editorPart;
@@ -53,16 +74,16 @@
StringBuilder messageBuilder = new StringBuilder();
messageBuilder.append("This tool replaces all string attribute values with obfuscated values.\n");
messageBuilder.append("You can Undo the operation or restore the original values with\n");
- messageBuilder.append("- seed:").append(seed);
+ messageBuilder.append("- seed: ").append(seed);
if(!salt.isEmpty()){
- messageBuilder.append("\n- salt:").append(salt);
+ messageBuilder.append("\n- salt: ").append(salt);
}
if(!prefix.isEmpty()){
- messageBuilder.append("\n- prefix:").append(prefix);
+ messageBuilder.append("\n- prefix: ").append(prefix);
}
String logMessage = messageBuilder.toString();
messageBuilder.append("\n(logged also as an Info level event)");
- messageBuilder.append("Do you want to perform model obuscation?");
+ messageBuilder.append("\nDo you want to perform model obfuscation?");
String message = messageBuilder.toString();
boolean confirmed = MessageDialog.openConfirm(
HandlerUtil.getActiveShell(event),
@@ -108,7 +129,7 @@
for (String key : oMap.keySet()) {
mapContent.append("\n"+key+";"+oMap.get(key)+";");
}
- print(mapContent.toString());
+ print(mapFilePath, mapContent.toString());
}
}
};
@@ -119,10 +140,40 @@
return null;
}
- /**
- * Subclasses should override this method to store the printed content to file
- */
- protected void print(String content) {
- System.out.println(content);
- }
+ private String getDate() {
+ DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmm");
+ Date date = new Date();
+ return dateFormat.format(date);
+ }
+
+ protected Resource getSelectedResource(ExecutionEvent event) {
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+
+ if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).toList().size()>0){
+ Object selectedElement = ((IStructuredSelection)selection).toList().get(0);
+ return ModelObfuscatorUIHelper.getResource(selectedElement);
+ }
+ return null;
+ }
+
+ protected void print(String mapFilePath,String content) {
+ try {
+ IFile mapFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(mapFilePath+".csv"));
+ int i = 0;
+ while(mapFile.exists()) {
+ i++;
+ mapFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(mapFilePath+"_"+i+".csv"));
+ }
+ try {
+ mapFile.create(new ByteArrayInputStream(content.getBytes("UTF-8")), true, null);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ System.out.println(content);
+ }
+ }
}
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/EMFModelObfuscatorHandler.java b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/EMFModelObfuscatorHandler.java
index 0cdc376..04d96c8 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/EMFModelObfuscatorHandler.java
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/handlers/EMFModelObfuscatorHandler.java
@@ -10,6 +10,8 @@
*******************************************************************************/
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;
@@ -37,6 +39,7 @@
@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) {
diff --git a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/util/UMLHelper.java b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/util/ModelObfuscatorUIHelper.java
similarity index 90%
rename from plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/util/UMLHelper.java
rename to plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/util/ModelObfuscatorUIHelper.java
index cc7e967..8780a60 100644
--- a/plugins/org.eclipse.viatra.modelobfuscator.ui.uml/src/org/eclipse/viatra/modelobfuscator/ui/uml/util/UMLHelper.java
+++ b/plugins/org.eclipse.viatra.modelobfuscator.ui/src/org/eclipse/viatra/modelobfuscator/ui/util/ModelObfuscatorUIHelper.java
@@ -8,15 +8,15 @@
* Contributors:
* Tamas Borbas - initial API and implementation
*******************************************************************************/
-package org.eclipse.viatra.modelobfuscator.ui.uml.util;
+package org.eclipse.viatra.modelobfuscator.ui.util;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
-public class UMLHelper {
- protected UMLHelper() {}
+public class ModelObfuscatorUIHelper {
+ protected ModelObfuscatorUIHelper() {}
public static Resource getResource(Object element) {
if (element instanceof EObject){