blob: aad07477639e32cdf47fe195f3fb9e527ddde9d2 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2009 Red Hat, IBM
* 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:
* Rob Stryker - initial implementation and ongoing maintenance
* Chuck Bridgham - additional support
******************************************************************************/
package org.eclipse.jst.j2ee.internal.ui;
import java.util.ArrayList;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
import org.eclipse.jst.j2ee.internal.componentcore.JavaEEModuleHandler;
import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
import org.eclipse.wst.common.componentcore.internal.IModuleHandler;
import org.eclipse.wst.common.componentcore.internal.impl.TaskModel;
import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage;
import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
import org.eclipse.wst.common.componentcore.ui.propertypage.ModuleAssemblyRootPage;
import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants.ProjectConverterOperationProvider;
import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
public class J2EEModuleDependenciesPropertyPage extends
AddModuleDependenciesPropertiesPage {
public J2EEModuleDependenciesPropertyPage(IProject project,
ModuleAssemblyRootPage page) {
super(project, page);
}
@Override
public boolean postHandleChanges(IProgressMonitor monitor) {
return true;
}
@Override
protected void handleRemoved(ArrayList<IVirtualReference> removed) {
super.handleRemoved(removed);
J2EEComponentClasspathUpdater.getInstance().queueUpdateEAR(rootComponent.getProject());
}
@Override
protected String getModuleAssemblyRootPageDescription() {
if (JavaEEProjectUtilities.isEJBProject(project))
return Messages.J2EEModuleDependenciesPropertyPage_3;
if (JavaEEProjectUtilities.isApplicationClientProject(project))
return Messages.J2EEModuleDependenciesPropertyPage_4;
if (JavaEEProjectUtilities.isJCAProject(project))
return Messages.J2EEModuleDependenciesPropertyPage_5;
return super.getModuleAssemblyRootPageDescription();
}
@Override
protected IModuleHandler getModuleHandler() {
if(moduleHandler == null)
moduleHandler = new JavaEEModuleHandler();
return moduleHandler;
}
@Override
protected void setCustomReferenceWizardProperties(TaskModel model) {
model.putObject(IReferenceWizardConstants.PROJECT_CONVERTER_OPERATION_PROVIDER, getConverterProvider());
}
public ProjectConverterOperationProvider getConverterProvider() {
return new ProjectConverterOperationProvider() {
public IDataModelOperation getConversionOperation(IProject project) {
return J2EEProjectUtilities.createFlexJavaProjectForProjectOperation(project);
}
};
}
//
// @Override
// protected IDataModelProvider getAddReferenceDataModelProvider(IVirtualComponent component) {
// return new AddComponentToEnterpriseApplicationDataModelProvider();
// }
//
// protected void addToManifest(ArrayList<IVirtualComponent> components) {
// StringBuffer newComps = getCompsForManifest(components);
// if(newComps.toString().length() > 0) {
// UpdateManifestOperation op = createManifestOperation(newComps.toString());
// try {
// op.run(new NullProgressMonitor());
// } catch (InvocationTargetException e) {
// J2EEUIPlugin.logError(e);
// } catch (InterruptedException e) {
// J2EEUIPlugin.logError(e);
// }
// }
// }
//
// protected void addOneComponent(IVirtualComponent component, IPath path, String archiveName) throws CoreException {
// //Find the Ear's that contain this component
// IProject[] earProjects = EarUtilities.getReferencingEARProjects(rootComponent.getProject());
// for (int i = 0; i < earProjects.length; i++) {
// IProject project = earProjects[i];
//
// IDataModelProvider provider = getAddReferenceDataModelProvider(component);
// IDataModel dm = DataModelFactory.createDataModel(provider);
//
// dm.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, ComponentCore.createComponent(project));
// dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST, Arrays.asList(component));
//
// //[Bug 238264] the uri map needs to be manually set correctly
// Map<IVirtualComponent, String> uriMap = new HashMap<IVirtualComponent, String>();
// uriMap.put(component, archiveName);
// dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, uriMap);
// dm.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_DEPLOY_PATH, path);
//
// IStatus stat = dm.validateProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENT_LIST);
// if (stat != OK_STATUS)
// throw new CoreException(stat);
// try {
// dm.getDefaultOperation().execute(new NullProgressMonitor(), null);
// } catch (ExecutionException e) {
// ModuleCoreUIPlugin.logError(e);
// }
// }
// }
//
//
// protected StringBuffer getCompsForManifest(ArrayList<IVirtualComponent> components) {
// StringBuffer newComps = new StringBuffer();
// for (Iterator iterator = components.iterator(); iterator.hasNext();) {
// IVirtualComponent comp = (IVirtualComponent) iterator.next();
// String archiveName = new Path(derivedRefsObjectToRuntimePath.get(comp)).lastSegment();
// newComps.append(archiveName);
// newComps.append(' ');
// }
// return newComps;
// }
//
// protected UpdateManifestOperation createManifestOperation(String newComps) {
// return new UpdateManifestOperation(project.getName(), newComps, false);
// }
//
// private void removeFromManifest(ArrayList<IVirtualComponent> removed) {
// String sourceProjName = project.getName();
// IProgressMonitor monitor = new NullProgressMonitor();
// IFile manifestmf = J2EEProjectUtilities.getManifestFile(project);
// ArchiveManifest mf = J2EEProjectUtilities.readManifest(project);
// if (mf == null)
// return;
// IDataModel updateManifestDataModel = DataModelFactory.createDataModel(new UpdateManifestDataModelProvider());
// updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.PROJECT_NAME, sourceProjName);
// updateManifestDataModel.setBooleanProperty(UpdateManifestDataModelProperties.MERGE, false);
// updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.MANIFEST_FILE, manifestmf);
// String[] cp = mf.getClassPathTokenized();
// List cpList = new ArrayList();
//
// for (int i = 0; i < cp.length; i++) {
// boolean foundMatch = false;
// for (Iterator iterator = removed.iterator(); iterator.hasNext();) {
// IVirtualComponent comp = (IVirtualComponent) iterator.next();
// String cpToRemove = new Path(derivedRefsOldComponentToRuntimePath.get(comp)).lastSegment();
// if (cp[i].equals(cpToRemove))
// foundMatch = true;
// }
// if (!foundMatch)
// cpList.add(cp[i]);
// }
// updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, cpList);
// try {
// updateManifestDataModel.getDefaultOperation().execute(monitor, null );
// } catch (ExecutionException e) {
// J2EEUIPlugin.logError(e);
// }
// }
}