procedure Create_Database

with Ada.Text_IO;
with Ada.Command_Line;
with Ada.Strings.Fixed;
use  Ada.Strings.Fixed;
with Ada.Strings.Maps.Constants;

with Ada_Store.Trading;
use  Ada_Store.Trading;
with Ada_Store.Trading.Department;
with Ada_Store.Trading.Item;
with Ada_Store.Trading.Tender;
with Ada_Store.User;
use  Ada_Store;

procedure Create_Database is

   procedure Create_Tenders is
   begin
      Ada.Text_IO.Put_Line("creating tender data");
      Ada.Text_IO.Put_Line("Tender 1");
      Tender.Create_New(Tender_ID   => 1,
			Description => "Cash              ",
			Min_Amount  => 0.00,
			Max_Amount  => 99_999.00);
      Ada.Text_IO.Put_Line("Tender 2");
      Tender.Create_New(Tender_ID   => 2,
			Description => "Visa Card         ",
			Min_Amount  => 5.00,
			Max_Amount  => 1_000.00);
      Ada.Text_IO.Put_Line("Tender 3");
      Tender.Create_New(Tender_ID   => 3,
			Description => "Cheque            ",
			Min_Amount  => 6.00,
			Max_Amount  => 150.00);
      Ada.Text_IO.Flush;
   end Create_Tenders;

   procedure Create_Departments is
   begin
      Ada.Text_IO.Put_Line("creating department data");
      Ada.Text_IO.Put_Line("Department 1");
      Department.Create_New(Department_Number => 1,
			    Description       => "Grocery           ",
			    Min_Price         => 0.0,
			    Max_Price         => 50.0);
      Ada.Text_IO.Put_Line("Department 2");
      Department.Create_New(Department_Number => 2,
			    Description       => "Produce           ",
			    Min_Price         => 0.0,
			    Max_Price         => 50.0);
      Ada.Text_IO.Put_Line("Department 3");
      Department.Create_New(Department_Number => 3,
			    Description       => "Deli              ",
			    Min_Price         => 0.0,
			    Max_Price         => 50.0);
      Ada.Text_IO.Put_Line("Department 4");
      Department.Create_New(Department_Number => 4,
			    Description       => "Bakery            ",
			    Min_Price         => 0.0,
			    Max_Price         => 20.0);
      Ada.Text_IO.Put_Line("Department 5");
      Department.Create_New(Department_Number => 5,
			    Description       => "Pharmacy          ",
			    Min_Price         => 1.0,
			    Max_Price         => 20.0);
      Ada.Text_IO.Put_Line("Department 6");
      Department.Create_New(Department_Number => 6,
			    Description       => "Wines             ",
			    Min_Price         => 2.0,
			    Max_Price         => 100.0,
			    Tax_Rate          => 12.5);
      Ada.Text_IO.Flush;
   end Create_Departments;

   procedure Create_Items is
   begin
      Ada.Text_IO.Put_Line("creating item data");
      Ada.Text_IO.Put_Line("Item 1000101");
      Item.Create_New(Item_Number   => 1000101,
		      In_Department => 1,
		      Display_Descr => "H. Baked Beans    ",
		      Price         => 0.20);
      Ada.Text_IO.Put_Line("Item 1000102");
      Item.Create_New(Item_Number   => 1000102,
		      In_Department => 5,
		      Display_Descr => "Paracetamol 100x  ",
		      Price         => 2.49);
      Ada.Text_IO.Put_Line("Item 1000103");
      Item.Create_New(Item_Number   => 1000103,
		      In_Department => 3,
		      Display_Descr => "Farmhouse Pate    ",
		      Price         => 0.99);
      Ada.Text_IO.Put_Line("Item 1000104");
      Item.Create_New(Item_Number   => 1000104,
		      In_Department => 6,
		      Display_Descr => "J.Smith Bitter 4x ",
		      Price         => 2.38);
      Ada.Text_IO.Flush;
   end Create_Items;

   procedure Create_Users is
   begin
      Ada.Text_IO.Put_Line("creating user data");
      User.Create_New(User_ID       => 1,
		      Name          => "Simon Johnston    ",
		      In_Department => 1,
		      Level         => User.Cashier);
      User.Create_New(User_ID       => 100,
		      Name          => "Simon Johnston    ",
		      In_Department => 1,
		      Level         => User.Manager);
      Ada.Text_IO.Flush;
   end Create_Users;

   procedure Create_Config is
      Config_File : Ada.Text_IO.File_Type;
      Config_Name : String := "Ada_Store.Cnf";
   begin
      Ada.Text_IO.Put_Line("creating store config");
      begin
	 Ada.Text_IO.Open(Config_File,
			  Ada.Text_IO.Out_File,
			  Config_Name);
      exception
	 when Ada.Text_IO.Name_Error =>
	    Ada.Text_IO.Create(Config_File,
			       Ada.Text_IO.Out_File,
	                       Config_Name);
      end ;
      Ada.Text_IO.Put_Line(Config_File, "STORENAME=Example Store Ltd.");
      Ada.Text_IO.Put_Line(Config_File, "ADDRESS-1=100 A Road");
      Ada.Text_IO.Put_Line(Config_File, "ADDRESS-2=Bracknell");
      Ada.Text_IO.Put_Line(Config_File, "ADDRESS-3=Berkshire");
      Ada.Text_IO.Put_Line(Config_File, "Telephone=");
      Ada.Text_IO.Put_Line(Config_File, "STATION=1");
      Ada.Text_IO.Put_Line(Config_File, "RECEIPTHEAD-1=Welcome to Example Store");
      Ada.Text_IO.Put_Line(Config_File, "RECEIPTHEAD-2=************************");
      Ada.Text_IO.Put_Line(Config_File, "RECEIPTFOOT-1=Thank You");
      Ada.Text_IO.Put_Line(Config_File, "RECEIPTFOOT-2=VAT 2=349857-258");
      Ada.Text_IO.Close(Config_File);
      Ada.Text_IO.Flush;
   end Create_Config;

   Tenders     : Boolean := False;
   Departments : Boolean := False;
   Items       : Boolean := False;
   Users       : Boolean := False;
   Config      : Boolean := False;
begin

   for Argument in 1 .. Ada.Command_Line.Argument_Count loop

      declare
	 Arg_String : String := Translate(Ada.Command_Line.Argument(Argument),
					  Ada.Strings.Maps.Constants.Lower_Case_Map);
      begin
	 if Arg_String = "all" then
	    Tenders     := True;
	    Departments := True;
	    Items       := True;
	    Users       := True;
	    Config      := True;
	    exit;
	 elsif Arg_String = "tenders" then
	    Tenders := True;
	 elsif Arg_String = "departments" then
	    Departments := True;
	 elsif Arg_String = "items" then
	    Items := True;
	 elsif Arg_String = "users" then
	    users := True;
	 elsif Arg_String = "config" then
	    Config := True;
	 else
	    Ada.Text_IO.Put_Line("Error: argument " & 
				 Ada.Command_Line.Argument(Argument) &
				 " is invalid");
	 end if;
      end ;
   end loop;

   if Tenders then
      Create_Tenders;
   end if;

   if Departments then
      Create_Departments;
   end if;

   if Items then
      Create_Items;
   end if;

   if Users then
      Create_Users;
   end if;

   if Config then
      Create_Config;
   end if;
end Create_Database;

Contents Page

Copyright © 1996 Simon Johnston &
Addison Wesley Longman