import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Data is a class to edit files. * * @author Madeleine Vigier * @version 1.3 */ public class Data { private String pathRead; public Data(String pathRead) { this.pathRead = pathRead; } /** * readUser() is a method to split user.txt into lines and save them in an arraylist * * @return Arraylist userList * @author Madeleine Vigier, Sabine Gubitz */ public ArrayList readUser() { List rows = getRows(); ArrayList userList = new ArrayList<>(); for (String row : rows) { String[] parts = row.split(";"); String nameParent1 = parts[0]; String nameParent2 = parts[1]; String billAddress = parts[2]; String phonenumber = parts[3]; String nameChildren = parts[4]; String password = parts[5]; userList.add(new User(nameParent1, nameParent2, billAddress, phonenumber, nameChildren, password)); } return userList; } /** * readMenue() is a method to split menue.txt into lines and save them in an arraylist * * @return Arraylist menuelist * @author Madeleine Vigier, Sabine Gubitz */ public ArrayList readMenu() { List rows = getRows(); ArrayList menuList = new ArrayList<>(); for (String row : rows) { String[] parts = row.split(";"); String date = parts[0]; String dish = parts[1]; String sideDish = parts[2]; String typ = parts[3]; String ingredient = parts[4]; List ingredients = new ArrayList<>(); if (!ingredient.isEmpty()) { ingredients.add("a"); //eggs } ingredient = parts[5]; if (!ingredient.isEmpty()) { ingredients.add("d"); //peanuts } ingredient = parts[6]; if (!ingredient.isEmpty()) { ingredients.add("m"); //fish } ingredient = parts[7]; if (!ingredient.isEmpty()) { ingredients.add("g"); //grains } ingredient = parts[8]; if (!ingredient.isEmpty()) { ingredients.add("f"); //crustaceans } ingredient = parts[9]; if (!ingredient.isEmpty()) { ingredients.add("n"); //lupines } ingredient = parts[10]; if (!ingredient.isEmpty()) { ingredients.add("c"); //milk } ingredient = parts[11]; if (!ingredient.isEmpty()) { ingredients.add("k"); //nuts } ingredient = parts[12]; if (!ingredient.isEmpty()) { ingredients.add("j"); //sulfurDioxideAndSulfite } ingredient = parts[13]; if (!ingredient.isEmpty()) { ingredients.add("l"); //celeriac } ingredient = parts[14]; if (!ingredient.isEmpty()) { ingredients.add("h"); //mustards } ingredient = parts[15]; if (!ingredient.isEmpty()) { ingredients.add("i"); //sesame } ingredient = parts[16]; if (!ingredient.isEmpty()) { ingredients.add("b");//soy } ingredient = parts[17]; if (!ingredient.isEmpty()) { ingredients.add("e");//molluscs } ingredient = parts[18]; if (!ingredient.isEmpty()) { ingredients.add("4"); //antioxidant } ingredient = parts[19]; if (!ingredient.isEmpty()) { ingredients.add("5"); } ingredient = parts[20]; if (!ingredient.isEmpty()) { ingredients.add("6"); //flavourEnhancer } ingredient = parts[21]; if (!ingredient.isEmpty()) { ingredients.add("8"); // preservatives } ingredient = parts[22]; if (!ingredient.isEmpty()) { ingredients.add("3"); //nitrate } ingredient = parts[23]; if (!ingredient.isEmpty()) { ingredients.add("1");//picklingSalt } ingredient = parts[24]; if (!ingredient.isEmpty()) { ingredients.add("7"); //artificialSweetener } ingredient = parts[25]; if (!ingredient.isEmpty()) { ingredients.add("2"); //phosphate } String end = parts[26]; //endpoint menuList.add(new Menu(date, dish, sideDish, typ, ingredients)); } return menuList; } /** * readOrder() is a method to split order.txt into lines and save them in an arraylist * * @return Arraylist orderlist * @author Madeleine Vigier, Sabine Gubitz */ public ArrayList readOrder() { ArrayList orderList = new ArrayList<>(); List rows = getRows(); for (String row : rows) { String[] parts = row.split(";"); String date = parts[0]; String user = parts[1]; String mealtype = parts[3]; String deserttype = parts[5]; orderList.add(new Order(date, user, mealtype, deserttype)); } return null;//orderList } /** * The method writeData writes the data of a List into a txt file. * * @author Felix Wöstemeyer * * @param pathWrite determines the filename of the file that will be written * @param listToWrite determines which ArrayList is to be used for writing the file */ public void writeData(String pathWrite, ArrayList listToWrite) { try { if (new File(pathWrite).exists()) { for (String zeile : listToWrite) { new FileWriter(pathWrite).write(zeile); } }else { Scanner scanner = new Scanner(System.in); System.out.println("Der Pfad oder die Datei "+ pathWrite +" existiert nicht!\nMöchten Sie unter dem Pfad "+ pathWrite+ " eine neue Datei erstellen? (Y/N)"); if(scanner.nextLine().equals("Y")){ new File(pathWrite).createNewFile(); System.out.println("Die Datei "+ pathWrite+" wurde erfolgreich erstellt"); }else if(!scanner.nextLine().equals("N") && !scanner.nextLine().equals("Y")){ System.out.println("Es ist ein Fehler mit ihrer Antwort aufgetreten!"); } } }catch(IOException e){ e.printStackTrace(); } } /** * The method gets the rows by reading all lines of the path * * @return ArrayList rows * @author Madeleine Vigier */ private List getRows() { Path path = Paths.get(pathRead); List rows = new ArrayList<>(); try { rows = Files.readAllLines(path); } catch (IOException e) { e.printStackTrace(); } return rows; } /** * The method validates the user input * * @return boolean inputValid * @author Kevin Maier */ private boolean validateData(String password, String phoneNumber) { boolean inputValid = false; boolean phoneNumberMatchFound; boolean passwordMatchFound; boolean phoneNumberValid = false; boolean passwordValid = false; Pattern phoneNumberPattern = Pattern.compile("[0-9]*"); Pattern passwordPattern = Pattern.compile("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,}$"); Scanner reader = new Scanner(System.in); while(password.isEmpty() || phoneNumber.isEmpty()) { System.out.println("Login fehlgeschlagen. Eingabe ist leer, versuchen Sie es erneut."); System.out.println(""); System.out.print("Telefonnummer: "); phoneNumber = reader.nextLine(); System.out.print("Passwort: "); password = reader.nextLine(); } Matcher phoneNumberMatcher = phoneNumberPattern.matcher(phoneNumber); Matcher passwordMatcher = passwordPattern.matcher(password); phoneNumberMatchFound = phoneNumberMatcher.find(); passwordMatchFound = passwordMatcher.find(); while (!inputValid) { if (!phoneNumberMatchFound || phoneNumber.length() != 15) { System.out.println("Login fehlgeschlagen. Die eingegebene Handynummer ist nicht valide."); System.out.println(""); System.out.print("Telefonnummer: "); phoneNumber = reader.nextLine(); System.out.print("Passwort: "); password = reader.nextLine(); } else { phoneNumberValid = true; } if (!passwordMatchFound || password.length() < 6 || password.length() > 20) { System.out.println("Login fehlgeschlagen. Das eingegebene Passwort ist nicht valide."); System.out.println(""); System.out.print("Telefonnummer: "); phoneNumber = reader.nextLine(); System.out.print("Passwort: "); password = reader.nextLine(); } else { passwordValid = true; } if (phoneNumberValid && passwordValid) { inputValid = true; } } return inputValid; } /** * The method changes the orders.txt file by removing canceled orders * * @return ArrayList\ changedOrderList * @author Felix Düsterhaus */ public ArrayList changeOrder(String userLogin) { /* File orderFile = new File("C:/Unterricht/VPR/orders.txt"); if (orderFile.delete()) { System.out.println("Datei gelöscht: " + orderFile.getName()); } else { System.out.println("Fehler, " + orderFile.getName() + " nicht gelöscht."); } */ ArrayList changedOrderList = new ArrayList<>(); List rows = getRows(); int changedEntries = 0; for (String row : rows) { String[] parts = row.split(";"); String date = parts[0]; String user = parts[1]; String mealtyp = parts[2]; String deserttyp = parts[3]; if(!userLogin.equals(user)) { changedOrderList.add(new Order(date, user, mealtyp, deserttyp)); } else { changedEntries++; } } try { FileWriter writer = new FileWriter("orders2.txt"); for(Order str: changedOrderList) { writer.write(str + System.lineSeparator()); } writer.close(); System.out.println("Daten gelöscht"); System.out.println(changedEntries + " Einträge entfernt."); } catch (IOException e) { e.printStackTrace(); } return changedOrderList; } }