Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Handler; import DataSet.Foglalas; import DataSet.Szoba; import Protokoll.Body; import Protokoll.Head; import Protokoll.Message; import Protokoll.ProtokollUzenetek; import com.szallodanyilvantartorendszer.szallide.Client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.TimeZone; import java.util.logging.Level; import java.util.logging.Logger; import org.joda.time.DateTimeComparator; public class VendegMenu { Message message = new Message(new Head(), new Body()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String standardInput; DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); boolean vissza = false; static public String Menu = "1 - Szabad szobak listazasa\n" + "2 - Foglalasok kezelese\n" + "3 - Fizetes\n" + "4 - Kilepes\n" + "Parancs: "; static public String FoglalasokKezeleseMenu = "1 - Foglalas letrehozasa\n" + "2 - Foglalas megtekintese\n" + "3 - Foglalas torlese\n" + "4 - Vissza\n" + "Parancs: "; static public String FoglalasLetrehozasaMenu = "1 - Foglalas erre az intervallumra\n" + "2 - Visszalepes\n" + "Parancs: "; static public String FizetesMenu = "1 - Fizetendo elemek megtekintese\n" + "2 - Elemek fizetese\n" + "3 - Vissza\n" + "Parancs: "; public VendegMenu(Message message) { this.message = message; } // A szerver oldalrl rkez zenetek feldolgozsa tpus szerint public Message Run() throws IOException { switch (message.getHead().getTipus()) { case Bejelentkezes: return Fomenu(); case Fizetes: return fizetesUzenetSzervernek(message); case FoglalasokKezelese: return foglalasUzenetSzervernek(message); case SzabadSzobakListazasa: return SzabadSzobakListazasa_S(); default: System.out.print(Menu); break; } return message; } // +++ Fmen +++ public Message Fomenu() throws IOException { System.out.print(Menu); message.getHead().setFeladat(null); standardInput = br.readLine(); switch (standardInput) { case "1": message.getHead().setTipus(ProtokollUzenetek.Tipusok.SzabadSzobakListazasa); message = SzabadSzobakListazasa(); break; case "2": message.getHead().setTipus(ProtokollUzenetek.Tipusok.FoglalasokKezelese); message = FoglalasokKezelese(); break; case "3": message.getHead().setTipus(ProtokollUzenetek.Tipusok.Fizetes); message = Fizetes(); break; case "4": message.getHead().setTipus(ProtokollUzenetek.Tipusok.Kilepes); message = Kilepes(); break; default: System.out.println("Ervenytelen menu elem!"); message = Fomenu(); break; } if (vissza) { vissza = false; message = Fomenu(); } return message; } // --- Fmen --- Message foglalasUzenetSzervernek(Message message) { switch (message.getHead().getFeladat()) { case FoglalasLetrehozasaBefejezes: message = FoglalasLetrehozasa_S(); break; case FoglalasMegtekinteseBefejezes: message = FoglalasokMegtekintese_S(); break; case FoglalasTorleseBefejezes: message = FoglalasTorlese_S(); break; } return message; } Message fizetesUzenetSzervernek(Message message) { switch (message.getHead().getFeladat()) { case FizetendoElemekMegtekinteseBefejezes: message = FizetendoElemekMegtekintese_S(); break; case ElemFizeteseBefejezes: message = ElemFizetese_S(); break; } return message; } // +++ Szabad szobk listzsa +++ public Message SzabadSzobakListazasa() { String kezdoDatumStr = null, vegDatumStr = null; Date kezdoDatum = null, vegDatum = null; try { System.out.print("Adja meg a megtekinteni kivan idoszak kezdodatumat (pelda: 2017-04-12): "); kezdoDatumStr = br.readLine(); kezdoDatum = df.parse(kezdoDatumStr); System.out.print("Adja meg a megtekinteni kivan idoszak vegdatumat (pelda: 2017-04-12): "); vegDatumStr = br.readLine(); vegDatum = df.parse(vegDatumStr); //df.setTimeZone(TimeZone.getTimeZone("CEST")); if (DateTimeComparator.getDateOnlyInstance().compare(kezdoDatum, vegDatum) == 1) { throw new Exception("A megtekinteni kivan idoszak kezdodatuma nem lehet kesobbi, mint a vegdatum"); } } catch (ParseException exc) { System.err.println("!!! Ervenytelen datum !!!"); message = SzabadSzobakListazasa(); } catch (Exception ex) { // Logger.getLogger(ClientMuveletFeldolgozas.class.getName()).log(Level.SEVERE, null, ex); System.out.println("!!! Hiba a datumok megadasanak modjaban !!!"); message = SzabadSzobakListazasa(); } ArrayList<String> kezdoEsVeg = new ArrayList<>(); kezdoEsVeg.add(kezdoDatumStr); kezdoEsVeg.add(vegDatumStr); message.getHead().setFeladat(null); message.getBody().setData(kezdoEsVeg); return message; } public Message SzabadSzobakListazasa_S() { if (message.getBody().getData() == null) { System.out.println("A megadott idotartomanyban nincs szabad szoba!"); } else { ArrayList<Szoba> szobak = (ArrayList<Szoba>) message.getBody().getData(); for (int i = 0; i < szobak.size(); i++) { System.out.println(szobak.get(i)); } } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } // --- Szabad szobk listzsa --- // +++ Foglalsok kezelse +++ public Message FoglalasokKezelese() throws IOException { System.out.println("--------------------------"); System.out.println(FoglalasokKezeleseMenu); standardInput = br.readLine(); switch (standardInput) { case "1": message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasLetrehozasa); message = FoglalasLetrehozasa(); break; case "2": message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasMegtekintese); message = FoglalasMegtekintese(); break; case "3": message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasTorlese); message = FoglalasTorlese(); break; case "4": return Fomenu(); default: System.out.println("--------------------------"); System.out.println("* Ervenytelen menu elem! *"); message = FoglalasokKezelese(); break; } return message; } public Message FoglalasLetrehozasa() { System.out.print(">> Foglalas letrehozasa <<\n" + "Adja meg a foglalas kezdodatumat (pelda: 2017-04-12): "); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasLetrehozasa); String kezdoDatumStr = null; String vegDatumStr = null; int szobaszam = 0; Date kezdoDatum = null, vegDatum = null; try { kezdoDatumStr = br.readLine(); kezdoDatum = df.parse(kezdoDatumStr); System.out.print("Adja meg a foglalas vegdatumat (pelda: 2017-04-12): "); vegDatumStr = br.readLine(); vegDatum = df.parse(vegDatumStr); System.out.println("Adja meg lefoglalni kivant szoba szamat!"); szobaszam = Integer.parseInt(br.readLine()); if (vegDatum.before(kezdoDatum)) { throw new Exception("A foglalas kezdodatuma nem lehet nagyobb, mint a vegdatum"); } } catch (ParseException exc) { System.out.println("!!! Ervenytelen formatum !!!"); message = FoglalasLetrehozasa(); } catch (Exception ex) { // Logger.getLogger(ClientMuveletFeldolgozas.class.getName()).log(Level.SEVERE, null, ex); System.out.println("!!! A kezdodatum nem lehet nagyobb, mint a vegdatum !!!"); message = FoglalasLetrehozasa(); } ArrayList<String> intervallum = new ArrayList<>(); intervallum.add(kezdoDatumStr); intervallum.add(vegDatumStr); ArrayList<Object> foglalasLetrehozasa = new ArrayList<>(); foglalasLetrehozasa.add(Client.getACTUAL_USER().getFelhasznalo_nev()); foglalasLetrehozasa.add(szobaszam); foglalasLetrehozasa.add(intervallum); message.getBody().setData(foglalasLetrehozasa); return message; } private Message FoglalasLetrehozasa_S() { if ((boolean) message.getBody().getData() == false) { System.out.println( "Sikertelen foglalas!!!\nA szoba sajnos foglalt az adott idpontban!\nKrjk prbjon meg egy msik szobt lefoglalni.\nKsznjk!"); } else { System.out.println("Sikeres foglalas! "); } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } public Message FoglalasTorlese() { System.out.println(">> Foglalasok torlese <<"); System.out.println("Adja meg a torolni kivant foglalas azonositojat! "); int foglalasID = 0; try { foglalasID = Integer.parseInt(br.readLine()); } catch (IOException ex) { System.out.println("Hibas adat"); message = FoglalasTorlese(); //Logger.getLogger(VendegMenu.class.getName()).log(Level.SEVERE, null, ex); } message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasTorlese); message.getBody().setData(foglalasID); return message; } private Message FoglalasTorlese_S() { if ((boolean) message.getBody().getData() == false) { System.out.println("Sikertelen torles!!!"); } else { System.out.println("Sikeres torles! "); } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } public Message FoglalasMegtekintese() { System.out.print(">> Foglalasok listazasa <<\n"); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FoglalasMegtekintese); message.getBody().setData(Client.getACTUAL_USER().getFelhasznalo_nev()); return message; } private Message FoglalasokMegtekintese_S() { if (message.getBody().getData() == null) { System.out.println("Hiba!"); } else { ArrayList<Szoba> szobak = (ArrayList<Szoba>) message.getBody().getData(); for (int i = 0; i < szobak.size(); i++) { System.out.println(szobak.get(i)); } } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } // +++ Fizets +++ public Message Fizetes() throws IOException { System.out.println("--------------------------"); System.out.println(FizetesMenu); standardInput = br.readLine(); switch (standardInput) { case "1": message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FizetendoElemekMegtekintese); message = FizetendoElemekMegtekintese(); break; case "2": message.getHead().setFeladat(ProtokollUzenetek.Feladatok.ElemFizetese); message = ElemFizetese(); break; case "3": return Fomenu(); default: System.out.println("--------------------------"); System.out.println("* Ervenytelen menu elem! *"); message = FoglalasokKezelese(); break; } return message; } // --- Fizets --- public Message Kilepes() { message.getHead().setTipus(ProtokollUzenetek.Tipusok.Kilepes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); System.out.println("Sikeres kijelentkezs."); return message; } private Message FizetendoElemekMegtekintese() { System.out.print(">> Fizetendo elemek listazasa <<\n"); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FizetendoElemekMegtekintese); message.getBody().setData(Client.getACTUAL_USER().getFelhasznalo_nev()); return message; } private Message ElemFizetese() throws IOException { System.out.println(">> Elem fizetese <<"); System.out.println("Adja meg a fizetni kivant foglalas azonositojat! "); int foglalasID = 0; try { foglalasID = Integer.parseInt(br.readLine()); } catch (NumberFormatException ex) { System.out.println("Nem megfelelo azonosito"); message = ElemFizetese(); //Logger.getLogger(VendegMenu.class.getName()).log(Level.SEVERE, null, ex); } message.getHead().setFeladat(ProtokollUzenetek.Feladatok.ElemFizetese); message.getBody().setData(foglalasID); return message; } private Message FizetendoElemekMegtekintese_S() { if (message.getBody().getData() == null) { System.out.println("Hiba!"); } else { ArrayList<Foglalas> foglalasok = (ArrayList<Foglalas>) message.getBody().getData(); for (int i = 0; i < foglalasok.size(); i++) { System.out.println(foglalasok.get(i)); } } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } private Message ElemFizetese_S() { if ((boolean) message.getBody().getData() == false) { System.out.println("Sikertelen fizetes!!!"); } else { System.out.println("Sikeres fizetes! "); } message.getHead().setTipus(ProtokollUzenetek.Tipusok.Bejelentkezes); message.getHead().setFeladat(ProtokollUzenetek.Feladatok.FeladatBefejezes); return message; } }