blob: 7ae66e89b920f921469796cf49bc909fbf34176a [file] [log] [blame]
/*
* Copyright (c) 2009, 2011 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:
* Gabriel Barbier (Mia-Software) - initial API and implementation
*/
package org.eclipse.gmt.modisco.java.actions;
import java.io.InputStream;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.gmt.modisco.infra.common.core.logging.MoDiscoLogger;
import org.eclipse.gmt.modisco.infra.discoverymanager.AbstractDiscovererImpl;
import org.eclipse.gmt.modisco.infra.discoverymanager.DiscoveryParameter;
import org.eclipse.gmt.modisco.java.JavaActivator;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
/**
* @author Gabriel Barbier
* @deprecated the whole plug-in is replaced by
* "org.eclipse.modisco.java.discoverer" (without the "gmt" part),
* cf. https://bugs.eclipse.org/bugs/show_bug.cgi?id=470728
*/
@Deprecated
public class TransformationsExporter extends AbstractDiscovererImpl {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gmt.modisco.infra.discoverymanager.Discoverer#discoverElement
* (java.lang.Object, java.util.Map)
*/
public void discoverElement(final Object source,
final Map<DiscoveryParameter, Object> parameters) {
IPath ipath = (IPath) source;
exportJavaToKdmTransformation(ipath);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.gmt.modisco.infra.discoverymanager.Discoverer#isApplicableTo
* (java.lang.Object)
*/
public boolean isApplicableTo(final Object source) {
boolean result = false;
if (source instanceof IPath) {
// should we test file extension ?
result = true;
}
return result;
}
public void exportJavaToKdmTransformation(final IPath pathParameter) {
final InputStream transfoFileStream = this.getClass().getResourceAsStream(
"resources/transformations/javaToKdm.atl"); //$NON-NLS-1$
IPath path = pathParameter;
if (path.getFileExtension() == null || !path.getFileExtension().equals("atl")) { //$NON-NLS-1$
path = path.addFileExtension("atl"); //$NON-NLS-1$
}
final IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
final IProject destinationProject = file.getProject();
Job job = new Job("exporting ATL transformation") { //$NON-NLS-1$
@Override
protected IStatus run(final IProgressMonitor monitor) {
try {
/*
* whatever method is used, the transfoFileStream flow will
* be correctly closed
*/
if (file.exists()) {
file.setContents(transfoFileStream, IResource.FORCE, monitor);
} else {
file.create(transfoFileStream, IResource.FORCE, monitor);
}
} catch (CoreException e) {
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
};
// when copy job is done, open the file
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(final IJobChangeEvent event) {
Display.getDefault().asyncExec(new Runnable() {
public void run() {
try {
destinationProject.refreshLocal(IResource.DEPTH_INFINITE,
new NullProgressMonitor());
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IDE.openEditor(page, file);
} catch (Exception e) {
MoDiscoLogger.logError(e, JavaActivator.getDefault());
}
}
});
}
});
job.schedule();
}
}