| package org.eclipse.jst.jee.project.facet; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.core.commands.ExecutionException; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider; |
| import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities; |
| import org.eclipse.jst.j2ee.model.IModelProvider; |
| import org.eclipse.jst.j2ee.model.ModelProviderManager; |
| import org.eclipse.jst.jee.JEEPlugin; |
| import org.eclipse.wst.common.componentcore.ComponentCore; |
| import org.eclipse.wst.common.componentcore.datamodel.properties.ICreateReferenceComponentsDataModelProperties; |
| import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; |
| import org.eclipse.wst.common.componentcore.resources.IVirtualReference; |
| import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory; |
| import org.eclipse.wst.common.frameworks.datamodel.IDataModel; |
| |
| public class EarCreateDeploymentFilesOperation extends |
| CreateDeploymentFilesDataModelOperation { |
| |
| |
| public EarCreateDeploymentFilesOperation(IDataModel model) { |
| super(model); |
| } |
| |
| @Override |
| protected void createDeploymentFiles(IProject project, final IProgressMonitor monitor) { |
| final IVirtualComponent component = ComponentCore.createComponent(project); |
| final IModelProvider provider = ModelProviderManager.getModelProvider(project); |
| provider.modify(new Runnable(){ |
| public void run() { |
| IVirtualReference[] componentReferences = J2EEProjectUtilities.getJ2EEModuleReferences(component); |
| if(componentReferences != null && componentReferences.length > 0){ |
| final IDataModel dataModel = DataModelFactory.createDataModel(new AddComponentToEnterpriseApplicationDataModelProvider()); |
| dataModel.setProperty(ICreateReferenceComponentsDataModelProperties.SOURCE_COMPONENT, component); |
| Map<IVirtualComponent, String> uriMap = new HashMap<IVirtualComponent, String>(); |
| for(int i = 0; i < componentReferences.length; i++) { |
| IVirtualComponent referencedComponent = componentReferences[i].getReferencedComponent(); |
| if (componentReferences[i].getRuntimePath().toString().equals("/")){ //$NON-NLS-1$ |
| uriMap.put(referencedComponent, componentReferences[i].getArchiveName()); |
| } else { |
| uriMap.put(referencedComponent, componentReferences[i].getRuntimePath().append((new Path(componentReferences[i].getArchiveName())).lastSegment()).toString()); |
| } |
| } |
| dataModel.setProperty(ICreateReferenceComponentsDataModelProperties.TARGET_COMPONENTS_TO_URI_MAP, uriMap); |
| try { |
| dataModel.getDefaultOperation().execute(monitor, null); |
| } catch (ExecutionException e) { |
| JEEPlugin.logError(e); |
| } |
| } |
| } |
| }, IModelProvider.FORCESAVE); |
| |
| |
| } |
| |
| } |