Skip to content
Snippets Groups Projects
Nloc.java 1.83 KiB
Newer Older
package nloc;

import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Arrays;
public class Nloc {

  private static final int MIN_TIMEDIFF = 6;

  public int getNumberOfDroplets(List<Channel> desiredPath) {
    int numOfDroplets = 1;
    ListIterator<Channel> iter = desiredPath.listIterator();
    while(iter.hasNext()) {
      Channel current = iter.next();
      if (current.isBifurcation()) {
        numOfDroplets *= (current.getChildrenList().indexOf(iter.next()) + 1);
        iter.previous();
      }
    }
    return numOfDroplets;
  }
  public List<Droplet> generateDropletSequence(List<String> modules) {
  public List<Channel> getDesiredPath(List<Channel> modules,
      List<List<Channel>> pathlist) {
    List<Channel> found = new ArrayList<Channel>();
    for (List<Channel> path : pathlist) {
      if (path.containsAll(modules)) {
        found = path;
      }
    }
    return found;
  }

  public List<Channel> getModulesByName(List<String> names, 
      List<Channel> chanlist) {
    List<Channel> ret = new ArrayList<Channel>();
    for (String name : names) {
      for (Channel ch : chanlist) {
        if (ch instanceof Module && ((Module)ch).getModuleName().equals(name)) {
          ret.add(ch);
        } 
      }
    }
    return ret;
  }

  public List<List<Channel>> getAllPaths(Channel chan, List<Channel> path) {
    List<List<Channel>> pl = new ArrayList<List<Channel>>();
    getAllPathsRecursive(chan, path, pl);
    return pl;
  }

  private void getAllPathsRecursive(Channel chan, List<Channel> path, List<List<Channel>> pathlist) {
    if (chan.getChildrenList().isEmpty()) { 
      pathlist.add(path);
    } else {
      for (Channel ch : chan.getChildrenList()) {
        getAllPathsRecursive(ch, new ArrayList<Channel>(path), pathlist);
      }
    }
  }