Newer
Older
package nloc;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
public class Channel extends NlocEntity implements Comparable<Channel> {
private int pSteps, hSteps;
private List<Channel> parents;
private SortedSet<Channel> children;
private List<Droplet> dropletList;
public Channel(String name, int pSteps, int hSteps) {
super(name);
this.pSteps = pSteps;
this.hSteps = hSteps;
this.parents = new ArrayList<Channel>();
this.dropletList = new ArrayList<Droplet>();
}
public boolean containsDroplets() {
return !dropletList.isEmpty();
}
public int getLastDropletDistance() {
int minDist = Integer.MAX_VALUE;
if (dropletList.isEmpty()) {
minDist = -1;
} else {
// Sort dropletlist accoring to droplet position (smallest position first)
dropletList.sort((d1,d2) ->
d1.getPosition().getSteps() - d2.getPosition().getSteps());
minDist = dropletList.get(0).getPosition().getSteps();
//for (Droplet dr : dropletList) {
// int dist = dr.getPosition().getSteps();
// if (dist < minDist) {
// minDist = dist;
// }
//}
}
return minDist;
}
public int getMinSteps() {
int minsteps = 0;
if (pSteps < hSteps) {
minsteps = pSteps;
} else {
minsteps = hSteps;
}
return minsteps;
}
public List<Droplet> getNormalizedSortedDropletList() {
dropletList.sort((d1,d2) ->
d1.getNormalizedSteps() - d2.getNormalizedSteps());
return dropletList;
}
public List<Droplet> getDropletList() {
return dropletList;
}
public void removeDroplet(Droplet droplet) {
dropletList.remove(droplet);
}
public void addDroplet(Droplet droplet) {
dropletList.add(droplet);
}
public void setDropletList(List<Droplet> dropletList) {
this.dropletList = dropletList;
}
protected void setHSteps(int hSteps) {
this.hSteps = hSteps;
}
protected void setPSteps(int pSteps) {
this.pSteps = pSteps;
}
public int getPSteps() {
return pSteps;
}
public int getHSteps() {
return hSteps;
}
public void addChild(Channel child) {
if (!children.contains(child)) {
children.add(child);
child.addParent(this);
}
}
public void addParent(Channel parent) {
if (!parents.contains(parent)) {
parents.add(parent);
parent.addChild(this);
}
}
public List<Channel> getChildrenList() {
return Arrays.asList(children.toArray(new Channel[0]));
}
public List<Channel> getParents() {
return parents;
}
public int compareTo(Channel other) {
if (this.getPSteps() < other.getPSteps()) {
return -1;
} else if (this.getPSteps() == other.getPSteps()) {
return this.getName().compareTo(other.getName());
} else {
return 1;
}
}
}