blob: ed287ce7806a6a5736d8262fc53120ff31919fc3 [file] [log] [blame]
package org.eclipse.papyrus.robotics.safety.riskanalysis.table;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.papyrus.robotics.profile.robotics.parameters.Parameter;
import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Property;
import org.eclipse.uml2.uml.StructuredClassifier;
public class ParameterUtils {
public static List<Property> getAllParameters(Class clazz) {
List<Property> parameterList = new ArrayList<Property>();
for (Class superClass : clazz.getSuperClasses()) {
StructuredClassifier paramClass = ParameterUtils.getParameterClass(superClass);
if (paramClass != null) {
parameterList.addAll(paramClass.getOwnedAttributes());
}
}
StructuredClassifier paramClass = ParameterUtils.getParameterClass(clazz);
if (paramClass != null) {
parameterList.addAll(paramClass.getOwnedAttributes());
}
return parameterList;
}
/**
* Return the nested classifier within a component that is holding configuration parameters
* Return null, if not found
*/
public static Class getParameterClass(Class component) {
for (Classifier cl : component.getNestedClassifiers()) {
if (cl instanceof Class && StereotypeUtil.isApplied(cl, Parameter.class)) {
return (Class) cl;
}
}
return null;
}
/**
* Return the part within a component that is typed with the passed nested classifier
*/
public static Property getParameterProperty(Class nestedClassifier) {
Element owner = nestedClassifier.getOwner();
if (owner instanceof Class) {
for (Property p : ((Class) owner).getOwnedAttributes()) {
if (p.getType() == nestedClassifier) {
return p;
}
}
}
return null;
}
}