/// <summary>
        /// Constructs lamps indefinitely.
        /// </summary>
        /// <param name="db">The database to interact with</param>
        /// <param name="lane">The lane to construct parts on</param>
        public void RunSim(Database db, Lane lane)
        {
            Logger logger = new Logger("SIMULATOR-" + lane.LaneID);

            db.GetWorkerInfo();

            while (true)
            {
                db.CreatePart(lane.LaneID);

                logger.Log("Created new part");

                int units_tested = db.TestProduct(lane.LaneID);

                logger.Log("Tested {0} units", units_tested);

                int sleep_time = lane.CalcTimeDev();

                db.UpdateNextFinish(sleep_time / 1000.0);
                logger.Log("Sleeping for {0} seconds to create new part", sleep_time / 1000.0);

                Thread.Sleep(sleep_time);
            }
        }
        static void Main(string[] args)
        {
            int exit = -1;

            //
            Lane lane = new Lane();


            // Initialize the database connection and get the lanes from the databse
            Database db = new Database(lane);
            Dictionary <int, int> lanes = db.GetLanes();


            // Display the lanes to the user and ask what lane to start
            DisplayLanes(lanes);
            lane.LaneID = GetInput(lanes);


            // If GetInput returns -1 then exit
            if (lane.LaneID != exit)
            {
                Sim sim = new Sim();

                Thread thread = new Thread(() => sim.RunSim(db, lane));

                thread.Start();

                Console.Write("Press any key to stop...");

                Console.ReadKey();

                thread.Interrupt();

                db.ReleaseLane();
            }
        }
 /*
  *      FUNCTION : Database
  *      DESCRIPTION :
  *          - Constructor for the database, calls
  *            initialize function.
  *            class.
  *      PARAMETERS :
  *          none
  *      RETURNS:
  *          none
  */
 public Database(Lane lane)
 {
     Initialize(lane);
 }