Go to the documentation of this file.00001 package org.best_of_robotics.transform.ros.to.cplusplus;
00002
00003 import java.io.IOException;
00004 import java.net.MalformedURLException;
00005 import java.net.URI;
00006 import java.net.URISyntaxException;
00007 import java.net.URL;
00008
00009 import org.best_of_robotics.transform.service.parameter.IEtlTransformParameter;
00010 import org.eclipse.core.runtime.FileLocator;
00011 import org.eclipse.epsilon.common.parse.problem.ParseProblem;
00012 import org.eclipse.epsilon.emc.emf.EmfModel;
00013 import org.eclipse.epsilon.eol.IEolExecutableModule;
00014 import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
00015 import org.eclipse.epsilon.eol.exceptions.models.EolModelLoadingException;
00016 import org.eclipse.epsilon.etl.EtlModule;
00017
00018 public class EtlTransformer {
00019
00020 private IEtlTransformParameter parameter;
00021
00022
00023 public EtlTransformer(IEtlTransformParameter etlTransformParameter) {
00024 parameter = etlTransformParameter;
00025
00026 }
00027
00028 public void transform()
00029 {
00030
00031
00032
00033 URL transformationEntry = null;
00034 try {
00035 transformationEntry = new URL(parameter.getEtlTransformPath());
00036 } catch (MalformedURLException e1) {
00037
00038 e1.printStackTrace();
00039 }
00040
00041
00042 URL resolvedTransformationURL = null;
00043 URI transformURI = null;
00044 try {
00045 resolvedTransformationURL = FileLocator
00046 .resolve(transformationEntry);
00047 transformURI = resolvedTransformationURL.toURI();
00048 } catch (IOException e) {
00049 e.printStackTrace();
00050 } catch (URISyntaxException e) {
00051 e.printStackTrace();
00052 }
00053
00054 IEolExecutableModule etlModule = new EtlModule();
00055 try {
00056 etlModule.parse(transformURI);
00057 } catch (Exception e) {
00058 e.printStackTrace();
00059 }
00060
00061 if (etlModule.getParseProblems().size() > 0) {
00062 System.err.println("Parse errors occured...");
00063 for (ParseProblem problem : etlModule.getParseProblems()) {
00064 System.err.println(problem.toString());
00065 }
00066 }
00067 etlModule.getContext().getModelRepository().addModel(createSource());
00068 etlModule.getContext().getModelRepository().addModel(createTarget());
00069 try {
00070 etlModule.execute();
00071 } catch (EolRuntimeException e) {
00072 e.printStackTrace();
00073 }
00074
00075
00076 etlModule.getContext().getModelRepository().dispose();
00077
00078 }
00079
00080 protected EmfModel createSource() {
00081 EmfModel emfModel = new EmfModel();
00082 emfModel.setName(parameter.getSourceName());
00083 emfModel.setMetamodelUri(parameter.getSourceMetaModelURI());
00084 emfModel.setModelFile(parameter.getSourceModelFilePath());
00085 emfModel.setReadOnLoad(parameter.isSourceReadOnLoad());
00086 emfModel.setStoredOnDisposal(parameter.isSourceStoreOnDisposal());
00087 try {
00088 emfModel.load();
00089 } catch (EolModelLoadingException e) {
00090 e.printStackTrace();
00091 }
00092 return emfModel;
00093 }
00094
00095 protected EmfModel createTarget() {
00096 EmfModel emfModel = new EmfModel();
00097 emfModel.setName(parameter.getTargetName());
00098 emfModel.setMetamodelUri(parameter.getTargetMetaModelURI());
00099 emfModel.setModelFile(parameter.getTargetModelFilePath());
00100 emfModel.setReadOnLoad(parameter.isTargetReadOnLoad());
00101 emfModel.setStoredOnDisposal(parameter.isTargetStoreOnDisposal());
00102 try {
00103 emfModel.load();
00104 } catch (EolModelLoadingException e) {
00105 e.printStackTrace();
00106 }
00107 return emfModel;
00108 }
00109
00110
00111 }