/Users/e1818782/NetBeansProjects/IA Stuff/RecipeDatabase_Nicolas/src/nicolas/SaveLoad.java
  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package nicolas;
  7 
  8 import java.awt.BorderLayout;
  9 import java.io.BufferedReader;
 10 import java.io.FileReader;
 11 import java.io.FileWriter;
 12 import java.io.IOException;
 13 import java.util.ArrayList;
 14 import java.util.StringTokenizer;
 15 import java.util.logging.Level;
 16 import java.util.logging.Logger;
 17 
 18 /**
 19  *
 20  * @author 18782
 21  */
 22 public class SaveLoad {
 23 ArrayList<Recipe> r;
 24 public SaveLoad()
 25 {
 26     
 27 }
 28 public SaveLoad(ArrayList<Recipe> r)
 29 {
 30   this.r=r;
 31 }
 32 public void saveRecipes()
 33 {//Save recipes
 34     
 35    
 36     try{
 37         String fileName= "Recipes.txt";
 38         
 39         FileWriter fw= new FileWriter(fileName);
 40           fw.write(""+r.size());//Indicate how many recipes are being saved
 41         fw.write(":");
 42         for(int count=0; count<r.size();count++) {//Loop one: Loops for each recipe
 43             fw.write(r.get(count).getName());
 44         fw.write(":");
 45             System.out.println(r.get(count).getCalories());
 46         fw.write(""+r.get(count).getCalories());
 47         fw.write(":");
 48          fw.write(r.get(count).getMethod());
 49         fw.write(":");
 50          fw.write(""+r.get(count).getPrice());
 51         fw.write(":");
 52          fw.write(""+r.get(count).getServings());
 53         fw.write(":");
 54         fw.write(""+r.get(count).getIng().size());
 55         fw.write(":");
 56         for(int i=0; i< r.get(count).getIng().size();i++){//Loop two: loops for each ingredient within recipes
 57            fw.write(""+r.get(count).getIng().get(count).getIngName());
 58         fw.write(":");
 59            fw.write(""+r.get(count).getIng().get(count).getQuantity());
 60         fw.write(":");
 61            fw.write(""+r.get(count).getIng().get(count).getUnit());
 62         fw.write(":");
 63          fw.write(""+r.get(count).getIng().get(count).getCost());
 64         fw.write(":");
 65         }
 66           
 67         }
 68                 
 69                 
 70      fw.close();
 71     }   catch (IOException ex) {
 72             System.out.println("error");
 73         }
 74 }
 75 public ArrayList<Recipe> loadRec()
 76 {
 77     ArrayList<Recipe> r=new ArrayList<>();
 78     try
 79     {
 80         FileReader fr = new FileReader("Recipes.txt");//All saved in one text file
 81         BufferedReader br= new BufferedReader(fr);
 82         String readInfile=br.readLine();
 83         try{
 84         StringTokenizer st= new StringTokenizer(readInfile,":");
 85         
 86       
 87         int rLimit=Integer.parseInt(st.nextToken());
 88         for(int recipeCount=0;recipeCount<rLimit;recipeCount++){//Loops for the recipes
 89         r.add(new Recipe());
 90        
 91         String name=st.nextToken();
 92         int calories=Integer.parseInt(st.nextToken());
 93         String method=st.nextToken();
 94         double price=Double.parseDouble(st.nextToken());
 95 
 96         double servings=Double.parseDouble(st.nextToken());
 97         r.get(recipeCount).setName(name);
 98          r.get(recipeCount).setCalories(calories);
 99          r.get(recipeCount).setPrice(price);
100          r.get(recipeCount).setMethod(method);
101          r.get(recipeCount).setServings(servings);
102          ArrayList<Ingredients> ingr=new ArrayList<>();
103          int iLimit=Integer.parseInt(st.nextToken());
104          for(int ingc=0; ingc<iLimit;ingc++)//Loops for hte ingredients and puts them in a temporary ingredients array list
105          {
106              String ingN=st.nextToken();
107              double ingQ=Double.parseDouble(st.nextToken());
108              String ingU=st.nextToken();
109              double ingC=Double.parseDouble(st.nextToken());
110             // r.get(recipeCount).getIng().add(new Ingredients(ingN, ingQ, ingU, ingC));
111             ingr.add(new Ingredients(ingN, ingQ, ingU, ingC));
112              
113          }
114          r.get(recipeCount).setIng(ingr);
115   //       ingr.clear();
116          
117         }
118     }
119           catch(NullPointerException np){
120               System.out.println("No list created yet");
121         }
122     }
123     catch(IOException ex)
124     {
125         System.out.println("Error");
126     }
127     return r;
128 }
129 }
130