blob: 01024fac26ab6d5c1387c6a948462d3ece1b11b3 [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.util;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.epf.uma.UmaPackage;
/**
* class to convert activity types
*
* @author Jeff Hardy
* @author Shilpa Toraskar
* @since 1.0
*
*/
public class ConvertActivityType {
// private static Activity oldActivity = null;
// private static Activity newActivity = null;
//
// // original activity's container
// private static ProcessPackage oldActivityContainer = null;
//
// // the original activity's breakdown list
// private static List oldActivityBreakdown = null;
//
// // index of the original activity in it's superActivity's breakdown list
// private static int oldActivityBreakdownIndex = -1;
//
// // original Activity's parent activity
// private static Activity superAct = null;
//
// // parent activity's breakdown list
// private static EList superActbreakdownList = null;
//
// // original Activity's variabilityType
// private static VariabilityType oldActVarType = null;
//
// // original Activity's variabilityElement
// private static VariabilityElement oldActVarElement = null;
//
// // original Activity's immeditateVarieties
// private static List oldActImmediateVarietiesList = null;
public static int[] compatibleActivities = { UmaPackage.ACTIVITY,
UmaPackage.ITERATION,
UmaPackage.PHASE,
UmaPackage.CAPABILITY_PATTERN,
UmaPackage.DELIVERY_PROCESS,
};
public static List compatibleActivitiesList = new ArrayList();
static {
for (int i = 0; i < compatibleActivities.length; i++)
compatibleActivitiesList.add(new Integer(compatibleActivities[i]));
}
// This method is buggy and is replaced with TypeConverter.convertActivity()
//
// public static Activity convertActivity(Activity oldActivity, int newType,
// DeleteMethodElementCommand command) {
//
//
// ConvertActivityType.oldActivity = oldActivity;
//
// // activity is already this type
// if (newType == oldActivity.eClass().getClassifierID()) {
// return null;
// }
//
// // newType is not valid
// if (!compatibleActivitiesList.contains(new Integer(newType))) {
// return null;
// }
//
// Activity newActivity = doConvert(newType, command);
//
// return newActivity;
// }
//
// private static Activity doConvert(int newType, DeleteMethodElementCommand command) {
//
// try {
// File oldActivityPathFile = new File(LibraryService.getInstance()
// .getCurrentMethodLibraryPath(), MethodLibraryPersister
// .getElementPath(oldActivity));
//
// // create new activity
// newActivity = createNewActivity(newType);
//
// // TODO: store oldActivity's features here, and don't set them until
// // after oldactivity is deleted
//
// // store oldActivity's breakdown list
// oldActivityBreakdown = new ArrayList();
// for (Iterator iter = oldActivity.getBreakdownElements().iterator();iter.hasNext();) {
// oldActivityBreakdown.add(iter.next());
// }
// oldActivityBreakdownIndex = getIndexInBreakdown(oldActivity);
//
// // copy all data from oldActivity to newActivity
// Iterator iter = oldActivity.eClass().getEAllStructuralFeatures()
// .iterator();
// while (iter.hasNext()) {
// EStructuralFeature feature = (EStructuralFeature) iter.next();
// Object o = oldActivity.eGet(feature);
// if (feature.getFeatureID() != UmaPackage.DESCRIBABLE_ELEMENT__PRESENTATION
// && feature.getFeatureID() != UmaPackage.METHOD_ELEMENT__GUID
// && feature.getFeatureID() != UmaPackage.ACTIVITY__BREAKDOWN_ELEMENTS
// && feature.getFeatureID() != UmaPackage.ACTIVITY__SUPER_ACTIVITIES
// && feature.getFeatureID() != UmaPackage.PROCESS__INCLUDES_PATTERNS
// && feature.getFeatureID() != UmaPackage.PROCESS__VALID_CONTEXT
// && feature.getFeatureID() != UmaPackage.PROCESS__DEFAULT_CONTEXT
// && feature.getFeatureID() != UmaPackage.DELIVERY_PROCESS__COMMUNICATIONS_MATERIALS
// && feature.getFeatureID() != UmaPackage.DELIVERY_PROCESS__EDUCATION_MATERIALS
// ) {
// newActivity.eSet(feature, o);
// }
// }
//
// // store Guid here
// String oldActivityGuid = oldActivity.getGuid();
//
// // store old activity's eContainer
// oldActivityContainer = (ProcessPackage) oldActivity
// .eContainer();
//
// // set container
// oldActivityContainer.getProcessElements().remove(oldActivity);
// oldActivityContainer.getProcessElements().add(newActivity);
//
// // create presentation
// ContentDescription newContentDesc = ContentDescriptionFactory
// .createContentDescription(newActivity);
// newActivity.setPresentation(newContentDesc);
//
// File newActivityPathFile = new File(LibraryService.getInstance()
// .getCurrentMethodLibraryPath(), MethodLibraryPersister
// .getElementPath(newActivity));
// ContentResourceScanner scanner = new ContentResourceScanner(
// oldActivityPathFile);
// scanner.setTargetRootPath(newActivityPathFile);
//
// // copy all presentation data from oldActivity to newActivity
// ContentDescription oldContentDesc = oldActivity.getPresentation();
// iter = oldContentDesc.eClass().getEAllAttributes().iterator();
// while (iter.hasNext()) {
// EAttribute attrib = (EAttribute) iter.next();
// if (attrib.getFeatureID() != UmaPackage.PROCESS_DESCRIPTION__EXTERNAL_ID
// && attrib.getFeatureID() != UmaPackage.PROCESS_DESCRIPTION__SCOPE
// && attrib.getFeatureID() != UmaPackage.PROCESS_DESCRIPTION__USAGE_NOTES
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__ESTIMATING_TECHNIQUE
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__PROJECT_CHARACTERISTICS
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__PROJECT_MEMBER_EXPERTISE
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__RISK_LEVEL
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__SCALE
// && attrib.getFeatureID() != UmaPackage.DELIVERY_PROCESS_DESCRIPTION__TYPE_OF_CONTRACT
// ) {
// Object o = oldContentDesc.eGet(attrib);
// if (o instanceof String && ((String) o).trim().length() > 0) {
// // process links
// scanner.resolveResources(newActivity, (String) o, ""); //$NON-NLS-1$
// // scanner.resolveResources(newActivity, (String) o,
// // MethodLibraryPersister.getElementPath(newActivity));
// // //$NON-NLS-1$
// }
// newContentDesc.eSet(attrib, o);
// }
// }
//
// // make breakdown links
// List oldActBreakdownList = new ArrayList();
// oldActBreakdownList.addAll(oldActivity.getBreakdownElements());
// for (iter = oldActBreakdownList.iterator();iter.hasNext();) {
// BreakdownElement be = (BreakdownElement)iter.next();
// be.setSuperActivities(null);
// }
//
// oldActivity.getBreakdownElements().clear();
// newActivity.getBreakdownElements().addAll(oldActivityBreakdown);
// // move new activity to proper index in the parent act's breakdown list
// superAct = UmaUtil.getParentActivity(oldActivity);
// superActbreakdownList = (EList)superAct.getBreakdownElements();
// superActbreakdownList.add(oldActivityBreakdownIndex, newActivity);
//
// // handle variability
// oldActVarElement = oldActivity.getVariabilityBasedOnElement();
// oldActVarType = oldActivity.getVariabilityType();
// oldActImmediateVarietiesList = new ArrayList();
// oldActImmediateVarietiesList.addAll(AssociationHelper.getImmediateVarieties(oldActivity));
//
// if (oldActVarElement != null && oldActVarType != null) {
// newActivity.setVariabilityBasedOnElement(oldActVarElement);
// newActivity.setVariabilityType(oldActVarType);
// }
//
// for (iter = oldActImmediateVarietiesList.iterator();iter.hasNext();) {
// VariabilityElement ve = (VariabilityElement) iter.next();
// ve.setVariabilityBasedOnElement(newActivity);
// }
//
// // create temp ProcessPackage and move oldActivity to it
// ProcessPackage tempParent = UmaFactory.eINSTANCE.createProcessPackage();
// tempParent.getProcessElements().add(oldActivity);
// tempParent.setName("temp PP for deletion"); //$NON-NLS-1$
//
// // delete old Activity here - if fails, roll back by deleting new Activity
// command.execute();
//
// if (!command.executed || command.failed) {
// // delete failed, or user selected cancel on the "delete
// // references" dialog
// // clean up new Activity
//
// undo();
//
// newActivity = null;
// newContentDesc = null;
// return null;
// }
//
// // set new activity's GUID
// newActivity.setGuid(oldActivityGuid);
//
// // TODO: update editor contents
//
// // TODO: on rollback, library may be dirty because of the
// // container/contentdesc changes we've done
// // fix this by storing all the old activity's info, then only create
// // new activity after old one has
// // been deleted.
//
// Set modifiedResourceSet = new HashSet();
//
// // save new activity and its presentation
// IFileBasedLibraryPersister.FailSafeMethodLibraryPersister persister = ContentDescriptionFactory
// .getMethodLibraryPersister().getFailSafePersister();
// try {
// if (newActivity.eResource() != null)
// modifiedResourceSet.add(newActivity.eResource());
// if (newActivity.getPresentation().eResource() != null)
// modifiedResourceSet.add(newActivity.getPresentation().eResource());
// if (oldActivityContainer.eResource() != null)
// modifiedResourceSet.add(oldActivityContainer.eResource());
// if (superAct.eResource() != null)
// modifiedResourceSet.add(superAct.eResource());
//
// for (iter = modifiedResourceSet.iterator();iter.hasNext();) {
// Resource res = (Resource) iter.next();
// persister.save(res);
// }
// persister.commit();
//
// } catch (Exception e) {
// persister.rollback();
// command.undo();
//
// undo();
// LibraryPlugin
// .getDefault()
// .getMsgDialog()
// .displayError(
// LibraryResources.convertActivityError_title,
// NLS.bind(LibraryResources.saveConvertedActivityError_msg, newActivity.getName()),
// LibraryResources.error_reason,
// e);
// newActivity = null;
// }
// } catch (Exception ex) {
// ex.printStackTrace();
// command.undo();
// undo();
// LibraryPlugin
// .getDefault()
// .getMsgDialog()
// .displayError(
// LibraryResources.convertActivityError_title,
// NLS.bind(LibraryResources.convertActivityError_msg, newActivity.getName()),
// LibraryResources.error_reason,
// ex);
// newActivity = null;
// }
// return newActivity;
// }
//
// private static Activity createNewActivity(int newType) {
// switch (newType) {
// case UmaPackage.ACTIVITY:
// return UmaFactory.eINSTANCE.createActivity();
// case UmaPackage.ITERATION:
// return UmaFactory.eINSTANCE.createIteration();
// case UmaPackage.PHASE:
// return UmaFactory.eINSTANCE.createPhase();
// default:
// return null;
// }
// }
//
// private static int getIndexInBreakdown(Activity act) {
// int index = -1;
// Activity superAct = UmaUtil.getParentActivity(act);
// if (superAct instanceof ProcessComponent) {
// // get process, find breakdown
// index = ((ProcessComponent)superAct).getProcess().getBreakdownElements().indexOf(act);
// }
// else {
// index = superAct.getBreakdownElements().indexOf(act);
// }
// return index;
// }
//
// private static void undo() {
// // undo moving of oldActivity to the fake PP
// if (oldActivityContainer != null) {
// oldActivityContainer.getProcessElements().remove(newActivity);
// if (!oldActivityContainer.getProcessElements().contains(oldActivity))
// oldActivityContainer.getProcessElements().add(oldActivity);
// }
// // undo the breakdown link changes
// if (newActivity != null) {
// newActivity.getBreakdownElements().clear();
// }
// if (oldActivityBreakdown != null && oldActivity != null) {
//// oldActivity.getBreakdownElements().clear();
// oldActivity.getBreakdownElements().addAll(oldActivityBreakdown);
// }
// if (superActbreakdownList != null) {
// if (newActivity != null) {
// superActbreakdownList.remove(newActivity);
// }
// if (oldActivityBreakdownIndex != -1 && oldActivity != null &&
// !superActbreakdownList.contains(oldActivity))
// superActbreakdownList.add(oldActivityBreakdownIndex, oldActivity);
// }
//
// // variability
// if (oldActVarElement != null && oldActVarType != null) {
// oldActivity.setVariabilityBasedOnElement(oldActVarElement);
// oldActivity.setVariabilityType(oldActVarType);
// }
//
// if (oldActImmediateVarietiesList != null) {
// for (Iterator iter = oldActImmediateVarietiesList.iterator();iter.hasNext();) {
// VariabilityElement ve = (VariabilityElement) iter.next();
// ve.setVariabilityBasedOnElement(oldActivity);
// }
// }
//
//
// }
}