📄 boks.java
字号:
} public void report() { if (mp.size() == 0 && foundUplinkBoksid()) return; outl("Boks("+getBoksid()+"): <b>"+getName()+"</b> foundUplinkMp: <b>"+foundUplinkMp()+"</b> foundUplinkBoks: <b>"+foundUplinkBoksid()+"</b><br>"); if (mp.size() == 0) return; Iterator iter = mp.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); String mpKey = (String)entry.getKey(); List l = (List)entry.getValue(); if (l.size() == 0) { outl("-->MP: <b>"+mpKey+"</b> <i>Warning</i>, downlink unit not found!<br>"); continue; } // Prøv å gjette hvilken enhet som er riktig, gå ut ifra at SW alltid står over KANT int bestGuessIndex = -1; for (int i=0; i < l.size(); i++) { Boks b = (Boks)bokser.get( ((BoksMpBak)l.get(i)).boksbak ); if (b.isSW()) { if (bestGuessIndex == -1) bestGuessIndex = i; else bestGuessIndex = -2; } } if (bestGuessIndex < 0) { // Mer enn en SW, gjett på den med høyest antall connections int cnt=0; for (int i=0; i < l.size(); i++) { Boks b = (Boks)bokser.get( ((BoksMpBak)l.get(i)).boksbak ); if (b.getBehindMpCount() > cnt) { cnt = b.getBehindMpCount(); bestGuessIndex = i; } } } String bestGuess = " Best guess: N/A"; if (bestGuessIndex >= 0) { Boks b = (Boks)bokser.get( ((BoksMpBak)l.get(bestGuessIndex)).boksbak ); bestGuess = " Best guess("+b.getBoksid()+"): <b>"+b.getName()+"</b>"; } outl("-->MP: <b>"+mpKey+"</b> Candidates: <b>"+l.size()+"</b>"+bestGuess+"<br>"); for (int i=0; i < l.size(); i++) { // Sjekk om vi allerede har funnet uplink for denne enheten, i så tilfellet tar vi den ut fra listen //Integer boksbak = (Integer)l.get(i); BoksMpBak bmp = (BoksMpBak)l.get(i); //outl("Trying to find boksbak: <b>" + boksbak + "</b><br>"); Boks b = (Boks)bokser.get(bmp.boksbak); outl("---->Boksbak("+b.getBoksid()+"): <b>"+b.getName()+"</b> behindMpCount: <b>"+b.getBehindMpCount()+"</b><br>"); } } } public void addToMp(Map boksMp) { Iterator iter = mpBoksbak.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry)iter.next(); String mpKey = (String)entry.getKey(); //Integer boksbak = (Integer)entry.getValue(); BoksMpBak bmp = (BoksMpBak)entry.getValue(); boksMp.put(getBoksid()+":"+mpKey, bmp); } } public void oldting() { /* this.nettelid=Integer.parseInt(nettelid); this.id = new Integer(nettelid); this.via3=Integer.parseInt(via3); this.port = new String[end-begin]; this.idbak = new int[end-begin]; for (int i=0; i < end-begin; i++) { this.port[i] = port[begin+i]; this.idbak[i] = Integer.parseInt(idbakS[begin+i]); } port=this.port; // Finn uplink port for (int i=0; i < idbak.length; i++) { if (idbak[i] == this.via3) { uplinkPort = port[i]; // Sett uplink direkte mot gw som default uplink = new Integer(this.via3); break; } } porter = new ArrayList(); nettelPort = new HashMap(); if (DEBUG_OUT) com.outl("-->Nettel: " + nettelid + ", " + nettelNavn.get(new Integer(nettelid)) + " (checking " + port.length + " links)<br>"); for (int k = 0; k < port.length; ) { if (port[k].equals(uplinkPort)) { k++; continue; } if (idbak[k] == this.via3) { k++; continue; } if (DEBUG_OUT) com.outl("---->Port: " + port[k] + "<br>"); ArrayList l = new ArrayList(); do { if (DEBUG_OUT) com.outl("------>Adding("+k+"): " + idbak[k] + ", " + nettelNavn.get(new Integer(idbak[k])) + "<br>"); nettelPort.put(new Integer(idbak[k]), port[k]); l.add(new Integer(idbak[k])); k++; } while (k<port.length && port[k-1].equals(port[k])); if (DEBUG_OUT) com.outl("---->Done("+k+"). total: " + l.size() + "<br>"); porter.add(l); } //com.outl("-->Porter size: " + porter.size() + "<br>" ); */ } public boolean processLevel(int level) { /* boolean done = true; boolean addDownl=false;; //com.outl("---->Porter size: " + porter.size() + "<br>" ); for (int i=0; i < porter.size(); i++) { ArrayList l = (ArrayList)porter.get(i); //com.outl("---->Check size: " + l.size() + "<br>" ); if (l.size() == level) { porter.remove(i); i--; String port = (String)nettelPort.get(l.get(0)); com.out("---->Direct downlink (<b>"+port+"</b>): "); boolean b=false; int diff=Integer.MAX_VALUE; Integer guess=null; for (int j=0; j < l.size(); j++) { Nettel n = (Nettel)hm.get((Integer)l.get(j)); int numDownl = (n!=null) ? n.numDownlinks() : -1; if (numDownl == level-1 || (level==1 && n==null) ) { com.out("(<b>"+nettelNavn.get(l.get(j)) + "</b>,"+numDownl+") "); addDownlink((Integer)l.get(j)); if (n != null) n.setUplink(new Integer(getId())); numDownlinks += level; addDownl=true; b=true; } else { //com.outl("(No link["+l.get(j)+","+nettelNavn.get(l.get(j))+","+numDownl+"]: " + n + ")"); if (Math.abs(level-numDownl) < diff) { diff = Math.abs(level-numDownl); guess = (Integer)l.get(j); } } } if (!b) { com.out("<b>Warning:</b> No matches for downlink [best guess: ("+guess+")<b>"+nettelNavn.get(guess)+"</b>], candidates are: "); for (int j=0; j < l.size(); j++) { Nettel n = (Nettel)hm.get((Integer)l.get(j)); int numDownl = (n!=null) ? n.numDownlinks() : -1; com.out("(<b>"+nettelNavn.get(l.get(j)) + "</b>,"+numDownl+") "); } } com.outl("<br>"); } } if (addDownl) com.outl("---->Total downlinks: <b>" + numDownlinks + "</b><br>"); //com.outl("---->After Porter size: " + porter.size() + "<br>" ); */ /* if (level > 5) return true; if (level > 3 && porter.size()>0) { ArrayList l = (ArrayList)porter.get(0); if (l!=null) com.outl("ID: " + nettelid + " size: " + l.size() + " port: " + l.get(0) + "<br>"); } */ //if (level > 300) return true; //return porter.size()==0; return true; } /* private void addDownlink(Integer nettelid) { downlinks.add(nettelid); } public void setUplink(Integer nettelid) { uplink = nettelid; } public ArrayList getDownlinks() { return downlinks; } public String[][] getFormatedDownlinks() { String[][] dl = new String[downlinks.size()][4]; for (int i=0; i < downlinks.size(); i++) { Integer id = (Integer)downlinks.get(i); String port = (String)nettelPort.get(id); String name = (String)nettelNavn.get(id); String type = (String)nettelType.get(id); dl[i][0] = ""+id; dl[i][1] = port; dl[i][2] = name; dl[i][3] = type; } return dl; } public String[] getUplink() { String[] ul = new String[4]; ul[0] = ""+uplink; ul[1] = uplinkPort; ul[2] = (String)nettelNavn.get(uplink); ul[3] = (String)nettelType.get(uplink); return ul; } public int numDownlinks() { return numDownlinks; } */ public void addUplinkBoksid(BoksMpBak bmp, String myIfindex) { /* if (getBoksid() == 716 && bmp.boksbak.equals(new Integer(708))) { System.err.println("boksbak: "+bmp.boksbak+" modulbak: " + bmp.modulbak + " portbak: " + bmp.portbak); } */ String ifindex = null; if (myIfindex != null) { ifindex = myIfindex.toString(); } else { ifindex = (String)rawBoksbakMp.get(bmp.boksbak); } if (ifindex == null && foundUplinkMp()) ifindex = uplinkMp; if (ifindex != null) { if (ifindex.equals(uplinkMp)) uplinkBoksid = bmp.boksbak; mpBoksbak.put(ifindex, bmp); boksbakMp.put(bmp.hashKey(), ifindex); if (DEBUG_OUT) outl("[UPLINK]: Added("+bmp.boksbak+") "+boksNavn.get(bmp.boksbak)+" as an uplink for ("+getBoksid()+") " + getName() + ", ifIndex: " + ifindex + ", isUplink: " + foundUplinkBoksid() + "<br>"); } else { uplinkBoksid = bmp.boksbak; } } /* public void addUplinkBoksid2(int boksid) { Integer boksbak = new Integer(boksid); String mp = null; // Først sjekker vi om vi finner enheten på noe annet enn uplink-porten if (rawBoksbakMp.containsKey(boksbak)) mp = (String)rawBoksbakMp.get(boksbak); //if (foundUplinkMp() && mp.equals(uplinkMp)) { // // Enheten er funnet på uplink-porten // uplinkBoksid = boksbak; //} //mpBoksbak.put(mp, boksbak); //boksbakMp.put(boksbak, mp); //com.outl("[BOKS]: Added("+boksid+") "+boksNavn.get(boksbak)+" as a uplink for ("+getBoksid()+") " + getName() + ", MP: " + mp + "<br>"); //} if (mp == null && foundUplinkMp()) mp = uplinkMp; if (mp != null) { if (mp.equals(uplinkMp)) uplinkBoksid = boksbak; mpBoksbak.put(mp, boksbak); boksbakMp.put(boksbak, mp); if (DEBUG_OUT) outl("[UPLINK]: Added("+boksid+") "+boksNavn.get(boksbak)+" as a uplink for ("+getBoksid()+") " + getName() + ", MP: " + mp + ", isUplink: " + foundUplinkBoksid() + "<br>"); } else { uplinkBoksid = boksbak; } } */ public boolean foundUplinkBoksid() { return uplinkBoksid != null; } public boolean foundUplinkMp() { return uplinkMp != null; } public String getUplinkMp() { return uplinkMp; } // Returnerer bak hvilken mp en boksid befinner seg, eller null hvis denne boksen ikke har link til enheten //public Mp getMpTo(Integer boksid) { return new Mp((String)boksbakMp.get(boksid)); } //public Mp getMpTo(int boksid, String modulbak, String portbak) { return new Mp((String)boksbakMp.get(boksid+":"+modulbak+":"+portbak)); } public String getIfindexTo(int boksid, String toIfindex) { return (String)boksbakMp.get(boksid+":"+toIfindex); } public int getBehindMpCount() { return behindMpCount; } public int getBoksid() { return boksid; } public Integer getBoksidI() { return new Integer(getBoksid()); } public String getName() { return (String)boksNavn.get(getBoksidI()); } public boolean isSW() { return isSW; } // Returnerer det støreste antall enheter bak en port på denne boksen public int maxBehindMp() { return maxBehindMp; } private void outl(String s) { System.out.println(s); } private void out(String s) { System.out.print(s); } /* private void outl(String s) { System.err.println("outl: " + s + " com: " + com); com.outl(s); } private void out(String s) { com.out(s); } */ public String toString() { return getName(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -