* @return a map of Courses to their recommended rooms with Course.toString() as the key
	 */
	@SuppressWarnings("unchecked")
	private TreeMap<String,?> generateRecommendedRooms(String spreadsheetNames){
		String[] names = spreadsheetNames.split(",");
		String[][] roomsAndProfessors=getSpreadsheet(names[0]);
		String[][] roomsAndCourses=getSpreadsheet(names[1]);
		String[][] roomsAndDepartments=getSpreadsheet(names[2]);
		String[][] unionSpecs=getSpreadsheet(names[3]);
		String[][] workingCourseList=getSpreadsheet(names[4]);
		

		String[][] recommendedRoomList=new String[workingCourseList.length][8];

		TreeMap<String,ArrayList<String>> t=new TreeMap<String,ArrayList<String>>(); 
		ArrayList<String> info=new ArrayList<String>();
		//System.out.println(spreadsheetStringify(roomsAndCourses));
		int wcSpot=0;
		for(int i=0; i<unionSpecs.length; i++){
			boolean work=true;
			while(work&&wcSpot<695){
				if (!workingCourseList[wcSpot][0].equals(unionSpecs[i][0])){
					break;
					//throw new IllegalStateException(getFile(names[4]).getName()+" and "+getFile(names[3]).getName()+" are not in the same order.");
				}

				info.add(workingCourseList[wcSpot][1]+";");
				info.add(workingCourseList[wcSpot][2]+";");
				info.add(workingCourseList[wcSpot][3]+";");

				TreeSet<String> pList=findRooms(workingCourseList[wcSpot][3],roomsAndProfessors);
				String[] courseKeyParts=workingCourseList[wcSpot][0].split("-");
				String courseKey=courseKeyParts[0]+"-"+courseKeyParts[1];
				TreeSet<String> cList=findRooms(courseKey,roomsAndCourses);
				System.out.println("[GRR]"+workingCourseList[wcSpot][0]);
				//TODO: Handle dLists for Cross listed Courses
				TreeSet<String> dList=findRooms(workingCourseList[wcSpot][0].substring(0,4),roomsAndDepartments);
				boolean cSpec=(unionSpecs[i][2].trim().equals(""))?false:true;
				boolean pSpec=(unionSpecs[i][3].trim().equals(""))?false:true;
				boolean dSpec=(unionSpecs[i][4].trim().equals(""))?false:true;


				TreeSet<String> cup =new TreeSet<String>();
				cup.addAll(cList);
				cup.addAll(pList);
				TreeSet<String> notdncup = new TreeSet<String>();
				TreeSet<String> rList = new TreeSet<String>();
				notdncup.addAll(dList);
				rList.addAll(dList);
				if (!cup.isEmpty()){
					notdncup.removeAll(cup);
					rList.removeAll(notdncup);
				}
				//System.out.println("[GRR]"+cList);
				info.add(rList.toString().substring(1,rList.toString().length()-1)+";");			
				info.add(pList.toString().substring(1,pList.toString().length()-1)+";");
				info.add(cList.toString().substring(1,cList.toString().length()-1)+";");
				info.add(dList.toString().substring(1,dList.toString().length()-1)+";");

				t.put(workingCourseList[wcSpot][0], ((ArrayList<String>)info.clone()));
				info.clear();
				wcSpot++;
			}
		}
		return t;
	}