/* * Created by SharpDevelop. * User: allann * Date: 22-11-2004 * Time: 22:52 * */ using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Collections; using System.Windows.Forms; namespace TouristicRental06 { public delegate IList CreateFromScratch(String file); public class TouristicRental { public TouristicRental() { shop = CreateShop(); rentBike = new RentBike(this, shop.Bikes, shop.Rentals); mainForm = new MainForm(this); Application.Run(mainForm); } public static void Main() { TouristicRental app = new TouristicRental(); } public void Rent() { rentBike.Run(); } public void RentDone() { mainForm.Show(); } public void Exit() { ExitForm e = new ExitForm(shop.Bikes, shop.Rentals); e.Show(); } private Shop CreateShop() { //Declared outside try{} so it can be seen by finally{} CreateFromScratch maker; maker = new CreateFromScratch(CreateBicyclesFile); IList bicycles = CreateList("cykler.dat", maker); maker = new CreateFromScratch(CreateRentalFile); IList rentals = CreateList("rentals.dat", maker); return new Shop(bicycles, rentals); } private IList CreateBicyclesFile(String file) { IList bicycles = new ArrayList(); bicycles.Add(new CityBike(1, 3.0, true)); bicycles.Add(new CityBike(2, 3.2, true)); bicycles.Add(new CityBike(11, 3.0, false)); bicycles.Add(new CityBike(12, 2.8, false)); bicycles.Add(new SportsBike(101, 6.0, 3)); bicycles.Add(new SportsBike(102, 6.5, 3)); bicycles.Add(new SportsBike(103, 7.0, 3)); bicycles.Add(new SportsBike(121, 6.2, 5)); bicycles.Add(new SportsBike(122, 6.2, 5)); bicycles.Add(new SportsBike(131, 6.8, 7)); //Declared outside try{} so it can be seen by finally{} FileStream stream = null; try { stream = new FileStream(file, FileMode.Create); IFormatter format = new BinaryFormatter(); format.Serialize(stream, bicycles); } catch (SerializationException e) { Console.WriteLine("Serialization error. \nReason: " + e.Message); } catch (IOException e) { Console.WriteLine("IO error. \nReason: " + e.Message); } catch (Exception e) { Console.WriteLine("Other error. \nReason: " + e.Message); } finally { if (stream != null) stream.Close(); } return bicycles; } private IList CreateRentalFile(String file) { IList rental = new ArrayList(); //Declared outside try{} so it can be seen by finally{} FileStream stream = null; try { stream = new FileStream(file, FileMode.Create); IFormatter format = new BinaryFormatter(); format.Serialize(stream, rental); } catch (SerializationException e) { Console.WriteLine("Serialization error. \nReason: " + e.Message); } catch (IOException e) { Console.WriteLine("IO error. \nReason: " + e.Message); } catch (Exception e) { Console.WriteLine("Other error. \nReason: " + e.Message); } finally { if (stream != null) stream.Close(); } return rental; } private IList CreateList(String file, CreateFromScratch maker) { FileStream stream = null; IList list; try { stream = new FileStream(file, FileMode.Open); IFormatter format = new BinaryFormatter(); list = (IList) format.Deserialize(stream); } catch { list = maker(file); } finally { if (stream != null) stream.Close(); } return list; } private Shop shop; private RentBike rentBike; private MainForm mainForm; } }