Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java224
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

Back to the top