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'); */ } } }
//------------------------------------------------------------------------------ // 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(); } } }