private String getReport(){
		Factory f = new Factory();
		StringBuilder sb = new StringBuilder();
		
		try{
			ArrayList<User> users = f.getUsers();
			for(User u : users){
				appendLine(sb, "User: " + u.toString());
				if(u.isClient()){
					ArrayList<WorkoutPlan> uPlans = f.getWorkoutPlansForUser(u);
					appendLine(sb, '\t' + "Plans{");
					for(WorkoutPlan uPlan : uPlans){
						appendLine(sb, "\t\t" + uPlan.toString());
						
						appendLine(sb, "\t\t" + "Elements{");
						ArrayList<PlanElement> elements = f.getPlanElements(uPlan);
						for(PlanElement e : elements){
							appendLine(sb, "\t\t\t" + e.toString());
							
							appendLine(sb, "\t\t\t" + "Logs{");
							ArrayList<WorkoutLog> logs = f.getWorkoutLogs(e.getKey());
							for(WorkoutLog l : logs){
								appendLine(sb, "\t\t\t\t" + l.toString());
							}
							appendLine(sb, "\t\t\t" + "}");
						}
						appendLine(sb, "\t\t" + "}");
					}
					appendLine(sb, '\t' + "}");
				}
			}
			
			ArrayList<Activity> activities = f.getActivities();
			appendLine(sb, "Activities{");
			for(Activity a : activities){
				appendLine(sb, '\t' + a.toString());
			}
			appendLine(sb, "}");
			
			ArrayList<EquipmentType> types = f.getEquipmentTypes();
			appendLine(sb, "Equipment Types{");
			for(EquipmentType type : types)
				appendLine(sb, '\t' + type.toString());
			appendLine(sb, '\t' + "}");
			
			ArrayList<Equipment> equipment = f.getEquipment();
			appendLine(sb, "Equipment{");
			for(Equipment e : equipment)
				appendLine(sb, '\t' + e.toString());
			appendLine(sb, '\t' + "}");
		}catch(SQLException e){
			e.printStackTrace();
		}
		
		return sb.toString();
	}