/**@author Schleicher Johannes Beispielnummer: 4100 Beispielbeschreibung: Tokenringnetzwerk */ package Netzwerk; import eprog.*; import Netzwerk.*; import java.util.*; /**SIMULIERT DEN PAKETVERLAUF IM TOKENRINGNETZWERK*/ public class Simulation extends EprogIO { private String nodes=""; private String packets=""; private short time=0; private String query=""; private Node node; private Packet packet; /**KONSTRUKTOR*/ public Simulation (String extnodes, String extpackets, short exttime, String extquery) { nodes=extnodes; packets=extpackets; time=exttime; query=extquery; }//Simulation /**STARTET DIE SIMULATION*/ public void startSimulation () { StringTokenizer tokenizer=new StringTokenizer(packets,","); String token=""; String source=tokenizer.nextToken(); String destination=tokenizer.nextToken(); String message=tokenizer.nextToken(); packet=new Packet(source,destination,message,time); tokenizer=new StringTokenizer(nodes,","); Node[] structnodesarray=new Node[tokenizer.countTokens()]; int i=0; String rechnername=""; /** ERZEUGT DIE ENTSPRECHENDEN KNOTEN UND SPEICHERT SIE IN EINEM ARRAY*/ while(tokenizer.hasMoreTokens()) { token=tokenizer.nextToken(); switch(token.charAt(0)) { case 'K': rechnername=token.substring(1,token.length()); structnodesarray[i]=new Node(rechnername); break; case 'W': rechnername=token.substring(1,token.length()); structnodesarray[i]=new Workstation(rechnername); break; case 'F': rechnername=token.substring(1,token.length()); structnodesarray[i]=new Fileserver(rechnername); break; case 'P': rechnername=token.substring(1,token.length()); structnodesarray[i]=new Printserver(rechnername); break; default: }//switch i++; }//while int pointer=i; /**SETZT DEN NACHFOLGER FÜR JEDEN KNOTEN*/ for(i=0;iumlaufzeit) return "0"; else return ""+(umlaufzeit-time); }//if else { if(packet.isDeleted()==true) return ""+(time-umlaufzeit); else return "FALSCHE EINGABE"; }//else }//store private String print() { int i=0,umlaufzeit=1; boolean status=false; packet.reset(); while(!status) { node=packet.getCurrentNode(); node.processPacket(packet); status=packet.stoppedCircle(); umlaufzeit++; }//for status=false; if(packet.isPrinted()==true) { if(time>umlaufzeit) return "0"; else return ""+(umlaufzeit-time); }//if else { if(packet.isDeleted()==true) return ""+(time-umlaufzeit); else return "FALSCHE EINGABE"; }//else }//print private String where() { int i=0; for(i=1;i