Begleitmaterial Abitur 2024

Lösung der Aufgabe

Modellierung

Siehe Webshop Projekt unter Implementation

Implementation

import Netzklassen.Server;
import Netzklassen.List;
import java.lang.Integer;
public class ShopServer extends Server{
    
    private List<Bestellung> bestellungen = new List<Bestellung>();
    
    public ShopServer(){
        super(123);
    }
    
    public void processMessage(String pClientIP, int pClientPort, String pMessage) {
        String header = pMessage.split(":")[0];
        String content = pMessage.split(":", 2)[1];
        switch(header){
            case "EINHORNFURZKISSEN":
                String g = content.split(":")[0];
                String f = content.split(":")[1];
                if(groesseKorrekt(g) && farbeKorrekt(f)){
                    System.out.println("teststatement");
                    Bestellung b = new Bestellung(new Einhornfurzkissen(21.72, g, f));
                    int id = len(bestellungen);
                    b.setID(id);
                    b.setBestaetigt(false);
                    bestellungen.append(b);
                    send(pClientIP, pClientPort, "1:" + g + ":" + f + ":" + id);
                }else{
                    send(pClientIP, pClientPort, "0:Ungültige Eingabe! Wählen Sie Größe und Farbe für ihr Furzkissen!");
                }
                break;
            case "BESTAETIGUNG":
                if(content.split(":")[0].equals("ja")){
                    send(pClientIP, pClientPort, "2:Großartige Bestellung! Merci und Au revoir!");
                    bestaetige(Integer.parseInt(content.split(":")[1]));
                    close();
                }else{
                    send(pClientIP, pClientPort, "0:Ursprünglich flasche Eingabe! Wählen Sie Größe und Farbe für ihr Furzkissen!");
                }
                break;
            default:
                break;
        }
    }
    
    private void bestaetige(int id){
        bestellungen.toFirst();
        while(bestellungen.hasAccess()){
            if(bestellungen.getContent().getID() == id){
                bestellungen.getContent().setBestaetigt(true);
            }
        }
    }
    
    private int len(List pList){
        int out = 0;
        pList.toFirst();
        while(pList.hasAccess()){
            pList.next();
            out++;
        }
        return out;
    }
    
    public  void processNewConnection(String pClientIP, int pClientPort) {
        send(pClientIP, pClientPort, "0:Willkommen! Wählen Sie Größe und Farbe für ihr Furzkissen!");
    }
    
    public void processClosingConnection(String pClientIP, int pClientPort){
    }
    
    private boolean farbeKorrekt(String in){
       String[] pos = {"Lila", "Blau", "Grün", "Pink"};
       boolean out = false;
       for(String i:pos){
           if(i.equals(in)) out = true;
       }
       return out;
    }
    
    private boolean groesseKorrekt(String in){
       String[] pos = {"S", "M", "L", "XL"};
       boolean out = false;
       for(String i:pos){
           if(i.equals(in)) out = true;
       }
       return out;
    }
}