blob: c07af6ad712e70e708c728dd01e30392a6d5b08a [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2007 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.diagramming.base.util;
import org.eclipse.emf.ecore.EAnnotation;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.epf.diagramming.base.Constants;
import org.eclipse.epf.library.ILibraryManager;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.uma.Activity;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.epf.uma.UmaFactory;
import org.eclipse.epf.uma.util.UmaUtil;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.uml2.uml.NamedElement;
/**
* @author Shashidhar kannoori
*
*/
public final class UmaUmlUtil {
/**
*
*/
public UmaUmlUtil() {
// TODO Auto-generated constructor stub
}
public static String getUmaGuidFromUmlElement(NamedElement ne){
EAnnotation eAnnotation = ne.getEAnnotation(Constants.UMA_SOURCE);
if(eAnnotation != null){
String guid = (String) eAnnotation.getDetails().get(
Constants.UMA_ELEMENT_GUID);
return guid;
}
return null;
}
public static void createEAnnotationForUml(NamedElement element, String guid){
if(element.getEAnnotation(Constants.UMA_SOURCE) == null){
EAnnotation eAnnotation = EcoreFactory.eINSTANCE.createEAnnotation();
eAnnotation.setSource(Constants.UMA_SOURCE);
eAnnotation.getDetails().put(Constants.UMA_ELEMENT_GUID, guid);
element.getEAnnotations().add(eAnnotation);
}
}
public static void updateEAnnotationForUml(NamedElement element, String guid){
EAnnotation eAnnotation = element.getEAnnotation(Constants.UMA_SOURCE);
if(eAnnotation == null){
createEAnnotationForUml(element, guid);
}else{
eAnnotation.getDetails().put(Constants.UMA_ELEMENT_GUID, guid);
}
}
public static MethodElement getUmaElement(NamedElement umlElement){
String umaGuid = getUmaGuidFromUmlElement(umlElement);
if(umaGuid != null && umaGuid != ""){
ILibraryManager manager = LibraryService.getInstance().getCurrentLibraryManager();
if(manager != null){
MethodElement element = manager.getMethodElement(umaGuid);
return element;
}
}
return null;
}
public static MethodElement getUmaElement(View view){
NamedElement umlElement = (NamedElement)view.getElement();
String umaGuid = getUmaGuidFromUmlElement(umlElement);
if(umaGuid != null && umaGuid != ""){
ILibraryManager manager = LibraryService.getInstance().getCurrentLibraryManager();
if(manager != null){
MethodElement element = manager.getMethodElement(umaGuid);
return element;
}
}
return null;
}
public static void createUmaObject(View containerView, View view) {
// TODO Auto-generated method stub
EAnnotation eAnnotation = containerView
.getEAnnotation(Constants.UMA_SOURCE);
String guid = (String) eAnnotation.getDetails().get(
Constants.UMA_ELEMENT_GUID);
ILibraryManager manager = LibraryService.getInstance().getCurrentLibraryManager();
if (manager != null) {
MethodElement element = manager.getMethodElement(guid);
if(element instanceof Activity){
Activity subactivity = UmaFactory.eINSTANCE.createActivity();
((Activity)element).getBreakdownElements().add(subactivity);
String subId = UmaUtil.generateGUID();
subactivity.setGuid(subId);
EAnnotation eAnnotation2 = EcoreFactory.eINSTANCE
.createEAnnotation();
eAnnotation2.setSource(Constants.UMA_SOURCE);
eAnnotation2.getDetails().put(Constants.UMA_ELEMENT_GUID, subId);
view.getEAnnotations().add(eAnnotation2);
}
}
}
}