| /******************************************************************************* |
| * Copyright (c) 2003, 2005 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| /* |
| * Created on May 6, 2004 |
| * |
| */ |
| package org.eclipse.jst.j2ee.navigator.internal.dnd; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.jface.wizard.WizardDialog; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.OpenFailureException; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveOptions; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.impl.CommonarchiveFactoryImpl; |
| import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEModuleImportDataModelProperties; |
| import org.eclipse.jst.j2ee.internal.wizard.ImportUtil; |
| import org.eclipse.swt.dnd.FileTransfer; |
| import org.eclipse.swt.dnd.TransferData; |
| import org.eclipse.wst.common.frameworks.datamodel.IDataModel; |
| import org.eclipse.wst.common.frameworks.internal.AdaptabilityUtility; |
| import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard; |
| import org.eclipse.wst.common.navigator.internal.views.dnd.CommonNavigatorDropAdapter; |
| import org.eclipse.wst.common.navigator.internal.views.dnd.IDropValidator; |
| import org.eclipse.wst.common.navigator.internal.views.dnd.NavigatorDropActionDelegate; |
| |
| /** |
| * @author jsholl |
| * |
| */ |
| public class J2EEImportDropAction extends NavigatorDropActionDelegate implements IDropValidator { |
| private ArchiveOptions readOnlyArchiveOptions; |
| |
| public J2EEImportDropAction() { |
| readOnlyArchiveOptions = new ArchiveOptions(); |
| readOnlyArchiveOptions.setIsReadOnly(true); |
| } |
| |
| private boolean fileExistsOnDisk(String fileName) { |
| if (fileName != null && fileName.length() > 0) { |
| java.io.File file = new java.io.File(fileName); |
| return file.exists() && !file.isDirectory(); |
| } |
| return false; |
| } |
| |
| public boolean validateDrop(CommonNavigatorDropAdapter dropAdapter, Object target, int operation, TransferData transferType) { |
| if (FileTransfer.getInstance().isSupportedType(transferType)) { |
| String[] sourceNames = (String[]) FileTransfer.getInstance().nativeToJava(transferType); |
| if (sourceNames == null || sourceNames.length != 1) { //only handle one file for now |
| return false; |
| } |
| String fileName = sourceNames[0]; |
| if (!(fileName.endsWith(".ear") || fileName.endsWith(".jar") || fileName.endsWith(".war") || fileName.endsWith(".rar"))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ |
| return false; |
| } |
| if (!fileExistsOnDisk(fileName)) { |
| return false; |
| } |
| int archiveType = ImportUtil.UNKNOWN; |
| Archive archive = null; |
| try { |
| // archive = CommonarchiveFactoryImpl.getActiveFactory().openArchive(fileName); |
| // archiveType = ImportUtil.getArchiveType(archive); |
| // String[] possibleNatures = null; |
| // switch (archiveType) { |
| // case ImportUtil.EARFILE : |
| // possibleNatures = new String[]{IEARNatureConstants.NATURE_ID}; |
| // break; |
| // case ImportUtil.EJBJARFILE : |
| // possibleNatures = new String[]{IEARNatureConstants.NATURE_ID, IEJBNatureConstants.NATURE_ID}; |
| // break; |
| // case ImportUtil.CLIENTJARFILE : |
| // possibleNatures = new String[]{IEARNatureConstants.NATURE_ID, IApplicationClientNatureConstants.NATURE_ID}; |
| // break; |
| // case ImportUtil.WARFILE : |
| // possibleNatures = new String[]{IEARNatureConstants.NATURE_ID, IWebNatureConstants.J2EE_NATURE_ID}; |
| // break; |
| // case ImportUtil.RARFILE : |
| // possibleNatures = new String[]{IEARNatureConstants.NATURE_ID, IConnectorNatureConstants.NATURE_ID}; |
| // break; |
| // default : |
| // return false; |
| // } |
| // |
| // IProject project = (IProject) AdaptabilityUtility.getAdapter(target, IProject.class); |
| //TODO fix up to use components and artifact edits |
| // if (null != project) { |
| // try { |
| // boolean foundNature = false; |
| // for (int i = 0; !foundNature && i < possibleNatures.length; i++) { |
| // if (project.hasNature(possibleNatures[i])) { |
| // foundNature = true; |
| // J2EENature nature = (J2EENature) project.getNature(possibleNatures[i]); |
| // int projectJ2EEVersion = nature.getJ2EEVersion(); |
| // int archiveModuleVersion = ArchiveUtil.getFastSpecVersion((ModuleFile) archive); |
| // boolean fail = false; |
| // switch (archiveType) { |
| // case ImportUtil.EARFILE : |
| // case ImportUtil.CLIENTJARFILE : |
| // if (projectJ2EEVersion < archiveModuleVersion) { |
| // fail = true; |
| // } |
| // break; |
| // case ImportUtil.EJBJARFILE : |
| // if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_2_ID && archiveModuleVersion > J2EEVersionConstants.EJB_1_1_ID) { |
| // fail = true; |
| // } else if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_3_ID && archiveModuleVersion > J2EEVersionConstants.EJB_2_0_ID) { |
| // fail = true; |
| // } |
| // break; |
| // case ImportUtil.WARFILE : |
| // if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_2_ID && archiveModuleVersion > J2EEVersionConstants.WEB_2_2_ID) { |
| // fail = true; |
| // } else if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_3_ID && archiveModuleVersion > J2EEVersionConstants.WEB_2_3_ID) { |
| // fail = true; |
| // } |
| // break; |
| // case ImportUtil.RARFILE : |
| // if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_2_ID) { |
| // fail = true; |
| // } else if (projectJ2EEVersion == J2EEVersionConstants.J2EE_1_3_ID && archiveModuleVersion > J2EEVersionConstants.JCA_1_0_ID) { |
| // fail = true; |
| // } |
| // break; |
| // } |
| // if (fail) { |
| // return false; |
| // } |
| // return true; |
| // } |
| // } |
| // if (!foundNature) { |
| // return false; |
| // } |
| // } catch (CoreException e) { |
| // return false; |
| // } |
| // } |
| |
| } catch (Exception e) { |
| return false; |
| } finally { |
| if (null != archive && archive.isOpen()) { |
| archive.close(); |
| } |
| } |
| return true; |
| } |
| return false; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.wst.common.navigator.internal.views.navigator.dnd.NavigatorDropActionDelegate#run(org.eclipse.wst.common.navigator.internal.views.navigator.dnd.CommonNavigatorDropAdapter, |
| * java.lang.Object, java.lang.Object) |
| */ |
| public boolean run(CommonNavigatorDropAdapter dropAdapter, Object source, Object target) { |
| TransferData currentTransfer = dropAdapter.getCurrentTransfer(); |
| if (FileTransfer.getInstance().isSupportedType(currentTransfer)) { |
| final String[] fileNames = (String[]) source; |
| final String fileName = fileNames[0]; |
| DataModelWizard wizard = null; |
| IDataModel dataModel = null; |
| |
| int archiveType = ImportUtil.UNKNOWN; |
| Archive archive = null; |
| try { |
| archive = CommonarchiveFactoryImpl.getActiveFactory().openArchive(fileName); |
| archiveType = ImportUtil.getArchiveType(archive); |
| switch (archiveType) { |
| case ImportUtil.EARFILE : |
| dataModel = null;//new EnterpriseApplicationImportDataModel(); |
| break; |
| case ImportUtil.EJBJARFILE : |
| dataModel = null;//new EJBModuleImportDataModel(); |
| break; |
| case ImportUtil.CLIENTJARFILE : |
| dataModel = null;//new AppClientModuleImportDataModel(); |
| break; |
| case ImportUtil.WARFILE : |
| dataModel = null;//new WebModuleImportDataModel(); |
| break; |
| case ImportUtil.RARFILE : |
| dataModel = null;//new ConnectorModuleImportDataModel(); |
| break; |
| default : |
| return false; |
| } |
| } catch (OpenFailureException e) { |
| return false; |
| } finally { |
| if (null != archive && archive.isOpen()) { |
| archive.close(); |
| } |
| } |
| |
| dataModel.setProperty(IJ2EEModuleImportDataModelProperties.FILE_NAME, fileName); |
| |
| IProject project = (IProject) AdaptabilityUtility.getAdapter(target, IProject.class); |
| if (null != project) { |
| try { |
| if (archiveType == ImportUtil.EARFILE ) { |
| dataModel.setProperty(IJ2EEModuleImportDataModelProperties.PROJECT_NAME, project.getName()); |
| } else { |
| dataModel.setProperty(IJ2EEModuleImportDataModelProperties.EAR_COMPONENT_NAME, project.getName()); |
| dataModel.setBooleanProperty(IJ2EEModuleImportDataModelProperties.ADD_TO_EAR, true); |
| } |
| } catch (Exception e) { |
| return false; |
| } |
| } |
| switch (archiveType) { |
| case ImportUtil.EARFILE : |
| wizard = null;//new EnterpriseApplicationImportWizard((EnterpriseApplicationImportDataModel) dataModel); |
| break; |
| case ImportUtil.EJBJARFILE : |
| wizard = null;//new EJBModuleImportWizard((EJBModuleImportDataModel) dataModel); |
| break; |
| case ImportUtil.CLIENTJARFILE : |
| wizard = null;//new AppClientModuleImportWizard((AppClientModuleImportDataModel) dataModel); |
| break; |
| case ImportUtil.WARFILE : |
| wizard = null;//new WebModuleImportWizard((WebModuleImportDataModel) dataModel); |
| break; |
| case ImportUtil.RARFILE : |
| wizard = null;//new ConnectorModuleImportWizard((ConnectorModuleImportDataModel) dataModel); |
| break; |
| } |
| |
| if (null != wizard) { |
| WizardDialog dialog = new WizardDialog(getShell(), wizard); |
| dialog.open(); |
| return true; |
| } |
| } |
| return false; |
| } |
| } |