[Minor] Add Activity.remove(String) to remove an element

This commit is contained in:
Robert von Burg 2017-02-22 10:56:04 +01:00
parent 111a75c034
commit e5f454d57d
1 changed files with 33 additions and 13 deletions

View File

@ -39,8 +39,8 @@ import li.strolch.model.visitor.StrolchRootElementVisitor;
import li.strolch.utils.dbc.DBC; import li.strolch.utils.dbc.DBC;
/** /**
* Parameterized object grouping a collection of {@link Activity} and {@link Action} objects defining the process to be * Parameterized object grouping a collection of {@link Activity} and
* scheduled * {@link Action} objects defining the process to be scheduled
* *
* @author Martin Smock <martin.smock@bluewin.ch> * @author Martin Smock <martin.smock@bluewin.ch>
*/ */
@ -111,36 +111,42 @@ public class Activity extends GroupedParameterizedElement
private void initElements() { private void initElements() {
if (this.elements == null) { if (this.elements == null) {
// use a LinkedHashMap since we will iterate elements in the order added and lookup elements by ID // use a LinkedHashMap since we will iterate elements in the order
// added and lookup elements by ID
this.elements = new LinkedHashMap<>(); this.elements = new LinkedHashMap<>();
} }
} }
/** /**
* Returns true if this {@link Activity} contains any children i.e. any of {@link Action} or {@link Activity} * Returns true if this {@link Activity} contains any children i.e. any of
* {@link Action} or {@link Activity}
* *
* @return true if this {@link Activity} contains any children i.e. any of {@link Action} or {@link Activity} * @return true if this {@link Activity} contains any children i.e. any of
* {@link Action} or {@link Activity}
*/ */
public boolean hasElements() { public boolean hasElements() {
return this.elements != null && !this.elements.isEmpty(); return this.elements != null && !this.elements.isEmpty();
} }
/** /**
* Returns true if this {@link Activity} contains a child with the given id. The element instance type is ignored, * Returns true if this {@link Activity} contains a child with the given id.
* i.e. {@link Action} or {@link Activity} * The element instance type is ignored, i.e. {@link Action} or
* {@link Activity}
* *
* @param id * @param id
* the id of the element to check for * the id of the element to check for
* *
* @return true if this {@link Activity} contains a child with the given id. The element instance type is ignored, * @return true if this {@link Activity} contains a child with the given id.
* i.e. {@link Action} or {@link Activity} * The element instance type is ignored, i.e. {@link Action} or
* {@link Activity}
*/ */
public boolean hasElement(String id) { public boolean hasElement(String id) {
return this.elements != null && this.elements.containsKey(id); return this.elements != null && this.elements.containsKey(id);
} }
/** /**
* add an activity element to the <code>LinkedHashMap</code> of <code>IActivityElements</code> * add an activity element to the <code>LinkedHashMap</code> of
* <code>IActivityElements</code>
* *
* @param activityElement * @param activityElement
* @return the element added * @return the element added
@ -164,6 +170,18 @@ public class Activity extends GroupedParameterizedElement
} }
} }
/**
* Removes the element with the given id and returns it, if it exists
*
* @param id
* the id of the element to remove
*
* @return the removed element, or null if it does not exist
*/
public IActivityElement remove(String id) {
return this.elements.remove(id);
}
/** /**
* get <code>IActivityElement</code> by id * get <code>IActivityElement</code> by id
* *
@ -179,7 +197,8 @@ public class Activity extends GroupedParameterizedElement
} }
/** /**
* @return get the <code>LinkedHashMap</code> of <code>IActivityElements</code> * @return get the <code>LinkedHashMap</code> of
* <code>IActivityElements</code>
*/ */
public Map<String, IActivityElement> getElements() { public Map<String, IActivityElement> getElements() {
if (this.elements == null) if (this.elements == null)
@ -188,11 +207,12 @@ public class Activity extends GroupedParameterizedElement
} }
/** /**
* @return the iterator for entries, which include the id as key and the {@link IActivityElement} as value * @return the iterator for entries, which include the id as key and the
* {@link IActivityElement} as value
*/ */
public Iterator<Entry<String, IActivityElement>> elementIterator() { public Iterator<Entry<String, IActivityElement>> elementIterator() {
if (this.elements == null) if (this.elements == null)
return Collections.<String, IActivityElement> emptyMap().entrySet().iterator(); return Collections.<String, IActivityElement>emptyMap().entrySet().iterator();
return this.elements.entrySet().iterator(); return this.elements.entrySet().iterator();
} }