package data;_x000D_
_x000D_
import java.util.ArrayList;_x000D_
import java.util.Calendar;_x000D_
import java.util.Random;_x000D_
_x000D_
import model.lessenrooster.Dag;_x000D_
import model.lessenrooster.Student;_x000D_
import model.locatie.Locatie;_x000D_
_x000D_
public class DataGenerator {_x000D_
_x000D_
	private static final int aantal_dagen = 42;_x000D_
	private static int aantal_studenten = 50;_x000D_
	private static final int aantal_lessen = 10;_x000D_
	private static final int aantal_locaties = 50;_x000D_
	private static final boolean weekends = false;_x000D_
_x000D_
	static Random random = new Random();_x000D_
_x000D_
_x000D_
	private static Calendar getCalendar(int uur, int minuten, Calendar dag) {_x000D_
		dag.set(Calendar.HOUR_OF_DAY, uur);_x000D_
		dag.set(Calendar.MINUTE, minuten);_x000D_
		return dag;_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Dag> maakRooster() {_x000D_
_x000D_
		ArrayList<Dag> rooster = new ArrayList<Dag>();_x000D_
		Calendar cal = Calendar.getInstance();_x000D_
		for (int i = 0; i <= aantal_dagen; i++) {_x000D_
			cal.add(Calendar.DAY_OF_MONTH, 1); // Altijd 1 dag er bij_x000D_
			if (!(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY && cal_x000D_
					.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || weekends) { // in	weekend geenles_x000D_
				if (random.nextInt(5) >2) { // 2op5 kans dat je les hebt_x000D_
					Dag dag = new Dag((Calendar)cal.clone());_x000D_
					for (int l = 1; l <= aantal_lessen; l++) {_x000D_
						if (random.nextInt(5) > 1) { // 3op5 kans dat je op dat uur les hebt_x000D_
							dag.voegLesToe(_x000D_
									getCalendar(l + 7, 0,(Calendar) dag.getDatum().clone()),_x000D_
									getCalendar(l + 8, 0,(Calendar) dag.getDatum().clone()));_x000D_
						}_x000D_
					}_x000D_
					rooster.add(dag);_x000D_
				}_x000D_
			}_x000D_
		}_x000D_
		return rooster;_x000D_
_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Student> maakStudenten() {_x000D_
		ArrayList<Student> studenten = new ArrayList<Student>();_x000D_
		for (int i = 0; i < aantal_studenten; i++) {_x000D_
			Student student = new Student("KdG" + i);_x000D_
			student.setLesdagen(maakRooster());_x000D_
			studenten.add(student);_x000D_
		}_x000D_
		return studenten;_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Locatie> maakLocaties() {_x000D_
		ArrayList<Locatie> locaties = new ArrayList<Locatie>();_x000D_
		for (int i = 0; i < aantal_locaties; i++) {_x000D_
			Locatie locatie = new Locatie("Lokaal", "GR" + i+1,_x000D_
					random.nextInt(200) + 20);_x000D_
			locatie.setDagen(maakLocatiesSlots());_x000D_
			locaties.add(locatie);_x000D_
		}_x000D_
		return locaties;_x000D_
	}_x000D_
	_x000D_
	public static ArrayList<model.locatie.Dag> maakLocatiesSlots() {_x000D_
_x000D_
		ArrayList<model.locatie.Dag> rooster = new ArrayList<model.locatie.Dag>();_x000D_
		Calendar cal = Calendar.getInstance();_x000D_
		for (int i = 0; i <= aantal_dagen; i++) {_x000D_
			cal.add(Calendar.DAY_OF_MONTH, 1); // Altijd 1 dag er bij_x000D_
			model.locatie.Dag dag = new model.locatie.Dag((Calendar)cal.clone());_x000D_
			//System.out.println(dag.getDatum().getTime());_x000D_
			for (int s=0; s<dag.getSlots().size(); s++){	//Hoeveelste slot van de dag_x000D_
				//System.out.println("StartSlot:" + s);_x000D_
				if (random.nextInt(3) > 0){	//2op3kans dat het lokaal op dat slot bezet is_x000D_
					int aantal = random.nextInt(7) + 4; //Minimaal les van 1 uur (4 slots), maximum 2.5 uur);_x000D_
					for (int j = 0; j < aantal; j++){_x000D_
						try{_x000D_
							dag.getSlots().get(s + j).setBezet(true);	 _x000D_
							//System.out.println("Slot:" + (s + j) + " is bezet");_x000D_
						} catch (IndexOutOfBoundsException ie){_x000D_
							//Einde van slotlijst bereikt_x000D_
						}_x000D_
					}_x000D_
					s += aantal;	//Volgend slot om te beginnen in loop is ten vroegste kwartier later dan eind vorige les_x000D_
				}_x000D_
			}_x000D_
			//System.out.println();_x000D_
			rooster.add(dag);					_x000D_
		}_x000D_
		return rooster;_x000D_
_x000D_
	}_x000D_
_x000D_
}_x000D_

//Hoeveelste slot van de dag_x000D_
package data;_x000D_
_x000D_
import java.util.ArrayList;_x000D_
import java.util.Calendar;_x000D_
import java.util.Random;_x000D_
_x000D_
import model.lessenrooster.Dag;_x000D_
import model.lessenrooster.Student;_x000D_
import model.locatie.Locatie;_x000D_
_x000D_
public class DataGenerator {_x000D_
_x000D_
	private static final int aantal_dagen = 42;_x000D_
	private static int aantal_studenten = 50;_x000D_
	private static final int aantal_lessen = 10;_x000D_
	private static final int aantal_locaties = 50;_x000D_
	private static final boolean weekends = false;_x000D_
_x000D_
	static Random random = new Random();_x000D_
_x000D_
_x000D_
	private static Calendar getCalendar(int uur, int minuten, Calendar dag) {_x000D_
		dag.set(Calendar.HOUR_OF_DAY, uur);_x000D_
		dag.set(Calendar.MINUTE, minuten);_x000D_
		return dag;_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Dag> maakRooster() {_x000D_
_x000D_
		ArrayList<Dag> rooster = new ArrayList<Dag>();_x000D_
		Calendar cal = Calendar.getInstance();_x000D_
		for (int i = 0; i <= aantal_dagen; i++) {_x000D_
			cal.add(Calendar.DAY_OF_MONTH, 1); // Altijd 1 dag er bij_x000D_
			if (!(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY && cal_x000D_
					.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) || weekends) { // in	weekend geenles_x000D_
				if (random.nextInt(5) >2) { // 2op5 kans dat je les hebt_x000D_
					Dag dag = new Dag((Calendar)cal.clone());_x000D_
					for (int l = 1; l <= aantal_lessen; l++) {_x000D_
						if (random.nextInt(5) > 1) { // 3op5 kans dat je op dat uur les hebt_x000D_
							dag.voegLesToe(_x000D_
									getCalendar(l + 7, 0,(Calendar) dag.getDatum().clone()),_x000D_
									getCalendar(l + 8, 0,(Calendar) dag.getDatum().clone()));_x000D_
						}_x000D_
					}_x000D_
					rooster.add(dag);_x000D_
				}_x000D_
			}_x000D_
		}_x000D_
		return rooster;_x000D_
_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Student> maakStudenten() {_x000D_
		ArrayList<Student> studenten = new ArrayList<Student>();_x000D_
		for (int i = 0; i < aantal_studenten; i++) {_x000D_
			Student student = new Student("KdG" + i);_x000D_
			student.setLesdagen(maakRooster());_x000D_
			studenten.add(student);_x000D_
		}_x000D_
		return studenten;_x000D_
	}_x000D_
_x000D_
	public static ArrayList<Locatie> maakLocaties() {_x000D_
		ArrayList<Locatie> locaties = new ArrayList<Locatie>();_x000D_
		for (int i = 0; i < aantal_locaties; i++) {_x000D_
			Locatie locatie = new Locatie("Lokaal", "GR" + i+1,_x000D_
					random.nextInt(200) + 20);_x000D_
			locatie.setDagen(maakLocatiesSlots());_x000D_
			locaties.add(locatie);_x000D_
		}_x000D_
		return locaties;_x000D_
	}_x000D_
	_x000D_
	public static ArrayList<model.locatie.Dag> maakLocatiesSlots() {_x000D_
_x000D_
		ArrayList<model.locatie.Dag> rooster = new ArrayList<model.locatie.Dag>();_x000D_
		Calendar cal = Calendar.getInstance();_x000D_
		for (int i = 0; i <= aantal_dagen; i++) {_x000D_
			cal.add(Calendar.DAY_OF_MONTH, 1); // Altijd 1 dag er bij_x000D_
			model.locatie.Dag dag = new model.locatie.Dag((Calendar)cal.clone());_x000D_
			//System.out.println(dag.getDatum().getTime());_x000D_
			for (int s=0; s<dag.getSlots().size(); s++){	//Hoeveelste slot<SUF>
				//System.out.println("StartSlot:" + s);_x000D_
				if (random.nextInt(3) > 0){	//2op3kans dat het lokaal op dat slot bezet is_x000D_
					int aantal = random.nextInt(7) + 4; //Minimaal les van 1 uur (4 slots), maximum 2.5 uur);_x000D_
					for (int j = 0; j < aantal; j++){_x000D_
						try{_x000D_
							dag.getSlots().get(s + j).setBezet(true);	 _x000D_
							//System.out.println("Slot:" + (s + j) + " is bezet");_x000D_
						} catch (IndexOutOfBoundsException ie){_x000D_
							//Einde van slotlijst bereikt_x000D_
						}_x000D_
					}_x000D_
					s += aantal;	//Volgend slot om te beginnen in loop is ten vroegste kwartier later dan eind vorige les_x000D_
				}_x000D_
			}_x000D_
			//System.out.println();_x000D_
			rooster.add(dag);					_x000D_
		}_x000D_
		return rooster;_x000D_
_x000D_
	}_x000D_
_x000D_
}_x000D_
