blob: 7fd6c73963fc64abb2f843bfe1974a742f7d071d [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.edit.process.command;
import java.util.Collection;
import java.util.HashSet;
import org.eclipse.emf.common.command.AbstractCommand;
import org.eclipse.epf.library.edit.command.IResourceAwareCommand;
import org.eclipse.epf.uma.Activity;
import org.eclipse.epf.uma.Descriptor;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.util.AssociationHelper;
import org.eclipse.epf.uma.util.UmaUtil;
/**
* @author Phong Nguyen Le - Nov 30, 2005
* @since 1.0
*/
public class RemoveUnusedDescriptorsCommand extends AbstractCommand implements
IResourceAwareCommand {
public static final Object[] TASK_DESCRIPTOR__RELATIONSHIPS = {
UmaPackage.eINSTANCE.getTaskDescriptor_AdditionallyPerformedBy(),
UmaPackage.eINSTANCE.getTaskDescriptor_AssistedBy(),
UmaPackage.eINSTANCE.getTaskDescriptor_PerformedPrimarilyBy(),
UmaPackage.eINSTANCE.getTaskDescriptor_MandatoryInput(),
UmaPackage.eINSTANCE.getTaskDescriptor_ExternalInput(),
UmaPackage.eINSTANCE.getTaskDescriptor_OptionalInput(),
UmaPackage.eINSTANCE.getTaskDescriptor_Output()
};
public static final Object[] ROLE_DESCRIPTOR__RELATIONSHIPS = {
AssociationHelper.RoleDescriptor_AssistsIn_TaskDescriptors,
AssociationHelper.RoleDescriptor_AdditionalTaskDescriptors,
UmaPackage.eINSTANCE.getRoleDescriptor_ResponsibleFor()
};
public static final Object[] WORK_PRODUCT_DESCRIPTOR__RELATIONSHIPS = {
UmaPackage.eINSTANCE.getWorkProductDescriptor_ImpactedBy(),
UmaPackage.eINSTANCE.getWorkProductDescriptor_Impacts(),
AssociationHelper.WorkProductDescriptor_MandatoryInputTo_TaskDescriptors,
AssociationHelper.WorkProductDescriptor_ExternalInputTo_TaskDescriptors,
AssociationHelper.WorkProductDescriptor_OptionalInputTo_TaskDescriptors,
AssociationHelper.WorkProductDescriptor_OutputFrom_TaskDescriptors,
AssociationHelper.WorkProductDescriptor_ResponsibleRoleDescriptors
};
private HashSet removedDescriptors;
protected boolean aborted;
/**
*
*/
public RemoveUnusedDescriptorsCommand() {
super();
}
/**
* @param label
*/
public RemoveUnusedDescriptorsCommand(String label) {
super(label);
}
/**
* @param label
* @param description
*/
public RemoveUnusedDescriptorsCommand(String label, String description) {
super(label, description);
}
public boolean isAborted() {
return aborted;
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.command.IResourceAwareCommand#getModifiedResources()
*/
public Collection getModifiedResources() {
return null;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.common.command.Command#execute()
*/
public void execute() {
}
/*
* (non-Javadoc)
*
* @see org.eclipse.emf.common.command.Command#redo()
*/
public void redo() {
}
private Object getParent(Descriptor obj) {
// AdapterFactory factory = null;
// if (obj instanceof RoleDescriptor) {
// factory = TngAdapterFactory.INSTANCE
// .getOBS_ComposedAdapterFactory();
// } else if (obj instanceof TaskDescriptor) {
// factory = TngAdapterFactory.INSTANCE
// .getWBS_ComposedAdapterFactory();
// } else if (obj instanceof WorkProductDescriptor) {
// factory = TngAdapterFactory.INSTANCE
// .getPBS_ComposedAdapterFactory();
// }
//
// ItemProviderAdapter provider = (ItemProviderAdapter)
// factory.adapt(obj,
// ITreeItemContentProvider.class);
// Object act = provider.getParent(obj);
//
// return act;
return UmaUtil.getParentActivity(obj);
}
protected void delete(Object[] refTobeDeleted) {
if (refTobeDeleted != null) {
for (int i = 0; i < refTobeDeleted.length; i++) {
Descriptor obj = (Descriptor) refTobeDeleted[i];
// get parent and remove ref object
Object act = getParent(obj);
if (act instanceof Activity) {
if (((Activity) act).getBreakdownElements().remove(obj)) {
getRemovedDescriptors().add(obj);
}
}
}
}
}
public Collection getRemovedDescriptors() {
if (removedDescriptors == null) {
removedDescriptors = new HashSet();
}
return removedDescriptors;
}
}