<%@ page import="java.io.*" %> <%@ page import="java.util.*" %> Abgabegespräch Network Services

Abgabegespräch Network Services

Die Anmeldung für das 2. Abgabegespräch der Übung 2006 erfolgt über diese Seite! <% HttpSession session1 = request.getSession(true); %> <% String kennwort = request.getParameter("kennwort"); String gruppe = request.getParameter("gruppe"); boolean passwordValid = false; int gruppenNummer = 0; if (gruppe == null) gruppe = ""; if (gruppe != null && gruppe.length() > 0) { gruppenNummer = Integer.parseInt(gruppe.substring(3)); } String removeAll = request.getParameter("entfAnmeldung"); if (gruppe.equals(session1.getValue("logged-on"))) { passwordValid = true; } else { session1.putValue("logged-on", "no"); } if (gruppe.length() > 0 && kennwort != null) { Hashtable passwords = new Hashtable(); File pwdlistFile = new File("/home/eu/joe/servlets/results/nws-pwdlist.txt"); BufferedReader reader = new java.io.BufferedReader ( new FileReader(pwdlistFile)); String inputLine = null; while (( inputLine = reader.readLine()) != null) { String nwsPart = inputLine.substring(0, inputLine.indexOf(':')).trim(); java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(inputLine.substring(inputLine.indexOf(':')+1),","); java.util.ArrayList passwds = new java.util.ArrayList(); while(tokenizer.hasMoreTokens()) { passwds.add(tokenizer.nextToken().trim()); } passwords.put(nwsPart, passwds); } reader.close(); if (passwords.containsKey(gruppe)) { java.util.ArrayList validPasswords = (java.util.ArrayList)passwords.get(gruppe); for(int i=0; i

<% if (!passwordValid) { %>

Wählen Sie bitte Ihre Gruppe aus der Dropdown-List aus, und geben Sie das Root-Passwort Ihrer Gruppe ein (haben Sie bei der Accountvergabe bekommen).

Bei Problemen mit dieser Seite wenden Sie sich bitte an den Leiter der LVA (zum Beispiel wenn Ihr Passwort nicht funktioniert, oder Sie es nicht mehr wissen). <% } else { %>

Wählen Sie einen passenden Termin für Ihre Gruppe aus. Es ist zwar möglich mehrere Zeitslots gleichzeitig auszuwählen, es wird aber nur eine Selektion gespeichert. Die letzte Anmeldung einer Gruppe überschreibt den vorher ausgewählten Zeitslot. Mit der Checkbox Anmeldung aufheben wird die Anmeldung einer Gruppe vollständig entfernt.

Sollte eine Gruppe an überhaupt keinem der angegebenen Termine Zeit haben sind prinzipiell auch Alternativtermine möglich. Es ist auch möglich noch weitere Zeitslots zu öffnen, zB abends oder am Vormittag.

Beim Abgabegespräch (ca 15min je Gruppe) wird überprüft, ob Sie die Beispiele selbst gelöst haben, bzw. Sie mit der Übungsumgebung vertraut sind.

Das Abgabegespräch findet am Institut bei uns statt (Argentinierstrasse 8 / E1841). Normalerweise in der Institutsbibliothek.

<% } %>

<% if (passwordValid) { %>
Gruppe: <%= gruppe %>
Anmeldung Aufheben
<% } else { %> Passwort: <% } %> <%! class AnmeldeZeit { String datum; String uhrzeit; String status; AnmeldeZeit(String zeit) { this.datum = zeit.substring(0, zeit.indexOf(" ")); this.uhrzeit = zeit.substring(zeit.indexOf(" ")+1); this.status = "frei"; } public String Datum() { return datum; } public String Uhrzeit() { return uhrzeit; } public String getStatus() { return status; } public void setStatus(String s) { this.status = s; } public boolean isPassend(String zeitpunkt) { String s = datum + " "+uhrzeit; return zeitpunkt.equals(s); } } class DatumsComparator implements java.util.Comparator { public int compare(Object o1, Object o2) { String s1 = (String)o1; String s2 = (String)o2; int tag1 = Integer.parseInt(s1.substring(0, s1.indexOf("."))); int tag2 = Integer.parseInt(s2.substring(0, s2.indexOf("."))); int monat1 = Integer.parseInt(s1.substring(s1.indexOf(".")+1, s1.indexOf(".",s1.indexOf(".")+1))); int monat2 = Integer.parseInt(s2.substring(s2.indexOf(".")+1, s2.indexOf(".",s2.indexOf(".")+1))); if (monat1 == monat2) { if (tag1 == tag2) return 0 ; else return (tag1 < tag2) ? -1 : 1; } else { return (monat1 < monat2) ? -1 : 1; } } public boolean equals(Object obj) { return (obj instanceof DatumsComparator); } } class AnmeldeWoche { String woche; java.util.ArrayList anmeldeZeiten = new java.util.ArrayList(); java.util.HashMap zeitenDerTage = new java.util.HashMap(); java.util.HashSet zeitenAllerTage = new java.util.HashSet(); AnmeldeWoche(String woche) { this.woche = woche; } public String toString() { return woche; } public String getName() { return woche; } public String[] getTagesNamen() { String[] list = new String[zeitenDerTage.size()]; java.util.Iterator iter = zeitenDerTage.keySet().iterator(); int index = 0; while(iter.hasNext()) { String s = (String)iter.next(); list[index++] = s; } java.util.Arrays.sort(list, new DatumsComparator()); return list; } public String[] getTagesZeiten() { String[] list = new String[zeitenAllerTage.size()]; java.util.Iterator iter = zeitenAllerTage.iterator(); int index = 0; while(iter.hasNext()) { String s = (String)iter.next(); list[index++] = s; } java.util.Arrays.sort(list); return list; } public String getStatus(String tagesNamen, String uhrzeit) { if (zeitenDerTage.containsKey(tagesNamen)) { java.util.ArrayList tagesZeitenDiesesTages = (java.util.ArrayList)zeitenDerTage.get(tagesNamen); java.util.Iterator iter = tagesZeitenDiesesTages.iterator(); while(iter.hasNext()) { AnmeldeZeit zeit = (AnmeldeZeit)iter.next(); if (uhrzeit.equals(zeit.Uhrzeit())) { return zeit.getStatus(); } } return "-"; } else { return "fehler"; } } public void addAnmeldeZeit(String zeit) { AnmeldeZeit anmeldeZeit = new AnmeldeZeit(zeit); anmeldeZeiten.add(anmeldeZeit); java.util.ArrayList tagesZeiten = null; if (zeitenDerTage.containsKey(anmeldeZeit.Datum())) { tagesZeiten = (java.util.ArrayList)zeitenDerTage.get(anmeldeZeit.Datum()); } else { tagesZeiten = new java.util.ArrayList(); zeitenDerTage.put(anmeldeZeit.Datum(), tagesZeiten); } tagesZeiten.add(anmeldeZeit); zeitenAllerTage.add(anmeldeZeit.Uhrzeit()); } private AnmeldeZeit getAnmeldeZeit(String anmeldeZeitpunkt) { for (int i=0; i=0; --i) { AnmeldeZeit anmeldeZeit = (AnmeldeZeit)anmeldeZeiten.get(i); s1 = s1 + "!"+anmeldeZeit.getStatus()+"!"; } return s1; } public AnmeldeZeit getLetzteAnmeldeZeitFuerGruppe(String gruppe) { for(int i=anmeldeZeiten.size()-1; i>=0; --i) { AnmeldeZeit anmeldeZeit = (AnmeldeZeit)anmeldeZeiten.get(i); if (gruppe.equals(anmeldeZeit.getStatus())) return anmeldeZeit; } return null; } public void addAnmeldung(String anmeldung) { if (anmeldung.indexOf("nws") == -1) return; String gruppe = anmeldung.substring(anmeldung.indexOf("::")+2, anmeldung.indexOf("nws")+5).trim(); removeAnmeldungenFuerGruppe(gruppe); String anmeldeZeitpunkt = anmeldung.substring(anmeldung.indexOf("nws")+6, anmeldung.indexOf("A")-1).trim(); String anmeldeTyp = anmeldung.substring(anmeldung.indexOf("A")).trim(); AnmeldeZeit zeit = getAnmeldeZeit(anmeldeZeitpunkt); if (anmeldeTyp.equals("Ab")) zeit.setStatus("frei"); else zeit.setStatus(gruppe); } } public static void copyFile(File input, File output) throws IOException { FileInputStream fis = new FileInputStream(input); FileOutputStream fos = new FileOutputStream(output); byte[] buf = new byte[1024]; int i = 0; while((i=fis.read(buf))!=-1) { fos.write(buf, 0, i); } fis.close(); fos.close(); } public static void writeEntry(String gruppe, String tag, String zeit, String typ) throws IOException { File anmeldeListe = new File("/home/eu/joe/servlets/results/anmeldeliste.txt"); Date today = new Date(); String datumsString=String.valueOf(today.getTime()); File backup = new File("/home/eu/joe/servlets/results/anmeldeliste-bkup-"+datumsString); copyFile(anmeldeListe, backup); FileOutputStream fs = new FileOutputStream(anmeldeListe, true); PrintWriter writer = new PrintWriter(fs); writer.print(today); writer.print(" ::"); writer.print(gruppe); writer.print(" "); writer.print(tag); writer.print(" "); writer.print(zeit); writer.print(" "); writer.println(typ); writer.flush(); writer.close(); } %> <% File anmeldeZeiten= new File("/home/eu/joe/servlets/results/anmelde-zeiten.txt"); BufferedReader reader = new BufferedReader ( new FileReader(anmeldeZeiten)); String inputLine = null; AnmeldeWoche letzteWoche = null; java.util.ArrayList anmeldeWochen= new java.util.ArrayList(); while (( inputLine = reader.readLine()) != null) { if (inputLine.trim().length() == 0) continue; if (inputLine.indexOf("Woche") == 0) { letzteWoche = new AnmeldeWoche(inputLine); anmeldeWochen.add(letzteWoche); continue; } String anmeldeZeit = inputLine; letzteWoche.addAnmeldeZeit(anmeldeZeit); } reader.close(); File anmeldeListe = new File("/home/eu/joe/servlets/results/anmeldeliste.txt"); // speichert einen eventuellen Wann Parameter ab! String[] tagesNamen1 = letzteWoche.getTagesNamen(); String[] tagesZeiten1 = letzteWoche.getTagesZeiten(); if (gruppe.equals(session1.getValue("logged-on"))) { outside: for(int tag = 0; tag < tagesNamen1.length; ++tag) { for(int zeit = 0; zeit < tagesZeiten1.length; ++zeit) { String gruppe1 = request.getParameter("wann"+tag+"-"+zeit); if (gruppe1 != null) { if (!"frei".equals(gruppe1)) { String tag2 = tagesNamen1[tag]; String zeit2 = tagesZeiten1[zeit]; writeEntry(gruppe, tag2, zeit2, "An"); break outside; } } } } } // laedt die anmeldeListe dazu! BufferedReader reader2 = new BufferedReader ( new FileReader(anmeldeListe)); while (( inputLine = reader2.readLine()) != null) { if (inputLine.trim().length() == 0) continue; letzteWoche.addAnmeldung(inputLine); } reader2.close(); if (gruppe.equals(session1.getValue("logged-on"))) { if (removeAll != null && removeAll.equals("aufheben")) { AnmeldeZeit zeit = letzteWoche.getLetzteAnmeldeZeitFuerGruppe(gruppe); if (zeit != null) { writeEntry(gruppe, zeit.Datum(), zeit.Uhrzeit(), "Ab"); } } BufferedReader reader3 = new BufferedReader ( new FileReader(anmeldeListe)); while (( inputLine = reader3.readLine()) != null) { if (inputLine.trim().length() == 0) continue; letzteWoche.addAnmeldung(inputLine); } reader3.close(); } %> <% if (passwordValid == false && gruppe != null && gruppe.length() > 0) { %> Anmeldung fehlgeschlagen! <% } %> <% for (int i=0; i <% String[] tagesNamen = woche.getTagesNamen(); for(int tagIndex=0; tagIndex <% } %> <% String[] tagesZeiten = woche.getTagesZeiten(); for(int zeitIndex=0; zeitIndex <% for (int tagIndex=0; tagIndex <% } else { %> <% } } %> <% } %>
Uhrzeit<%= tagesNamen[tagIndex] %>
<%= tagesZeiten[zeitIndex] %><%= status %>

<% } // for anmeldeWochen %>