/** * Copyright (c) 2009 Mia-Software. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fabien GIQUEL (Mia-Software) - initial API and implementation * Bjorn Tietjens * Nicolas Bros (Mia-Software) - Bug 335003 - [Discoverer] : Existing Discoverers Refactoring based on new framework *******************************************************************************/ package org.eclipse.modisco.java.discoverer.internal; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.gmt.modisco.infra.common.core.logging.MoDiscoLogger; import org.eclipse.modisco.util.atl.core.internal.AtlLaunchHelper; public class TranslateJavaModelToKdm { // resources location private static final String KDM_MM_URI = org.eclipse.gmt.modisco.omg.kdm.action.ActionPackage.eNS_URI; private static final String JAVA_MM_URI = org.eclipse.gmt.modisco.java.emf.JavaPackage.eNS_URI; private String pathToTransformation; private static final String PATH_TO_TRANSFORMATION_DEFAULT = "resources/transformations/javaToKdm.asm"; //$NON-NLS-1$ public void setPathToTransformation(final String newPathToTransformation) { this.pathToTransformation = newPathToTransformation; } public String getPathToTransformation() { return this.pathToTransformation; } public Resource getKDMModelFromJavaModelWithCustomTransformation(final URI javaSourceModelUri, final Resource javaModel, final URI kdmTargetModelUri) throws IOException { if (getPathToTransformation() == null || getPathToTransformation().length() == 0) { setPathToTransformation(TranslateJavaModelToKdm.PATH_TO_TRANSFORMATION_DEFAULT); } // relative search URL url = TranslateJavaModelToKdm.class.getResource(getPathToTransformation()); if (url == null) { // absolute search try { url = new URL(getPathToTransformation()); } catch (MalformedURLException e) { MoDiscoLogger.logError(e, "wrong URL: " + getPathToTransformation(), JavaActivator.getDefault()); //$NON-NLS-1$ } if (url == null) { url = TranslateJavaModelToKdm.class .getResource(TranslateJavaModelToKdm.PATH_TO_TRANSFORMATION_DEFAULT); } } final URL transformation = url; return TranslateJavaModelToKdm.getKDMModelFromJavaModelWithCustomTransformation( javaSourceModelUri, javaModel, transformation, kdmTargetModelUri); } public static Resource getKDMModelFromJavaModelWithCustomTransformation( final URI javaSourceModelUri, final Resource javaModel, final URL transformation, final URI kdmTargetModelUri) throws IOException { URI localKdmTargetModelUri = kdmTargetModelUri; if (kdmTargetModelUri == null) { localKdmTargetModelUri = javaSourceModelUri.trimFileExtension().appendFileExtension( "kdm"); //$NON-NLS-1$ // default value } final AtlLaunchHelper.ModelInfo inputModel = new AtlLaunchHelper.ModelInfo( "IN", javaSourceModelUri, javaModel, "java", //$NON-NLS-1$ //$NON-NLS-2$ URI.createURI(TranslateJavaModelToKdm.JAVA_MM_URI)); final AtlLaunchHelper.ModelInfo outputModel = new AtlLaunchHelper.ModelInfo( "OUT", localKdmTargetModelUri, null, "kdm", //$NON-NLS-1$ //$NON-NLS-2$ URI.createURI(TranslateJavaModelToKdm.KDM_MM_URI)); AtlLaunchHelper atlHelper = new AtlLaunchHelper(); Resource result = atlHelper.runTransformation(transformation, inputModel, outputModel); return result; } }