blob: bb0f37703944208be959ea171175930afebfa3b8 [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:
* Nicolas Guyomar (Mia-Software) - initial API and implementation
* Nicolas Bros (Mia-Software) - adapted to new discovery framework (Bug 335003)
*********************************************************************************/
package org.eclipse.modisco.jee.jsp.discoverer.actions;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.facet.util.emf.core.IBrowserRegistry;
import org.eclipse.gmt.modisco.infra.common.core.logging.MoDiscoLogger;
import org.eclipse.gmt.modisco.infra.discoverymanager.DiscoveryParameter;
import org.eclipse.modisco.infra.discovery.ui.Activator;
import org.eclipse.modisco.jee.jsp.discoverer.AbstractJspDiscoverer;
import org.eclipse.modisco.jee.jsp.discoverer.DiscoverJspModelFromJavaElement;
import org.eclipse.modisco.jee.jsp.discoverer.DiscoverJspModelFromResource;
import org.eclipse.modisco.jee.jsp.discoverer.JspActivator;
/**
* @deprecated use {@link DiscoverJspModelFromResource} or {@link DiscoverJspModelFromJavaElement}
* instead
*/
@Deprecated
public class DiscoverJspModelFromFile extends DefaultDiscoverer {
private static List<DiscoveryParameter> parametersKeys = null;
/**
* Method called when the user right clicks on a file to know whether to display this discoverer
*/
public boolean isApplicableTo(final Object source) {
boolean result = false;
if (source instanceof IFile && ((IFile) source).exists()) {
IFile myFile = (IFile) source;
result = (myFile.getFileExtension() != null)
&& AbstractJspDiscoverer.isJspExtension(myFile.getFileExtension());
}
return result;
}
public void discoverElement(final Object source,
final Map<DiscoveryParameter, Object> parameters) {
Job job = new Job("discovering Jsp model") { //$NON-NLS-1$
@Override
protected IStatus run(final IProgressMonitor monitor) {
try {
final DiscoverJspModelFromResource delegateDiscoverer = new DiscoverJspModelFromResource();
boolean serializeXMI = false;
if (parameters != null
&& parameters.get(DefaultDiscoverer.PARAMETER_SERIALIZE_XMI) != null) {
serializeXMI = ((Boolean) parameters
.get(DefaultDiscoverer.PARAMETER_SERIALIZE_XMI)).booleanValue();
}
boolean silent = false;
if (parameters != null
&& parameters.get(DefaultDiscoverer.PARAMETER_SILENT_MODE) != null) {
silent = ((Boolean) parameters.get(DefaultDiscoverer.PARAMETER_SILENT_MODE))
.booleanValue();
}
setResourceResult(null);
delegateDiscoverer.setSerializeTarget(serializeXMI);
if (source instanceof IFile) {
IFile ifile = (IFile) source;
IProject project = ifile.getProject();
delegateDiscoverer.setTargetURI(URI.createPlatformResourceURI(project
.getFullPath().append(project.getName())
.addFileExtension("jspxmi").toOSString(), true)); //$NON-NLS-1$
delegateDiscoverer.discoverElement(ifile, monitor);
} else if (source instanceof File) {
File file = (File) source;
delegateDiscoverer.setTargetURI(URI.createFileURI(file.getAbsolutePath()
.concat(".xmi"))); //$NON-NLS-1$
delegateDiscoverer.discoverElement(file, monitor);
} else {
throw new IllegalArgumentException();
}
setResourceResult(delegateDiscoverer.getTargetModel());
if (!silent && getResourceResult() != null) {
IBrowserRegistry.INSTANCE.browseResource(getResourceResult());
}
} catch (Exception e) {
MoDiscoLogger.logError(e, "An error occured during model discovery from " //$NON-NLS-1$
+ source.toString(), JspActivator.getDefault());
}
return Status.OK_STATUS;
}
};
job.schedule();
try {
job.join();
} catch (InterruptedException e) {
MoDiscoLogger.logError(e, Activator.getDefault());
}
if (parameters != null) {
parameters.put(DefaultDiscoverer.PARAMETER_TARGET_RESOURCE, getResourceResult());
}
}
public Resource discoverElement(final Object source, final URI target) {
Map<DiscoveryParameter, Object> parameters = new HashMap<DiscoveryParameter, Object>();
parameters.put(DefaultDiscoverer.PARAMETER_SILENT_MODE, new Boolean(false));
parameters.put(DefaultDiscoverer.PARAMETER_SERIALIZE_XMI, new Boolean(false));
discoverElement(source, parameters);
return (Resource) parameters.get(DefaultDiscoverer.PARAMETER_TARGET_RESOURCE);
}
public List<DiscoveryParameter> getDiscovererParameters() {
if (DiscoverJspModelFromFile.parametersKeys == null) {
DiscoverJspModelFromFile.parametersKeys = new ArrayList<DiscoveryParameter>();
DiscoverJspModelFromFile.parametersKeys.add(DefaultDiscoverer.PARAMETER_SILENT_MODE);
DiscoverJspModelFromFile.parametersKeys
.add(DefaultDiscoverer.PARAMETER_TARGET_RESOURCE);
DiscoverJspModelFromFile.parametersKeys.add(DefaultDiscoverer.PARAMETER_SERIALIZE_XMI);
}
return DiscoverJspModelFromFile.parametersKeys;
}
}