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/EARComponentCreationOperation.java')
-rw-r--r--plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentCreationOperation.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentCreationOperation.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentCreationOperation.java
new file mode 100644
index 000000000..f9caf3ea6
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentCreationOperation.java
@@ -0,0 +1,122 @@
+/*
+ * Created on Mar 17, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.eclipse.jst.j2ee.application.internal.operations;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
+import org.eclipse.jem.util.logger.proxy.Logger;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.internal.J2EEVersionUtil;
+import org.eclipse.jst.j2ee.internal.earcreation.EARComponentCreationDataModel;
+import org.eclipse.jst.j2ee.internal.modulecore.util.EARArtifactEdit;
+import org.eclipse.wst.common.modulecore.ModuleCore;
+import org.eclipse.wst.common.modulecore.WorkbenchComponent;
+import org.eclipse.wst.common.modulecore.internal.operation.ComponentCreationDataModel;
+import org.eclipse.wst.common.modulecore.internal.util.IModuleConstants;
+import org.eclipse.wst.common.modulecore.resources.IVirtualContainer;
+import org.eclipse.wst.common.modulecore.resources.IVirtualFolder;
+
+public class EARComponentCreationOperation extends J2EEComponentCreationOperation {
+ public EARComponentCreationOperation(EARComponentCreationDataModel dataModel) {
+ super(dataModel);
+ }
+
+ public EARComponentCreationOperation() {
+ super();
+ }
+ /* (non-Javadoc)
+ * @see org.eclipse.jst.j2ee.application.operations.J2EEComponentCreationOperation#createAndLinkJ2EEComponents()
+ */
+ protected void createAndLinkJ2EEComponents() throws CoreException {
+ IVirtualContainer component = ModuleCore.create(getProject(), getModuleDeployName());
+ component.commit();
+ //create and link META-INF folder
+ IVirtualFolder metaInfFolder = component.getFolder(new Path("/" + J2EEConstants.META_INF)); //$NON-NLS-1$
+ metaInfFolder.createLink(new Path("/" + getModuleName() + "/" + J2EEConstants.META_INF), 0, null);
+ }
+
+ public IProject getProject() {
+ String projName = operationDataModel.getStringProperty(EARComponentCreationDataModel.PROJECT_NAME );
+ return ProjectUtilities.getProject( projName );
+ }
+
+ protected void createDeploymentDescriptor(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+ String moduleName = (String)operationDataModel.getProperty(EARComponentCreationDataModel.COMPONENT_NAME);
+ IFolder moduleFolder = getProject().getFolder(moduleName);
+ if (!moduleFolder.exists()) {
+ moduleFolder.create(true, true, null);
+ }
+
+ //should cache wbmodule when created instead of searching ?
+ ModuleCore moduleCore = null;
+ EARArtifactEdit edit = null;
+ try {
+ EARComponentCreationDataModel dm = (EARComponentCreationDataModel)getOperationDataModel();
+ moduleCore = ModuleCore.getModuleCoreForWrite(getProject());
+ WorkbenchComponent earComp = moduleCore.findWorkbenchModuleByDeployName(
+ operationDataModel.getStringProperty(EARComponentCreationDataModel.COMPONENT_DEPLOY_NAME));
+ edit = EARArtifactEdit.getEARArtifactEditForWrite(earComp);
+ int versionId = ((ComponentCreationDataModel)getOperationDataModel()).getIntProperty(ComponentCreationDataModel.COMPONENT_VERSION);
+ edit.createModelRoot(versionId);
+ // set version to WorkbenchComponent
+ String versionText = J2EEVersionUtil.getJ2EETextVersion(versionId);
+ earComp.getComponentType().setVersion(versionText);
+ // save
+ moduleCore.saveIfNecessary(null);
+ } finally {
+ if (null != moduleCore) {
+ moduleCore.dispose();
+ }
+ if (edit != null)
+ edit.dispose();
+ }
+ }
+
+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+ J2EEComponentCreationDataModel dataModel = (J2EEComponentCreationDataModel) operationDataModel;
+ createAndLinkJ2EEComponents();
+ setupComponentType(IModuleConstants.JST_EAR_MODULE);
+ if (dataModel.getBooleanProperty(J2EEComponentCreationDataModel.CREATE_DEFAULT_FILES)) {
+ createDeploymentDescriptor(monitor);
+ }
+ addModulesToEAR(monitor);
+ }
+
+ private void addModulesToEAR(IProgressMonitor monitor) {
+ try{
+ AddComponentToEnterpriseApplicationDataModel dm = new AddComponentToEnterpriseApplicationDataModel();
+ dm.setProperty(AddComponentToEnterpriseApplicationDataModel.PROJECT_NAME, getProject().getName());
+ dm.setProperty(AddComponentToEnterpriseApplicationDataModel.EAR_MODULE_NAME, getOperationDataModel().getProperty(EARComponentCreationDataModel.COMPONENT_DEPLOY_NAME));
+ List modulesList = (List)getOperationDataModel().getProperty(EARComponentCreationDataModel.J2EE_COMPONENT_LIST);
+ if(modulesList != null && !modulesList.isEmpty()) {
+ dm.setProperty(AddComponentToEnterpriseApplicationDataModel.MODULE_LIST,modulesList);
+ AddComponentToEnterpriseApplicationOperation addModuleOp = (AddComponentToEnterpriseApplicationOperation)dm.getDefaultOperation();
+ addModuleOp.execute(monitor);
+ }
+ } catch(Exception e) {
+ Logger.getLogger().log(e);
+ }
+ }
+
+ protected void addResources(WorkbenchComponent component ){
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jst.j2ee.application.operations.J2EEComponentCreationOperation#getVersion()
+ */
+ protected String getVersion() {
+ int version = operationDataModel.getIntProperty(J2EEComponentCreationDataModel.COMPONENT_VERSION);
+ return J2EEVersionUtil.getJ2EETextVersion(version);
+ }
+} \ No newline at end of file

Back to the top