@@ -1,52 +1,88 @@
package backEnd;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

import com.opencsv.CSVReader;

import backEnd.GameState.Genre;
import backEnd.GameState.Level;


public class SongPicker {

List<String> availableSongs = Arrays.asList("0", "1", "2","3", "4");
List<Song> availableSongs = new ArrayList<Song>();
private CSVReader reader;
//new Song()

public SongPicker(){
//availableSongs.add("Dessert");
//availableSongs.add("Hotline Bling");
public SongPicker() {

try {
reader = new CSVReader(new FileReader("SADGSONGS.csv"));
} catch (FileNotFoundException e) {
System.out.println("oh boy er is geen reader");
e.printStackTrace();
}

String [] nextLine;
int i = 1; //want molsong is 0

try {
while ((nextLine = reader.readNext()) != null) {
int ddance = 0;
String danceEntry = nextLine[5].trim().toLowerCase();
if (danceEntry.equals("yes")){ddance = 2;}
else if (danceEntry.equals("kinda")){ddance = 1;}
int startAt = Integer.parseInt(nextLine[4]);
// System.out.println(nextLine[0] + " " + nextLine[5] + " " + nextLine[4]); //cheeeck
// System.out.println(nextLine[0] + " " + ddance + " " + startAt);
availableSongs.add(new Song(i, ddance, startAt));
i++;
}
reader.close();

} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

//Aanname dat er meer liedjes zijn dan er nodig zijn
public ArrayList<String> pickSongs(int nbOfSongsNeeded, Level level, Genre genre) {
//TODO opvangen dat er een oneven aantal drie mensen zijn
ArrayList<String> result = new ArrayList<String>();
ArrayList<String> temp = new ArrayList<String>();
public ArrayList<Integer> pickSongs(int nbOfSongsNeeded, Level level, Genre genre) {
ArrayList<Integer> result = new ArrayList<Integer>();
ArrayList<Song> temp = new ArrayList<Song>();
temp.addAll(availableSongs);
if(temp.size() < nbOfSongsNeeded){ //TODO hier nog wat code, gewoon zorgen dat er gewoon genoeg liedjes zijn
System.out.println("dear me er zijn te weinig songs. ERRROOORRORORORRRR");
Math.ceil(temp.size()/nbOfSongsNeeded);
}
// if(temp.size() < nbOfSongsNeeded){ //TODO hier nog wat code, gewoon zorgen dat er gewoon genoeg liedjes zijn
// System.out.println("dear me er zijn te weinig songs. ERRROOORRORORORRRR");
// Math.ceil(temp.size()/nbOfSongsNeeded);
// }
temp = filter(temp, level, genre);
int i = 0;
while(i< nbOfSongsNeeded){
int size = temp.size();
Random r = new Random();
int random = r.nextInt(size);
result.add(temp.get(random));
result.add(temp.get(random).getId());
temp.remove(random);
i++;
}
return result;
}


private ArrayList<String> filter(ArrayList<String> temp, Level level, Genre genre) {
private ArrayList<Song> filter(ArrayList<Song> temp, Level level, Genre genre) {
//itereer hier over alle liedjes en filter die met genre en level uit
//lukt pas wanneer we een idee hebben hoe concept liedje er uit ziet
if (level.equals(Level.EASY)){
return new ArrayList<String>(Arrays.asList("1"));
}
// if (level.equals(Level.EASY)){
// return new ArrayList<String>(Arrays.asList("1"));
// }
return temp;
}

@@ -0,0 +1,16 @@
package backEnd;

import static org.junit.Assert.*;

import java.io.IOException;

import org.junit.Test;

public class SongPickerTest {

@Test
public void parser() throws Exception{
SongPicker songpicker = new SongPicker();
}

}
@@ -5,7 +5,7 @@
public class TeamMode extends GameMode {

@Override
public Map<String, String> assignSongs(SongPicker songPicker,GameState gameState) {
public Map<String, Integer> assignSongs(SongPicker songPicker,GameState gameState) {
// TODO Auto-generated method stub
return null;
}