blob: f797afd7dc038556b18c6dc2705a4c45552d4313 [file] [log] [blame]
package org.eclipse.papyrus.ease.test;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.ease.modules.AbstractScriptModule;
import org.eclipse.ease.modules.WrapToScript;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.xmi.XMLResource;
import org.eclipse.papyrus.ease.test.fmi.FMISimulatorHandler;
import org.eclipse.papyrus.moka.fmi.modeldescription.DocumentRoot;
import org.eclipse.papyrus.moka.fmi.modeldescription.FmiFactory;
import org.eclipse.papyrus.moka.fmi.modeldescription.FmiModelDescriptionType;
import org.eclipse.papyrus.moka.fmi.modeldescription.util.FmiResourceFactoryImpl;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.uml2.uml.Class;
public class FMIModule extends AbstractScriptModule {
@WrapToScript
public void generateModelDescription(Class fmuClass) {
FmiModelDescriptionType desc = ModelDescriptionGenerator.getModelDescription(fmuClass, fmuClass.getName());
if (desc != null) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
DirectoryDialog fd = new DirectoryDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), SWT.SAVE);
fd.setText("Save model description");
String selected = fd.open();
if (selected != null) {
FmiResourceFactoryImpl resFact = new FmiResourceFactoryImpl();
URI uri = URI.createFileURI(selected);
uri= uri.appendSegment(fmuClass.getName()).appendSegment("modelDescription.xml");
Resource outputRes = resFact.createResource(uri);
//Resource outputRes = resSet.createResource(URI.createFileURI(selected));
DocumentRoot root = FmiFactory.eINSTANCE.createDocumentRoot();
root.setFmiModelDescription(desc);
outputRes.getContents().add(root);
Map<Object, Object> options= new HashMap<>();
options.put(XMLResource.OPTION_ENCODING, "utf-8");
try {
outputRes.save(options);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
}
@WrapToScript
public FMISimulatorHandler getSimulatorHandler(Class simulatorClass) {
EcoreUtil.resolveAll(simulatorClass);
return new FMISimulatorHandler(simulatorClass);
}
}