Skip to content
Snippets Groups Projects
Commit e4c209a6 authored by Luca Cristoforetti's avatar Luca Cristoforetti
Browse files

Some refactoring on API

parent 07f85e92
No related branches found
No related tags found
No related merge requests found
......@@ -49,5 +49,33 @@ public class ModelAccessUtil {
//TODO: implement this
}
public static <T> boolean isElement(T element, Filter filter) {
return (applyFilterOnElement(element, filter) != null);
}
public static Collection<EObject> applyFilterOnList(final Collection<EObject> elements, Filter filter) {
if (filter != null) {
Collection<EObject> filtered = new ArrayList<EObject>();
for (EObject eObject : elements) {
if (filter.test(eObject)) {
filtered.add(eObject);
}
}
return filtered;
}
return elements;
}
public static <T> T applyFilterOnElement(T element, Filter filter) {
if (filter != null) {
if (filter.test(element)) {
return element;
}
return null;
}
return element;
}
}
......@@ -19,7 +19,7 @@ public class UmlElementAccessUtil {
Collection<EObject> enumerations = ModelAccessUtil.getElementChildren(owner, recursive, new EnumerationsFilter());
return applyFilterOnList(filter, enumerations);
return ModelAccessUtil.applyFilterOnList(enumerations, filter);
}
// Solution based on UML API
......@@ -42,41 +42,24 @@ public class UmlElementAccessUtil {
}
}
return applyFilterOnList(filter, enumerations);
return ModelAccessUtil.applyFilterOnList(enumerations, filter);
}
// Solution based on UML API
public Operation getOperation(Class owner, String name, boolean ignoreCase, Filter filter) {
final Operation operation = owner.getOperation(name, null, null, ignoreCase);
return applyFilterOnElement(operation, filter);
return ModelAccessUtil.applyFilterOnElement(operation, filter);
}
private Collection<EObject> applyFilterOnList(Filter filter, final Collection<EObject> elements) {
if (filter != null) {
Collection<EObject> filtered = new ArrayList<EObject>();
for (EObject eObject : elements) {
if (filter.test(eObject)) {
filtered.add(eObject);
}
}
return filtered;
}
return elements;
}
private <T> T applyFilterOnElement(T element, Filter filter) {
if (filter != null) {
if (filter.test(element)) {
return element;
}
return null;
}
return element;
// Implementation using generic isElement()
public boolean isOperation(Element element) {
return ModelAccessUtil.isElement(element, new OperationsFilter());
}
public boolean isEnumeration(Element enumeration) {
return (applyFilterOnElement(enumeration, new EnumerationsFilter()) != null);
// Alternative Implementation
public boolean isEnumeration(Element element) {
return (ModelAccessUtil.applyFilterOnElement(element, new EnumerationsFilter()) != null);
}
}
......@@ -90,4 +73,15 @@ class EnumerationsFilter implements Filter {
}
return false;
}
}
class OperationsFilter implements Filter {
@Override
public boolean test(Object o) {
if (o instanceof Operation) {
return true;
}
return false;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment