package nl.fontys.sofa.limo.domain.component;
import com.google.gson.annotations.Expose;
import java.util.List;
import nl.fontys.sofa.limo.domain.component.event.Event;
import nl.fontys.sofa.limo.domain.component.procedure.Procedure;
/**
* Node is a graph node. Each hub and leg is part of a graph with a next and
* previous node. A hub can only have legs as next and previous nodes, while a
* leg can only have hubs.
*
* @author Dominik Kaisers {@literal <d.kaisers@student.fontys.nl>}
* @param <T> Type of Node. Leg for Hubs and Hub for Legs.
*/
public abstract class Node<T extends Node> extends Component {
private static final long serialVersionUID = -7756347619644993900L;
@Expose
protected T next;
protected T previous;
public Node() {
super();
}
public T getNext() {
return next;
}
public void setNext(T next) {
this.next = next;
if (this.next.previous == null || !this.next.previous.equals(this)) {
this.next.previous = this;
}
firePropertyChange();
}
/**
* Remove getNext() object from this object. This method also removes the
* getPrevious() object of the next object.
*/
public void removeNext() {
this.next.previous = null;
this.next = null;
firePropertyChange();
}
/**
* Remove getPrevious() object from this object. This method also removes
* the getNext() object of the previous object.
*/
public void removePrevious() {
this.previous.next = null;
this.previous = null;
firePropertyChange();
}
public T getPrevious() {
return previous;
}
public void setPrevious(T previous) {
this.previous = previous;
if (this.previous.next == null || !this.previous.next.equals(this)) {
this.previous.next = this;
}
firePropertyChange();
}
@Override
public void setDescription(String description) {
super.setDescription(description); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setEvents(List<Event> events) {
super.setEvents(events); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setId(String id) {
super.setId(id); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setLastUpdate(long lastUpdate) {
super.setLastUpdate(lastUpdate); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setName(String name) {
super.setName(name); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setProcedures(List<Procedure> procedures) {
super.setProcedures(procedures); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
@Override
public void setUniqueIdentifier(String uniqueIdentifier) {
super.setUniqueIdentifier(uniqueIdentifier); //To change body of generated methods, choose Tools | Templates.
firePropertyChange();
}
}