// Autor: Stephan Bazalka // Matr.Nr.: 0225725 // Bsp: 4100 (Token-Ring-Netzwerk) package netzwerk; import eprog.*; import java.util.*; public class Input extends EprogIO { // Für Eingabe String nodes = ""; String packet = ""; short time = 0; String query = ""; // Für Weitergabe short numberOfNodes = 0; String[][] knotenArray = new String[10][2]; String[] paketArray = new String[3]; String[] abfrageArray = new String[2]; public Input() throws EprogException { // Eingabe einlesen nodes = readWord(); packet = readWord(); time = readShort(); query = readWord(); } public boolean check() { // Wenn Knoten, Paket, Zeit und Abfragetyp ok sind, gib true zurück if((checkNodes() & checkPacket() & checkTime() & checkQuery()) == true) { return true; } else { return false; } } // Nodes überprüfen private boolean checkNodes() { int count = 0; boolean wsExists = false; String node = ""; StringTokenizer knoten = new StringTokenizer(nodes, ","); numberOfNodes = (short) knoten.countTokens(); // Richtige Anzahl von Knoten? if (numberOfNodes < 3 || numberOfNodes > 10) { return false; } // Sind die Knoten richtig benannt? for(count=0; count 'Z') { return false; } // Länge des Namens zwischen 3 und 10? if ((node.length()-1) < 3 || (node.length()-1) > 10) { return false; } } // Gibts mindestens eine Workstation? if (wsExists == false) { return false; } // Wenn nicht vorher abgebrochen wurde, passts: return true; } // Packet überprüfen private boolean checkPacket() { int i = 0; int count = 0; boolean senderExists = false; String source = ""; String destination = ""; String content = ""; StringTokenizer paket = new StringTokenizer(packet, ","); // Abbrechen, wenn nicht genau 3 Tokens (Source, Destination, Content) if (paket.countTokens() != 3) { return false; } // Ist Sender vorhanden? paketArray[0] = source = paket.nextToken(); for(count=0; count 'z') && (content.charAt(i) < 'A' || content.charAt(i) > 'Z')) { return false; } i++; } // Hat Content richtige Länge? if(content.length() < 3 || content.length() > 10) { return false; } // Wenn nicht vorher abgebrochen wurde, passts: return true; } // Time überprüfen private boolean checkTime() { // Zeit muss mind. eins und max. Anzahl der Knoten + 1 sein if ( time < 1 || time > numberOfNodes + 1) { return false; } // Wenn nicht vorher abgebrochen wurde, passts: return true; } // Query überprüfen private boolean checkQuery() { char abfrageTyp = '?'; String abfrageRechner = ""; boolean exists = false; int count=0; StringTokenizer abfrage = new StringTokenizer(query, ","); abfrageTyp = abfrage.nextToken().charAt(0); abfrageArray[0] = new Character(abfrageTyp).toString(); // Abbrechen, wenn mehr Tokens und nicht q enthalten if(abfrage.hasMoreTokens() && query.indexOf("q") == -1) { return false; } switch(abfrageTyp) { case 'w': break; case 'p': break; case 's': break; case 'q': abfrageRechner = abfrage.nextToken(); for(count=0; count