blob: 7be240eb7b489892fc37c988e9d7aac21393324b [file] [log] [blame]
/**
* Copyright (c) 2009-2010 Thales Corporate Services S.A.S.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Thales Corporate Services S.A.S - initial API and implementation
*/
package org.eclipse.emf.importer.ui;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.egf.core.EGFCorePlugin;
import org.eclipse.egf.emf.importer.l10n.TargetPlatformEMFImporterMessages;
import org.eclipse.emf.codegen.ecore.genmodel.GenModel;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.importer.ui.contribution.ModelImporterDescriptor;
import org.eclipse.emf.importer.ui.contribution.ModelImporterManager;
/**
* @author Xavier Maysonnave
*
*/
public class TargetPlatformEMFModelWizard extends EMFModelWizard {
public TargetPlatformEMFModelWizard() {
super();
setWindowTitle(TargetPlatformEMFImporterMessages._UI_EMFWizardModel_title);
}
public TargetPlatformEMFModelWizard(IFile reloadFile) {
super(reloadFile);
setWindowTitle(TargetPlatformEMFImporterMessages._UI_ReloadWizard_title);
}
@Override
protected ModelImporterDescriptor computeSuggestedDescriptor() {
ModelImporterDescriptor descriptor = null;
if (defaultDescriptorID != null) {
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor(defaultDescriptorID);
if (descriptor != null) {
return descriptor;
}
}
if (reloadFile != null) {
URI reloadURI = URI.createPlatformResourceURI(reloadFile.getFullPath().toString(), true);
ResourceSet resourceSet = new ResourceSetImpl();
resourceSet.setURIConverter(EGFCorePlugin.getTargetPlatformURIConverter());
Resource reloadResource = null;
try {
reloadResource = resourceSet.getResource(reloadURI, true);
} catch (RuntimeException e) {
reloadResource = resourceSet.getResource(reloadURI, false);
}
if (reloadResource != null && !reloadResource.getContents().isEmpty()) {
Object content = reloadResource.getContents().get(0);
if (content instanceof GenModel) {
GenModel genModel = (GenModel) content;
if (genModel.getImporterID() != null) {
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor(genModel.getImporterID());
} else if (!genModel.getForeignModel().isEmpty()) {
String foreignModel = genModel.getForeignModel().get(0);
if (foreignModel.endsWith(".mdl")) { //$NON-NLS-1$
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor("org.eclipse.emf.importer.rose"); //$NON-NLS-1$
} else if (foreignModel.endsWith(".xsd") || foreignModel.endsWith(".wsdl")) { //$NON-NLS-1$ //$NON-NLS-2$
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor("org.eclipse.xsd.ecore.importer"); //$NON-NLS-1$
} else if (foreignModel.endsWith("@model")) { //$NON-NLS-1$
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor("org.eclipse.emf.importer.java"); //$NON-NLS-1$
} else if (foreignModel.endsWith(".ecore") || foreignModel.endsWith(".emof")) { //$NON-NLS-1$ //$NON-NLS-2$
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor("org.eclipse.emf.importer.ecore"); //$NON-NLS-1$
}
}
}
}
}
if (descriptor == null) {
if (selection != null && !selection.isEmpty()) {
Object element = selection.getFirstElement();
if (element instanceof IFile) {
String fileExtension = ((IFile) element).getFileExtension();
descriptor = ModelImporterManager.INSTANCE.getModelImporterDescriptor(selectionPage.getLastModelConverterDescriptorId());
if (descriptor == null || !descriptor.getExtensions().contains(fileExtension)) {
List<ModelImporterDescriptor> descriptors = ModelImporterManager.INSTANCE.filterModelImporterDescriptors(fileExtension);
if (!descriptors.isEmpty()) {
descriptor = descriptors.get(0);
}
}
if (descriptor != null) {
modelFile = ((IFile) element);
}
}
}
}
return descriptor;
}
}