private void makeNewSchedule() {
        // Used to see if month changes
        int daysInMonth = 0;
        int currentMonth = this.cal.get(Calendar.MONTH);
        ArrayList<Integer> numOfJobs = new ArrayList<Integer>();

        // While still in the current month generate a schedule for each day
        while (currentMonth == this.cal.get(Calendar.MONTH)) {
            for (Day day : this.days) {
                if (this.cal.get(Calendar.DAY_OF_WEEK) == this.numForName(day.getNameOfDay())) {

                    TreeMap<String, Worker> jobsWithWorker = new TreeMap<String, Worker>();
                    ArrayList<String> workersWorking = new ArrayList<String>();

                    // Used for html later
                    daysInMonth++;
                    numOfJobs.add(day.getJobs().size());

                    for (String job : day.getJobs()) {
                        //need to make sure same person isn't assigned to 2 jobs
                        ArrayList<Worker> workersToReAdd = new ArrayList<Worker>();
                        Worker workerForJob = this.workerQueues.get(day.getNameOfDay()).get(job).poll();
                        boolean workerFound = false;
                        while(workerForJob != null && !workerFound){
                            if(workersWorking.contains(workerForJob.getName())){
                                workersToReAdd.add(workerForJob);
                                workerForJob = this.workerQueues.get(day.getNameOfDay()).get(job).poll();
                            } else{
                                workersWorking.add(workerForJob.getName());
                                workerFound = true;
                                break;
                            }
                        }
                        
                        if (workerFound) {
                            workerForJob.addWorkedJob(job);
                            jobsWithWorker.put(job, workerForJob);
                            this.workerQueues.get(day.getNameOfDay()).get(job).add(workerForJob);
                            this.workerQueues.get(day.getNameOfDay()).get(job).addAll(workersToReAdd);
                            this.createNewWorkerQueues();
                        } else {
                            jobsWithWorker.put(job, new Worker("Empty", new ArrayList<Day>()));
                            JOptionPane.showMessageDialog(new JFrame(), "No workers are able to work as a(n) " + job
                                    + " on " + day.getNameOfDay());
                            this.workerForEveryJob = false;
                            break;
                        }

                    }
                    String date = this.cal.get(Calendar.YEAR) + "/"
                            + String.format("%02d", (this.cal.get(Calendar.MONTH) + 1)) + "/"
                            + String.format("%02d", this.cal.get(Calendar.DAY_OF_MONTH));
                    this.schedule.put(date, jobsWithWorker);
                    break; // Breaks so it doesn't check the other days
                }
            }
            this.cal.add(Calendar.DATE, 1);
        }
        HTMLGenerator.makeTable(daysInMonth, numOfJobs);
    }