package nloc; import java.util.List; import java.util.ArrayList; import java.util.ListIterator; import java.util.Arrays; public class TestNloc { public static void main(String[] args) { //Nloc nlSX = new Nloc(getNlocS1()); //Nloc nlSX = new Nloc(getNlocS2()); Nloc nlSX = new Nloc(getNlocS6()); // generate list of sequernces Droplet p = new Droplet(DropletType.PAYLOAD,"p"); //Droplet h1 = new Droplet(DropletType.HEADER,"h1"); //Droplet h2 = new Droplet(DropletType.HEADER,"h2"); //Droplet h3 = new Droplet(DropletType.HEADER,"h3"); List<List<SequenceTuple>> sequences = new ArrayList<List<SequenceTuple>>(); List<List<Channel>> pathlist = nlSX.getAllPaths(); try { List<Channel> modulesToVisit = nlSX.getModulesByName(Arrays.asList("m4","d1","m1","m3","m0", "m5")); List<Channel> payloadPath = nlSX.getDesiredPath(modulesToVisit, pathlist); //List<Channel> modulesToVisitH1 = nlSX.getModulesByName(Arrays.asList("m4","d1","m1","m3","m0", "m5")); //List<Channel> h1Path = nlSX.getDesiredPath(modulesToVisitH1, pathlist); //List<Channel> modulesToVisitH2 = nlSX.getModulesByName(Arrays.asList("m4","m1", "m0", "m5")); //List<Channel> h2Path = nlSX.getDesiredPath(modulesToVisitH2, pathlist); //List<Channel> modulesToVisitH3 = nlSX.getModulesByName(Arrays.asList("h3","m1", "m0", "m5")); //List<Channel> h3Path = nlSX.getDesiredPath(modulesToVisitH3, pathlist); SequenceTuple plt = new SequenceTuple(p,payloadPath,0,0); //SequenceTuple h1t = new SequenceTuple(h1,h1Path,-10,-10); //SequenceTuple h2t = new SequenceTuple(h2,h2Path,-15,-15); //SequenceTuple h3t = new SequenceTuple(h3,h3Path,-3,-3); List<SequenceTuple> s1 = new ArrayList<SequenceTuple>(); s1.add(plt); //List<SequenceTuple> s2 = new ArrayList<SequenceTuple>(); //s2.add(plt); s2.add(h2t); //List<SequenceTuple> s3 = new ArrayList<SequenceTuple>(); //s3.add(plt); s3.add(h3t); sequences.add(s1); //sequences.add(s2); //sequences.add(s3); //for (List<SequenceTuple> sl: sequences) { // for (SequenceTuple stup: sl) { // System.out.print(stup.getDroplet().getType() + ": " + // stup.getDroplet().getName() + " -> "); // } // System.out.println(""); //} // // //TODO: for every bifurc calculate the list of sequences starting with // single entry for payload droplet //for (List<SequenceTuple> stl: sequences) { // List<List<SequenceTuple>> newsequences = nlSX.getSequencesAtBifurcation( // stl, stl.get(0), nlSX.getModuleByName("ch9")); // } //} //List<List<SequenceTuple>> newsequences = nlSXgetSequencesAtBifurcation( // s1, h1t, nlSX.getModuleByName("ch3")); //Pump pump = nlSX.getPump(); //Channel ch = nlSX.getModuleByName("ch15"); //List<List<Channel>> pathlist1 = nlSX.getAllPathsFromTo(pump, ch); //printPaths(pathlist); //printPath(payloadPath); //printPaths(pathlist1); } catch (Exception e) { System.out.println( e.getMessage()); } } public static void printSequences(List<List<SequenceTuple>> sequences) { for (List<SequenceTuple> sl: sequences) { for (SequenceTuple stup: sl) { if (sl.indexOf(stup) == (sl.size() - 1) { System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() + ":" + stup.getMaxPos()); } else { System.out.print(stup.getDroplet().getName() + ": " + stup.getMinPos() + ":" + stup.getMaxPos() + " -> "); } } System.out.println("\n"); } public static void printPath(List<Channel> path) { System.out.println("Pathlength Payload: " + Nloc.getPayloadPathlength(path)); System.out.println("Pathlength Header: " + Nloc.getHeaderPathlength(path)); for (Channel ch : path) { if (path.indexOf(ch) == (path.size() - 1)) { System.out.print(ch.getName()); } else { System.out.print(ch.getName() + " -> "); } } System.out.println(""); System.out.println(""); } public static void printPaths(List<List<Channel>> pathlist) { System.out.println(""); System.out.println("#############################"); System.out.println("# Number of paths found: " + pathlist.size()); System.out.println("#############################"); for (List<Channel> p : pathlist) { printPath(p); } } public static List<Channel> getNlocS1() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",3,3); Channel ch12 = new Channel("ch12",1,1); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m2 = new Module("m2", 5,1); Module d1 = new Module("d1", 5,1); Module d2 = new Module("d2", 5,1); Module h1 = new Module("h1", 5,1); Module h2 = new Module("h2", 5,1); Module f2 = new Module("f2", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, m0, m1, m2, d1, d2, h1, h2, f2, p0, s0); p0.addChild(ch1); p0.addChild(ch2); p0.addChild(ch3); ch1.addChild(m2); m2.addChild(ch4); ch4.addChild(d2); d2.addChild(ch6); ch2.addChild(h2); h2.addChild(ch5); ch6.addChild(ch7); ch5.addChild(ch7); ch3.addChild(ch7); ch7.addChild(m1); m1.addChild(ch8); ch8.addChild(f2); f2.addChild(ch9); ch9.addChild(ch11); ch9.addChild(ch10); ch11.addChild(h1); h1.addChild(ch12); ch12.addChild(ch13); ch10.addChild(ch13); ch13.addChild(m0); m0.addChild(ch14); ch14.addChild(d1); d1.addChild(ch15); ch15.addChild(s0); return chlist; } public static List<Channel> getNlocS2() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",1,1); Channel ch6 = new Channel("ch6",3,3); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",1,1); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",3,3); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",1,1); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",3,3); Channel ch18 = new Channel("ch18",1,1); Channel ch19 = new Channel("ch19",1,1); Channel ch20 = new Channel("ch20",1,1); Channel ch21 = new Channel("ch21",3,3); Channel ch22 = new Channel("ch22",1,1); Channel ch23 = new Channel("ch23",1,1); Channel ch24 = new Channel("ch24",1,1); Channel ch25 = new Channel("ch25",3,3); Channel ch26 = new Channel("ch26",1,1); Channel ch27 = new Channel("ch27",1,1); Channel ch28 = new Channel("ch28",1,1); Channel ch29 = new Channel("ch29",1,1); Channel ch30 = new Channel("ch30",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m2 = new Module("m2", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Module f2 = new Module("f2", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, ch20, ch21, ch22, ch23, ch24, ch25, ch26, ch27, ch28, ch29, ch30, m0, m1, m2, m3, m4, m5, h0, h3, d1, f2, p0, s0); p0.addChild(ch1); p0.addChild(ch2); p0.addChild(ch3); p0.addChild(ch4); ch1.addChild(m4); m4.addChild(ch8); ch8.addChild(ch11); ch8.addChild(ch12); ch12.addChild(d1); d1.addChild(ch15); ch2.addChild(ch9); ch3.addChild(m2); m2.addChild(ch5); ch5.addChild(ch6); ch5.addChild(ch7); ch6.addChild(ch9); ch9.addChild(h3); h3.addChild(ch13); ch4.addChild(ch10); ch7.addChild(ch10); ch10.addChild(f2); f2.addChild(ch14); ch14.addChild(ch16); ch14.addChild(ch17); ch11.addChild(ch18); ch15.addChild(ch18); ch13.addChild(ch18); ch16.addChild(ch18); ch18.addChild(m1); m1.addChild(ch19); ch19.addChild(ch20); ch19.addChild(ch21); ch21.addChild(ch22); ch17.addChild(ch22); ch22.addChild(m3); m3.addChild(ch23); ch23.addChild(ch24); ch23.addChild(ch25); ch20.addChild(ch26); ch24.addChild(ch26); ch26.addChild(m0); m0.addChild(ch28); ch25.addChild(h0); h0.addChild(ch27); ch28.addChild(ch29); ch27.addChild(ch29); ch29.addChild(m5); m5.addChild(ch30); ch30.addChild(s0); return chlist; } public static List<Channel> getNlocS6() { // channel(name, psteps, hsteps) Channel ch1 = new Channel("ch1",1,1); Channel ch2 = new Channel("ch2",1,1); Channel ch3 = new Channel("ch3",1,1); Channel ch4 = new Channel("ch4",1,1); Channel ch5 = new Channel("ch5",3,3); Channel ch6 = new Channel("ch6",1,1); Channel ch7 = new Channel("ch7",1,1); Channel ch8 = new Channel("ch8",1,1); Channel ch9 = new Channel("ch9",1,1); Channel ch10 = new Channel("ch10",3,3); Channel ch11 = new Channel("ch11",1,1); Channel ch12 = new Channel("ch12",1,1); Channel ch13 = new Channel("ch13",1,1); Channel ch14 = new Channel("ch14",3,3); Channel ch15 = new Channel("ch15",1,1); Channel ch16 = new Channel("ch16",1,1); Channel ch17 = new Channel("ch17",1,1); Channel ch18 = new Channel("ch18",1,1); Channel ch19 = new Channel("ch19",1,1); Channel ch20 = new Channel("ch20",1,1); Module m0 = new Module("m0", 5,1); Module m1 = new Module("m1", 5,1); Module m3 = new Module("m3", 5,1); Module m4 = new Module("m4", 5,1); Module m5 = new Module("m5", 5,1); Module h0 = new Module("h0", 5,1); Module h3 = new Module("h3", 5,1); Module d1 = new Module("d1", 5,1); Pump p0 = new Pump(); Sink s0 = new Sink(); List<Channel> chlist = Arrays.asList(ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, ch20, m0, m1, m3, m4, m5, h0, h3, d1, p0, s0); p0.addChild(ch1); p0.addChild(ch2); ch2.addChild(h3); h3.addChild(ch4); ch1.addChild(m4); m4.addChild(ch3); ch3.addChild(ch5); ch3.addChild(ch6); ch5.addChild(d1); d1.addChild(ch7); ch7.addChild(ch8); ch6.addChild(ch8); ch4.addChild(ch8); ch8.addChild(m1); m1.addChild(ch9); ch9.addChild(ch10); ch9.addChild(ch11); ch10.addChild(ch12); ch12.addChild(m3); m3.addChild(ch13); ch13.addChild(ch14); ch13.addChild(ch15); ch14.addChild(h0); h0.addChild(ch16); ch15.addChild(ch17); ch11.addChild(ch17); ch17.addChild(m0); m0.addChild(ch18); ch16.addChild(ch19); ch18.addChild(ch19); ch19.addChild(m5); m5.addChild(ch20); ch20.addChild(s0); return chlist; } }