/**@author Schleicher Johannes Beispielnummer: 4100 Beispielbeschreibung: Tokenringnetzwerk */ package Netzwerk; import eprog.*; import java.lang.*; import java.util.*; /**PRUEFT DIE EINGABE, KNOTENSTRUKTUR,PAKETSTRUKTUR USW..*/ public class Checkinput extends EprogIO { /** ATTRIBUTE*/ private String input=""; private String packet=""; private short time=0; private String query=""; private String nodes=""; /** HILFSATTRIBUTE*/ private int knotenanzahl=0; private int pointer=0; private String[] rechner; /** HAUPTMETHODE */ public boolean check () throws EprogException { boolean check=true; nodes=readWord(); packet=readWord(); time=readShort(); query=readWord(); check=checkNodes(); if(check==false) return check; else { check=checkPacket(); if(check==false) return check; else { check=checkTime(); if(check==false) return check; else { check=checkQuery(); if(check==false) return check; }//else }//else }//else return check; }//check /** PRUEFT DIE KNOTEN AUF KORREKTE STRUKTUR*/ private boolean checkNodes() { //KEINE GLEICHEN NAMEN StringTokenizer tokenizer=new StringTokenizer(nodes,","); String token=""; String rechnername=""; knotenanzahl=tokenizer.countTokens(); rechner=new String[knotenanzahl]; if(tokenizer.countTokens() < 3 || tokenizer.countTokens() > 10) return false; int i=0; int workstationcount=0; while(tokenizer.hasMoreTokens()) { token=tokenizer.nextToken(); switch(token.charAt(0)) { case 'K': break; case 'W':workstationcount++; break; case 'F': break; case 'P': break; default: return false; }//switch if(token.charAt(1) <= 64 || token.charAt(1) >= 91) return false; rechnername=token.substring(1,token.length()); if(rechnername.length() < 3 || rechnername.length() > 10) return false; else rechner[i]=token; i++; }//while if(workstationcount==0) return false; pointer=i; return true; }//checkNodes /**PRUEFT DIE PACKETE AUF KORREKTE STRUKTUR*/ private boolean checkPacket() { StringTokenizer tokenizer=new StringTokenizer(packet,","); String token=""; String source=""; String destination=""; String message=""; boolean exists=false; int i=0; if(tokenizer.countTokens() >3) return false; while(tokenizer.hasMoreTokens()) { token=tokenizer.nextToken(); switch(i) { case 0: source=token; break; case 1: destination=token; break; case 2: message=token; break; default: return false; // KONSTRUKT PRUEFEN }//switch i++; }//while /**UEBERPRUEFT OB DER SENDER EXISTIERT UND VOM TYP WORKSTATION IST*/ for(i=0;i10) return false; /** UEBERPRUEFT DIE PAKET INHALTE*/ for(i=0;i= 91 && message.charAt(i) <=96) || message.charAt(i) >= 123) return false; }//for for(i=0;i= 91 && source.charAt(i) <=96) || source.charAt(i) >= 123) return false; }//for for(i=0;i= 91 && destination.charAt(i) <=96) || destination.charAt(i) >= 123) return false; }//for return true; }//checkpacket /**PRUEFT DIE EINGEGEBENE ZEIT*/ private boolean checkTime() { if(time<1 || time >knotenanzahl+1) return false; return true; }//checkTime /**PRUEFT DIE EINGEGEBENE ABFRAGE*/ private boolean checkQuery() { /**OB RECHNERNAME EXISTIEREN MUSS IS UNKLAR*/ StringTokenizer tokenizer=new StringTokenizer(query,","); String token=tokenizer.nextToken(); int i=0; boolean exists=false; if(token.length()!=1) return false; switch(token.charAt(0)) { case 'w':if(tokenizer.hasMoreTokens()==true) return false; break; case 'p':if(tokenizer.hasMoreTokens()==true) return false; break; case 's':if(tokenizer.hasMoreTokens()==true) return false; break; case 'q':token=tokenizer.nextToken(); for(i=0;i