blob: aa742e2bcd8e0b217097aa57d47b8bac018cee99 [file] [log] [blame]
package org.eclipse.wst.common.modulecore.builder;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.internal.events.ResourceDelta;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
import org.eclipse.wst.common.modulecore.ModuleStructuralModel;
import org.eclipse.wst.common.modulecore.WorkbenchModule;
import org.eclipse.wst.common.modulecore.util.ModuleCore;
public class DeployableModuleProjectBuilderDataModel extends WTPOperationDataModel {
/**
* Required, type IProject
*/
public static final String PROJECT = "DeployableModuleProjectBuilderDataModel.PROJECT"; //$NON-NLS-1$
/**
* Required, type Integer
* default to FULL
*/
public static final String BUILD_KIND = "DeployableModuleProjectBuilderDataModel.BUILD_KIND"; //$NON-NLS-1$
/**
* Required, type IResourceDelta
* default to FULL
*/
public static final String PROJECT_DETLA = "DeployableModuleProjectBuilderDataModel.PROJECT_DETLA"; //$NON-NLS-1$
/**
* Required, type ModuleBuilderDataModel
* default to FULL
*/
public static final String MODULE_BUILDER_DM_LIST = "DeployableModuleProjectBuilderDataModel.MODULE_BUILDER_DM"; //$NON-NLS-1$
/**
* Required, type ModuleBuilderDataModel
* default to FULL
*/
public static final String MODULE_STRUCTURAL_MODEL = "DeployableModuleProjectBuilderDataModel.MODULE_STRUCTURAL_MODEL"; //$NON-NLS-1$
protected void init() {
super.init();
}
protected void initValidBaseProperties() {
addValidBaseProperty(PROJECT);
addValidBaseProperty(BUILD_KIND);
addValidBaseProperty(PROJECT_DETLA);
addValidBaseProperty(MODULE_BUILDER_DM_LIST);
addValidBaseProperty(MODULE_STRUCTURAL_MODEL);
}
public DeployableModuleProjectBuilderDataModel() {
super();
}
/* (non-Javadoc)
* @see org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel#getDefaultProperty(java.lang.String)
*/
protected Object getDefaultProperty(String propertyName) {
if(propertyName.equals(BUILD_KIND))
return new Integer(IncrementalProjectBuilder.FULL_BUILD);
else if(propertyName.equals(MODULE_BUILDER_DM_LIST))
return populateModuleBuilderDataModelList();
return super.getDefaultProperty(propertyName);
}
/**
* @return
*/
private Object populateModuleBuilderDataModelList() {
//TODO: delta information should be taken into consideration
List moduleDMList = new ArrayList();
switch (((Integer)getProperty(BUILD_KIND)).intValue()) {
case IncrementalProjectBuilder.FULL_BUILD:
moduleDMList = populateFullModuleBuilderDataModelList();
break;
case IncrementalProjectBuilder.INCREMENTAL_BUILD:
moduleDMList = populateDeltaModuleBuilderDataModelList((ResourceDelta)getProperty(PROJECT_DETLA));
break;
default:
moduleDMList = populateFullModuleBuilderDataModelList();
break;
}
return null;
}
private List populateFullModuleBuilderDataModelList() {
WorkbenchModule[] wbModules =ModuleCore.INSTANCE.getWorkbenchModules((ModuleStructuralModel)getProperty(MODULE_STRUCTURAL_MODEL));
List moduleBuilderDataModelList = new ArrayList();
if(wbModules == null) return null;
DeployableModuleFactory factory = null;
DeployableModuleDataModel dataModel = null;
for(int i = 0; i<wbModules.length; i++){
factory = DeployableModuleFactoryRegistry.INSTANCE.createDeployableFactory(wbModules[i].getModuleType().getModuleTypeId());
if(factory != null) {
dataModel = factory.createDeploymentModuleDataModel();
// TODO: set relevant DM info;
moduleBuilderDataModelList.add(factory.createDeploymentModuleDataModel());
}
}
return moduleBuilderDataModelList;
}
private List populateDeltaModuleBuilderDataModelList(ResourceDelta delta) {
//TODO: handle delta information correcty
return populateFullModuleBuilderDataModelList();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel#getDefaultOperation()
*/
public WTPOperation getDefaultOperation() {
// TODO Auto-generated method stub
return null;
}
}