diff options
Diffstat (limited to 'plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddUtilityProjectToEARDataModel.java')
-rw-r--r-- | plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddUtilityProjectToEARDataModel.java | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddUtilityProjectToEARDataModel.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddUtilityProjectToEARDataModel.java new file mode 100644 index 000000000..71ab6c929 --- /dev/null +++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/AddUtilityProjectToEARDataModel.java @@ -0,0 +1,224 @@ +/******************************************************************************* + * 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 + *******************************************************************************/ +/* + * Created on Nov 25, 2003 + * + * To change the template for this generated file go to Window>Preferences>Java>Code Generation>Code and Comments + */ +package org.eclipse.jst.j2ee.application.internal.operations; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jst.j2ee.common.XMLResource; +import org.eclipse.jst.j2ee.internal.earcreation.EARCreationResourceHandler; +import org.eclipse.jst.j2ee.internal.earcreation.EAREditModel; +import org.eclipse.jst.j2ee.internal.earcreation.EARNatureRuntime; +import org.eclipse.jst.j2ee.internal.earcreation.modulemap.UtilityJARMapping; +import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; +import org.eclipse.jst.j2ee.internal.servertarget.ServerTargetDataModel; +import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation; +import org.eclipse.wst.common.modulecore.WorkbenchComponent; +import org.eclipse.wst.common.modulecore.internal.util.IModuleConstants; +import org.eclipse.wst.server.core.IRuntime; +import org.eclipse.wst.server.core.ServerCore; +import org.eclispe.wst.common.frameworks.internal.plugin.WTPCommonPlugin; + +/** + * @author DABERG + * + * To change the template for this generated type comment go to Window>Preferences>Java>Code + * Generation>Code and Comments + */ +public class AddUtilityProjectToEARDataModel extends AddArchiveToEARDataModel { + /** + * (non-Javadoc) + * * @deprecated - This method is deprecated module must be passed + * @see org.eclipse.jst.j2ee.internal.internal.application.operations.AddArchiveProjectToEARDataModel#getDefaultArchiveURI() + */ + public static AddUtilityProjectToEARDataModel createAddToEARDataModel(String earProjectName, IProject moduleProject) { + AddUtilityProjectToEARDataModel model = new AddUtilityProjectToEARDataModel(); + model.setProperty(AddModuleToEARDataModel.PROJECT_NAME, earProjectName); + //model.setProperty(AddModuleToEARDataModel.ARCHIVE_PROJECT, moduleProject); + return model; + } + public static AddUtilityProjectToEARDataModel createAddToEARDataModel(String earModuleName, WorkbenchComponent module) { + AddUtilityProjectToEARDataModel model = new AddUtilityProjectToEARDataModel(); + model.setProperty(AddModuleToEARDataModel.MODULE_NAME, earModuleName); + model.setProperty(AddModuleToEARDataModel.ARCHIVE_MODULE, module); + return model; + } + private static final String NESTED_MODEL_MANIFEST = "AddUtilityProjectToEARDataModel.NESTED_MODEL_MANIFEST"; //$NON-NLS-1$ + private static final String NESTED_MODEL_SERVER_TARGET = "AddUtilityProjectToEARDataModel.NESTED_MODEL_SERVER_TARGET"; //$NON-NLS-1$ + + private UpdateManifestDataModel manifestModel; + private ServerTargetDataModel serverTargetModel; + + public WTPOperation getDefaultOperation() { + return new AddArchiveProjectToEAROperation(this); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.wst.common.frameworks.internal.operation.WTPOperationDataModel#initNestedModels() + */ + protected void initNestedModels() { + super.initNestedModels(); + manifestModel = new UpdateManifestDataModel(); + addNestedModel(NESTED_MODEL_MANIFEST, manifestModel); + serverTargetModel = new ServerTargetDataModel(); + addNestedModel(NESTED_MODEL_SERVER_TARGET, serverTargetModel); + } + + /** + * + */ + private void updateServerTargetIDs() { + EARNatureRuntime nature = EARNatureRuntime.getRuntime(getTargetProject()); + if (nature != null) { + serverTargetModel.setIntProperty(ServerTargetDataModel.J2EE_VERSION_ID, nature.getJ2EEVersion()); + IRuntime targetType = ServerCore.getProjectProperties(getTargetProject()).getRuntimeTarget(); + if (targetType != null) + serverTargetModel.setProperty(ServerTargetDataModel.RUNTIME_TARGET_ID, targetType.getId()); + //We need to use the EAR type for now. + serverTargetModel.setIntProperty(ServerTargetDataModel.DEPLOYMENT_TYPE_ID, XMLResource.APPLICATION_TYPE); + } + } + + public String getUtilityJARUriInFirstEAR(IProject utilProject) { + Object key = new Object(); + EARNatureRuntime earNature = J2EEProjectUtilities.getFirstReferencingEARProject(utilProject); + if (earNature != null) { + EAREditModel model; + UtilityJARMapping mapping; + model = earNature.getEarEditModelForRead(key); + try { + mapping = model.getUtilityJARMapping(utilProject); + if (mapping != null && mapping.getUri() != null && mapping.getUri().length() > 0) + return mapping.getUri(); + } finally { + model.releaseAccess(key); + } + } + return null; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.wst.common.frameworks.internal.operation.WTPOperationDataModel#doSetProperty(java.lang.String, + * java.lang.Object) + */ + protected boolean doSetProperty(String propertyName, Object propertyValue) { + boolean result = super.doSetProperty(propertyName, propertyValue); + if (propertyName.equals(ARCHIVE_MODULE)) { + WorkbenchComponent wbComp = (WorkbenchComponent) propertyValue; + IProject proj = getProjectForGivenComponent(wbComp); + updateManifestModel(proj); + updateServerTargetModel(proj); + } else if (propertyName.equals(PROJECT_NAME)) + updateServerTargetIDs(); + return result; + } + + /** + * @param proj + */ + private void updateServerTargetModel(IProject proj) { + if (proj != null) { + serverTargetModel.setProperty(ServerTargetDataModel.PROJECT_NAME, proj.getName()); + } + } + + private void updateManifestModel(IProject proj) { + if (proj != null) + manifestModel.setProperty(UpdateManifestDataModel.PROJECT_NAME, proj.getName()); + else + manifestModel.setProperty(UpdateManifestDataModel.PROJECT_NAME, null); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jst.j2ee.internal.internal.application.operations.AddArchiveProjectToEARDataModel#getDefaultArchiveURI() + */ + protected String getDefaultArchiveURI() { + WorkbenchComponent wbComp = (WorkbenchComponent) getProperty(ARCHIVE_MODULE); + return wbComp.getHandle().toString(); + //TODO: port +// IProject project = (IProject) getProperty(ARCHIVE_PROJECT); +// if (project != null) { +// String defaultURI = getUtilityJARUriInFirstEAR(project); +// if (defaultURI != null) +// return defaultURI; +// } +// return super.getDefaultArchiveURI(); + } + + protected IStatus doValidateProperty(String propertyName) { + if (ARCHIVE_MODULE.equals(propertyName)) { + IStatus status = super.doValidateProperty(propertyName); + if (!status.isOK()) { + return status; + } + //TODO redo without editmodel +// Object key = new Object(); +// EAREditModel editModel = null; +// try { +// editModel = (EAREditModel) getEditModelForRead(key); +// if (null != editModel.getUtilityJARMapping((IProject) getProperty(ARCHIVE_PROJECT))) { +// return WTPCommonPlugin.createErrorStatus(EARCreationResourceHandler.getString(EARCreationResourceHandler.ADD_PROJECT_UTIL_MAPPED)); +// } +// } finally { +// if (null != editModel) { +// editModel.releaseAccess(key); +// } +// } + WorkbenchComponent wbComp = (WorkbenchComponent) getProperty(ARCHIVE_MODULE); + if (isWebOrClientModule(wbComp) || !isJavaModule(wbComp)) { + return WTPCommonPlugin.createErrorStatus(EARCreationResourceHandler.getString(EARCreationResourceHandler.ADD_PROJECT_NOT_JAVA)); + } + } else if (ARCHIVE_URI.equals(propertyName)) { + IStatus status = super.doValidateProperty(propertyName); + if (!status.isOK()) { + return status; + } + if (!getStringProperty(ARCHIVE_URI).endsWith(".jar")) { //$NON-NLS-1$ + return WTPCommonPlugin.createErrorStatus(EARCreationResourceHandler.getString(EARCreationResourceHandler.ADD_PROJECT_UTIL_URI)); + } + } + return super.doValidateProperty(propertyName); + } + + private boolean isJavaModule(WorkbenchComponent wbComp) { + return wbComp.getComponentType().getModuleTypeId().equals(IModuleConstants.JST_UTILITY_MODULE); + } + + private boolean isWebOrClientModule(WorkbenchComponent wbComp) { + String typeID = wbComp.getComponentType().getModuleTypeId(); + return typeID.equals(IModuleConstants.JST_WEB_MODULE) || typeID.equals(IModuleConstants.JST_APPCLIENT_MODULE); + } + + /** + * @return Returns the manifestModel. + */ + public UpdateManifestDataModel getManifestModel() { + return manifestModel; + } + + /** + * @return Returns the serverTargetModel. + */ + public ServerTargetDataModel getServerTargetModel() { + return serverTargetModel; + } + +}
\ No newline at end of file |