blob: 299cc2bf17a90d1dc2ce7e5f1941bb5098cb2cf2 [file] [log] [blame]
/***************************************************************************************************
* 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.internal.jca.operations;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.jst.j2ee.application.operations.J2EEArtifactCreationDataModel;
import org.eclipse.jst.j2ee.application.operations.J2EEModuleCreationDataModel;
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.J2EEVersionConstants;
import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
import com.ibm.wtp.common.logger.proxy.Logger;
/**
* This dataModel is used for to import Connector Modules (from RAR 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 ConnectorModuleImportDataModel extends J2EEModuleImportDataModel {
/**
* Imports the specified RAR file into the specified Connector Module project.
*
* @param rarFileName
* The path to the RAR file.
* @param connectorProjectName
* The name of the Connector project where the Connector Module should be imported.
* @param addToEar
* If this is <code>true</code> then Connector project specified by
* <code>connectorProjectName</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 Connector
* 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>connectorProjectName</code> will be used.
* @since WTP 1.0
*/
public static void importArchive(String rarFileName, String connectorProjectName, boolean addToEar, String earProjectName) {
ConnectorModuleImportDataModel dataModel = new ConnectorModuleImportDataModel();
dataModel.setProperty(FILE_NAME, rarFileName);
dataModel.setProperty(PROJECT_NAME, connectorProjectName);
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 void init() {
super.init();
setIntProperty(J2EEModuleCreationDataModel.J2EE_VERSION, J2EEVersionConstants.J2EE_1_3_ID);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jst.j2ee.internal.internal.application.operations.J2EEImportDataModel#createJ2EEProjectCreationDataModel()
*/
protected J2EEArtifactCreationDataModel createJ2EEProjectCreationDataModel() {
return new ConnectorModuleCreationDataModel();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jst.j2ee.internal.internal.application.operations.J2EEImportDataModel#getType()
*/
protected int getType() {
return XMLResource.RAR_TYPE;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jst.j2ee.internal.internal.application.operations.J2EEImportDataModel#setUpArchiveFile()
*/
protected boolean openArchive(String uri) throws OpenFailureException {
setArchiveFile(CommonarchiveFactory.eINSTANCE.openRARFile(getArchiveOptions(), uri));
if (getArchiveFile() == null)
return false;
return true;
}
protected boolean doSetProperty(String propertyName, Object propertyValue) {
if (propertyName.equals(PRESERVE_PROJECT_METADATA) && ((Boolean) propertyValue).booleanValue()) {
setBooleanProperty(propertyName, false);
return true;
}
return super.doSetProperty(propertyName, propertyValue);
}
public WTPOperation getDefaultOperation() {
return new ConnectorModuleImportOperation(this);
}
}