* 
	 */
	public Set<String> process(int phase){
		//TODO:Use reflection on name
		String name="";
		switch(phase){
		case 1:
			name="historical";
			System.out.println("Processing Hisorical data");
			data.put("roomsandcourses", associateFieldAndRooms(getSpreadsheet(name),1));
			((Map<String,ArrayList<String>>)data.get("roomsandcourses")).put("header", new ArrayList<String>(){{add("Course;Rooms");}});
			data.put("roomsanddepartments", associateFieldAndRooms(getSpreadsheet(name),2));
			((Map<String,ArrayList<String>>)data.get("roomsanddepartments")).put("header", new ArrayList<String>(){{add("Department;Rooms");}});
			data.put("roomsandprofessors", associateFieldAndRooms(getSpreadsheet(name),3));
			((Map<String,ArrayList<String>>)data.get("roomsandprofessors")).put("header", new ArrayList<String>(){{add("Professor;Rooms");}});
			//generateUnionSpecs(getSpreadsheet("workingcourselist"));
			data.put("unionspecs", generateUnionSpecs(getSpreadsheet("workingcourselist"), data.keySet()));
			((Map<String,ArrayList<String>>)data.get("unionspecs")).put("header", new ArrayList<String>(){{add("Course Name;Professor;Course;Professor;Department");}});
			return data.keySet();
		case 2:
			String spreadsheetNames="roomsandprofessors,roomsandcourses,roomsanddepartments,unionspecs,workingcourselist";
			data.put("recommendedrooms",generateRecommendedRooms(spreadsheetNames));
			((Map<String,ArrayList<String>>)data.get("recommendedrooms")).put("header", new ArrayList<String>(){{add("Course Number;Course Title;Cross Listings;Professors;Recommended Rooms;Professor Rooms;Course Rooms;Department Rooms");}});
			return data.keySet();
		case 3:
			//data has the "times" key already, see Driver
			System.out.println("[FM-P1]"+"Spreadsheets are "+this.spreadsheets.size()+" many");
			System.out.println("[FM-P2]"+"Spreadsheets are "+this.getSpreadsheetNames());
			data.put("workingroomlist", generateRooms(getSpreadsheet("workingroomslist")));
			System.out.println("[P  ]"+getFile("workingcourselist").getName());
			data.put("workingcourselist",generateCourses(getSpreadsheet("workingcourselist")));
			data.put("recommendedrooms", readRecs(getSpreadsheet("recommendedrooms")));
			drawEdges("workingcourselist", "workingroomlist", "recommendedrooms", "times");

			TreeMap<String,Course> courseMap = (TreeMap<String, Course>) data.get("workingcourselist"); 
			System.out.println("[P1]"+"number of course nodes is "+courseMap.size());

			try {
				BufferedWriter bw=new BufferedWriter(new FileWriter(new File("test-drawnedges.csv")));
				for (Course n:courseMap.values()){
					String foo = n.getPreferredRooms().toString();
					String bar= n.getShortName().toString();
					//bw.write(bar.substring(1,bar.length()-1)+";"+foo.substring(1,foo.length()-1));
					//bw.newLine();
					//bw.write(n.getShortName()+";"+n.getPreferredRooms());
				}
				bw.close();
				//System.in.read();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}

			TreeMap<String,Room> roomMap = (TreeMap<String, Room>) data.get("workingroomlist");
			System.out.println("[P2]"+"number of room nodes is "+roomMap.size());
			//TODO:Make a Node class
			//TODO:Make a getNodeMap method
			//TODO:Make a getMapMap method
			TreeMap<String,Node> nodeMap = new TreeMap<String,Node>(roomMap);
			nodeMap.putAll(courseMap);
			System.out.println("[P3]"+"number of graph nodes is "+nodeMap.size());
			HashMap<String,ArrayList<String>> ansLF=LF((TreeMap<String,Node>)nodeMap.clone());
			//HashMap<Course,Room> ansRND=RND((TreeMap<String,Node>)nodeMap.clone());
			HashMap<String,ArrayList<String>> ans=ansLF;
			//HashMap<Course,Room> ansAMIS=AMIS((TreeMap<String,Node>)nodeMap.clone());
			System.out.println("Hello "+ans.size());
			for (Entry e :ans.entrySet()){
				System.out.println(e);
			}	

			System.out.println(ans);
			data.put("LFsolutions", ans);
			((Map<String,ArrayList<String>>)data.get("LFsolutions")).put("header", new ArrayList<String>(){{add("Course Name;Room Assigned");}});
			System.out.println(data.keySet());
			Set<String> sol=new TreeSet<String>();
			sol.add("LFsolutions");
			return  sol;
		default:
			break;
		}
		return null;
	}