| /*************************************************************************************************** |
| * Copyright (c) 2003, 2004 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 |
| **************************************************************************************************/ |
| package org.eclipse.jst.j2ee.applicationclient.creation; |
| |
| import java.lang.reflect.InvocationTargetException; |
| |
| import org.eclipse.jst.j2ee.application.operations.J2EEArtifactCreationDataModel; |
| import org.eclipse.jst.j2ee.application.operations.J2EEModuleImportDataModel; |
| import org.eclipse.jst.j2ee.common.XMLResource; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.CommonarchiveFactory; |
| import org.eclipse.jst.j2ee.commonarchivecore.internal.exception.OpenFailureException; |
| import org.eclipse.jst.j2ee.internal.archive.operations.AppClientModuleImportOperation; |
| import org.eclipse.wst.common.frameworks.operations.WTPOperation; |
| |
| import com.ibm.wtp.common.logger.proxy.Logger; |
| |
| /** |
| * This dataModel is used for to import Application Client Modules (from Application Client jar |
| * files) into the workspace. |
| * |
| * This class (and all its fields and methods) is likely to change during the WTP 1.0 milestones as |
| * the new project structures are adopted. Use at your own risk. |
| * |
| * @since WTP 1.0 |
| */ |
| public final class AppClientModuleImportDataModel extends J2EEModuleImportDataModel { |
| |
| /** |
| * Imports the specified Application Client Jar file into the specified Application Client |
| * Module project. |
| * |
| * @param appClientJarFileName |
| * The path to the Application Client Jar file. |
| * @param appClientProjectName |
| * The name of the Application Client project where the Application Client Module |
| * should be imported. |
| * @param addToEar |
| * If this is <code>true</code> then Application Client project specified by |
| * <code>appClientJarFileName</code> will be added to the Enterprise Application |
| * project specified by <code>earProjectName</code>. |
| * @param earProjectName |
| * The name of the Enterprise Application project to add the specified Application |
| * Client project to. This field is only relevant if <code>addToEar</code> is set |
| * to <code>true</code>. If this is set to <code>null</code> then a default name |
| * computed from the <code>appClientJarFileName</code> will be used. |
| * @since WTP 1.0 |
| */ |
| public static void importArchive(String appClientJarFileName, String appClientProjectName, boolean addToEar, String earProjectName) { |
| AppClientModuleImportDataModel dataModel = new AppClientModuleImportDataModel(); |
| dataModel.setProperty(FILE_NAME, appClientJarFileName); |
| dataModel.setProperty(PROJECT_NAME, appClientProjectName); |
| dataModel.setBooleanProperty(ADD_TO_EAR, addToEar); |
| if (earProjectName != null) { |
| dataModel.setProperty(EAR_PROJECT, earProjectName); |
| } |
| try { |
| dataModel.getDefaultOperation().run(null); |
| } catch (InvocationTargetException e) { |
| Logger.getLogger().logError(e); |
| } catch (InterruptedException e) { |
| Logger.getLogger().logError(e); |
| } |
| } |
| |
| protected J2EEArtifactCreationDataModel createJ2EEProjectCreationDataModel() { |
| return new AppClientModuleCreationDataModel(); |
| } |
| |
| protected int getType() { |
| return XMLResource.APP_CLIENT_TYPE; |
| } |
| |
| protected boolean openArchive(String uri) throws OpenFailureException { |
| setArchiveFile(CommonarchiveFactory.eINSTANCE.openApplicationClientFile(getArchiveOptions(), uri)); |
| if (getArchiveFile() == null) |
| return false; |
| return true; |
| } |
| |
| public WTPOperation getDefaultOperation() { |
| return new AppClientModuleImportOperation(this); |
| } |
| } |