blob: 18ac269450e9fdf95e62afcd5cc6d35d1e35ade2 [file] [log] [blame]
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);
}
}