/******************************************************************************* | |
* Copyright (c) 2011-20113 David A Carlson. | |
* 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: | |
* David A Carlson (XMLmodeling.com) - initial API and implementation | |
* | |
*******************************************************************************/ | |
package org.eclipse.mdht.uml.common.notation; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.eclipse.uml2.uml.Class; | |
import org.eclipse.uml2.uml.Classifier; | |
import org.eclipse.uml2.uml.Element; | |
import org.eclipse.uml2.uml.Property; | |
/** | |
* @author dcarlson | |
* | |
*/ | |
public class NotationUtil { | |
/* | |
* TODO: Add priority to notation extensions. | |
* Use profile URI for notation extensions. | |
* Sort extensions by priority, iterate through extensions and return first non-null result. | |
*/ | |
/* | |
* public static List<Object> getDesignationNamespaces(Element element) { | |
* List<Object> namespaces = null; | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* namespaces = provider.getDesignationNamespaces(element); | |
* } | |
* } | |
* return namespaces; | |
* } | |
* | |
* public static List<String> getDesignations(Element element) { | |
* List<String> designations = null; | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* designations = provider.getDesignations(element); | |
* } | |
* } | |
* return designations; | |
* } | |
* | |
* public static List<String> getDesignations(Element element, String language) { | |
* List<String> designations = null; | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* designations = provider.getDesignations(element, language); | |
* } | |
* } | |
* return designations; | |
* } | |
* | |
* public static List<String> getDesignations(Element element, Object namespace) { | |
* List<String> designations = null; | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* designations = provider.getDesignations(element, namespace); | |
* } | |
* } | |
* return designations; | |
* } | |
* | |
* public static List<String> getDesignations(Element element, Object namespace, String language) { | |
* List<String> designations = null; | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* designations = provider.getDesignations(element, namespace, language); | |
* } | |
* } | |
* return designations; | |
* } | |
*/ | |
public static String getPrintString(Element element) { | |
String text = null; | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider != null) { | |
text = provider.getPrintString(element); | |
} | |
} | |
if (text == null) { | |
// return default UML standard annotations, if no extensions found | |
if (element instanceof Class) { | |
text = ClassNotationUtil.getCustomLabel((Class) element, IUMLNotation.DEFAULT_UML_CLASS); | |
} else if (element instanceof Property) { | |
text = PropertyNotationUtil.getCustomLabel((Property) element, IUMLNotation.DEFAULT_UML_PROPERTY); | |
} | |
// TODO else, get from UML adapter provider | |
} | |
return text; | |
} | |
public static Object getElementImage(Element element) { | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider != null) { | |
return provider.getElementImage(element); | |
} | |
} | |
return null; | |
} | |
public static String getAnnotation(Element element) { | |
String annotation = null; | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider != null) { | |
annotation = provider.getAnnotation(element); | |
} | |
} | |
if (annotation == null) { | |
// return default UML standard annotations, if no extensions found | |
if (element instanceof Class) { | |
annotation = ClassNotationUtil.getCustomLabel( | |
(Class) element, IUMLNotation.DEFAULT_UML_CLASS_ANNOTATIONS); | |
} else if (element instanceof Property) { | |
annotation = PropertyNotationUtil.getCustomLabel( | |
(Property) element, IUMLNotation.DEFAULT_UML_PROPERTY_ANNOTATIONS); | |
} | |
} | |
return annotation; | |
} | |
public static String getShortAnnotation(Element element) { | |
String annotation = null; | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider instanceof IExtendedNotationProvider) { | |
annotation = ((IExtendedNotationProvider) provider).getShortAnnotation(element); | |
} else { | |
annotation = getAnnotation(element); | |
} | |
} | |
return annotation; | |
} | |
public static Object getAnnotationImage(Element element) { | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider != null) { | |
return provider.getAnnotationImage(element); | |
} | |
} | |
return null; | |
} | |
public static List<Classifier> getTypeChoice(Property property) { | |
List<Classifier> types = new ArrayList<Classifier>(); | |
if (property != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(property); | |
if (provider instanceof IExtendedNotationProvider) { | |
types = ((IExtendedNotationProvider) provider).getTypeChoice(property); | |
} | |
} | |
return types; | |
} | |
public static String getShortDescription(Element element) { | |
String text = null; | |
if (element != null) { | |
INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
if (provider instanceof IExtendedNotationProvider) { | |
text = ((IExtendedNotationProvider) provider).getShortDescription(element); | |
} | |
} | |
return text; | |
} | |
/* | |
* public static AdapterFactory getAdapterFactory(Element element) { | |
* if (element != null) { | |
* INotationProvider provider = NotationRegistry.INSTANCE.getNotationProvider(element); | |
* if (provider != null) { | |
* return provider.getAdapterFactory(element); | |
* } | |
* } | |
* | |
* return null; | |
* } | |
*/ | |
} |