package org.jbpm.gd.jpdl.model;
import java.util.ArrayList;
import java.util.List;
import org.jbpm.gd.common.model.AbstractNamedElement;
public class AbstractNode extends AbstractNamedElement implements NodeElement, DescribableElement {
private List events = new ArrayList();
private List exceptionHandlers = new ArrayList();
private List transitions = new ArrayList();
private Description description;
public void setDescription(Description newDescription) {
Description oldDescription = description;
description = newDescription;
firePropertyChange("description", oldDescription, newDescription);
}
public Description getDescription() {
return description;
}
public void addEvent(Event event) {
events.add(event);
firePropertyChange("eventAdd", null, event);
}
public void removeEvent(Event event) {
events.remove(event);
firePropertyChange("eventRemove", event, null);
}
public Event[] getEvents() {
return (Event[])events.toArray(new Event[events.size()]);
}
public void addExceptionHandler(ExceptionHandler exceptionHandler) {
exceptionHandlers.add(exceptionHandler);
firePropertyChange("exceptionHandlerAdd", null, exceptionHandler);
}
public void removeExceptionHandler(ExceptionHandler exceptionHandler) {
exceptionHandlers.remove(exceptionHandler);
firePropertyChange("exceptionHandlerRemove", exceptionHandler, null);
}
public ExceptionHandler[] getExceptionHandlers() {
return (ExceptionHandler[])exceptionHandlers.toArray(new ExceptionHandler[exceptionHandlers.size()]);
}
public void addTransition(Transition transition) {
if (transitions.contains(transition)) return;
transitions.add(transition);
firePropertyChange("transitionAdd", null, transition);
}
public void removeTransition(Transition transition) {
if (!(transitions.contains(transition))) return;
transitions.remove(transition);
transition.setSource(null);
firePropertyChange("transitionRemove", transition, null);
}
public Transition[] getTransitions() {
return (Transition[])transitions.toArray(new Transition[transitions.size()]);
}
public boolean isPossibleChildOf(NodeElementContainer nodeElementContainer) {
return true;
}
public void initializeName(NodeElementContainer nodeElementContainer) {
int runner = 1;
String prefix = getNamePrefix();
while (true) {
String candidate = prefix + runner;
if (nodeElementContainer.getNodeElementByName(candidate) == null) {
setName(candidate);
return;
}
runner ++;
}
}
}