void addMachine(Machine dummyMachine, int course)
        {
            dummyMachine.AddJob(new Job(course)); //adds job
            for (int i = 0; i < machineNodes.Count; i++)
            {
                MachineNode    mn       = machineNodes[i];
                List <Machine> machines = mn.GetMachines();
                if (machines.Count > 0)
                {
                    for (int j = 0; j < machines.Count; j++)
                    {
                        Machine m = machines[j];
                        if (m == dummyMachine)
                        { //found the machine, just add job
                            m.AddJob(new Job(course));
                            break;
                        }
                        else if (dummyMachine.GetYear().Equals(mn.GetYear()) && dummyMachine.GetQuarter().Equals(mn.GetQuarter()))
                        { //machine does not exist, add it in
                            machines.Add(dummyMachine);
                            break;
                        }
                    }
                }
                else if (dummyMachine.GetYear().Equals(mn.GetYear()) && dummyMachine.GetQuarter().Equals(mn.GetQuarter()))
                {
                    machines.Add(dummyMachine);
                    break;
                }
                else //in the instance that machines == 0 and either year or quarter were different
                {
                    //NOTE: This isn't so much an error as a bookkeeping check. Because CourseTime contains only 1 year
                    //      machines dated beyond the first year throw this error. So this is a database issue.

                    /*
                     * Console.WriteLine("Dummy Machine Year: " + dummyMachine.GetYear());
                     * Console.WriteLine("Dummy Machine Quarter: " + dummyMachine.GetQuarter());
                     * Console.WriteLine("Dummy Course ID: " + course);
                     * Console.WriteLine("mn Year: " + mn.GetYear());
                     * Console.WriteLine("mn Quarter: " + mn.GetQuarter());
                     * Console.WriteLine('\n');
                     */
                }
            }
        }
Exemple #2
0
        //------------------------------------------------------------------------------
        // create a query that will pull all the different machines
        // which means getting every single time slot
        // distinct year, quarter, time, and set of DayTimes
        //------------------------------------------------------------------------------
        private void InitMachines()
        {
            string    query          = "select CourseID, StartTimeID, EndTimeID, DayID, QuarterID, SectionID from CourseTime order by CourseID ASC;";
            DataTable dt             = ExecuteQuery(query);
            Machine   dummyMachine   = new Machine();
            DayTime   dummyDayTime   = new DayTime();
            int       dt_size        = dt.Rows.Count - 1;
            DataRow   dr             = dt.Rows[dt_size];
            int       currentCourse  = (int)dr.ItemArray[0];
            int       currentQuarter = (int)dr.ItemArray[4];
            int       currentSection = (int)dr.ItemArray[5];
            int       course         = 0;
            int       start          = 0;
            int       end            = 0;
            int       day            = 0;
            int       quarter        = 0;
            int       section        = 0;

            while (dt_size >= 0)
            {
                dr = dt.Rows[dt_size];
                //check for null values
                if (dr.ItemArray[0] == DBNull.Value || dr.ItemArray[1] == DBNull.Value ||
                    dr.ItemArray[2] == DBNull.Value || dr.ItemArray[3] == DBNull.Value ||
                    dr.ItemArray[4] == DBNull.Value || dr.ItemArray[5] == DBNull.Value)
                {
                    dt_size--;
                    continue;
                }

                course  = (int)dr.ItemArray[0];
                section = (int)dr.ItemArray[5];
                quarter = (int)dr.ItemArray[4];
                //going to have to do the same with year probably

                //same course but different section is a different machine
                //different course is a different machine
                if ((currentCourse == course && (currentSection != section || currentQuarter != quarter)) || (currentCourse != course))
                {
                    dummyMachine   = new Machine();
                    currentCourse  = (int)dr.ItemArray[0];
                    currentSection = (int)dr.ItemArray[5];
                    currentQuarter = (int)dr.ItemArray[4];
                }
                start        = (int)dr.ItemArray[1];
                end          = (int)dr.ItemArray[2];
                day          = (int)dr.ItemArray[3];
                dummyDayTime = new DayTime();
                dummyDayTime.SetDayTime(day, start, end);
                dummyMachine.AddDayTime(dummyDayTime);
                dummyMachine.SetQuarter(quarter);

                //we add a new machine when we peek to the next row and see
                //(different course) OR (same course and (different section OR dif qtr))
                if (dt_size == 0 || ((int)dt.Rows[dt_size - 1].ItemArray[0] != currentCourse ||
                                     ((int)dt.Rows[dt_size - 1].ItemArray[0] == currentCourse && ((int)dt.Rows[dt_size - 1].ItemArray[5] != currentSection) || (int)dt.Rows[dt_size - 1].ItemArray[4] != currentQuarter)))
                {
                    dummyMachine.AddJob(new Job(course));
                    for (int i = 0; i < machineNodes.Count; i++)
                    {
                        MachineNode    mn       = machineNodes[i];
                        List <Machine> machines = mn.GetMachines();
                        if (machines.Count > 0)
                        {
                            for (int j = 0; j < machines.Count; j++)
                            {
                                Machine m = machines[j];
                                if (m == dummyMachine)   //found the machine, just add job
                                {
                                    m.AddJob(new Job(course));
                                }
                                else if (dummyMachine.GetYear().Equals(mn.GetYear()) && dummyMachine.GetQuarter().Equals(mn.GetQuarter()))     //machine does not exist, add it in
                                {
                                    machines.Add(dummyMachine);
                                    break;
                                }
                            }
                        }
                        else if (dummyMachine.GetYear().Equals(mn.GetYear()) && dummyMachine.GetQuarter().Equals(mn.GetQuarter()))
                        {
                            machines.Add(dummyMachine);
                            break;
                        }
                        else
                        {
                            Console.WriteLine("Dummy Machine Year: " + dummyMachine.GetYear());
                            Console.WriteLine("Dummy Machine Quarter: " + dummyMachine.GetQuarter());
                            Console.WriteLine("mn Year: " + mn.GetYear());
                            Console.WriteLine("mn Quarter: " + mn.GetQuarter());
                            Console.WriteLine('\n');
                        }
                    }
                }
                dt_size--;
            }
            //print machines for testing; unnecessary
            for (int i = 0; i < machineNodes.Count; i++)
            {
                MachineNode    mn       = machineNodes[i];
                List <Machine> machines = mn.GetMachines();
                Console.WriteLine("Quarter: " + mn.GetQuarter());
                for (int j = 0; j < machines.Count; j++)
                {
                    Machine m = machines[j];
                    m.Print();
                }
            }
        }