| 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); |
| } |
| } |