Skip to content
Snippets Groups Projects
Nloc.java 1.83 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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);
          }
        }
      }