Skip to content

Commit 3c0ebfd

Browse files
committed
multi-schedule mostly working except swapstage sizing
1 parent 3b209cb commit 3c0ebfd

File tree

8 files changed

+79
-29
lines changed

8 files changed

+79
-29
lines changed

bin/comp110/Controller.class

1 Byte
Binary file not shown.

bin/comp110/Parser.class

206 Bytes
Binary file not shown.

bin/comp110/Storage.class

1 Byte
Binary file not shown.

src/comp110/Controller.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void storage_get_files_complete(boolean success, String message) {
4242
});
4343
// go ahead and give them the schedule immediately for use
4444
try {
45-
List<Schedule> schedules = this.m_parser.parseSchedule(this.m_storage.get_schedule_json_folder(),
45+
List<Schedule> schedules = this.m_parser.parseSchedules(this.m_storage.get_schedule_json_folder(),
4646
this.m_storage.get_path_to_onyen_csv_directory(), this.m_storage.get_schedule_leads_filename());
4747
this.m_ui.setSchedules(schedules);
4848
} catch (Exception e) {
@@ -63,7 +63,7 @@ public void uiRequestSchedule() {
6363
// an exception
6464
// ui needs to be ready to handle null schedule
6565
try {
66-
List<Schedule> schedules = this.m_parser.parseSchedule(this.m_storage.get_schedule_json_folder(),
66+
List<Schedule> schedules = this.m_parser.parseSchedules(this.m_storage.get_schedule_json_folder(),
6767
this.m_storage.get_path_to_onyen_csv_directory(), this.m_storage.get_schedule_leads_filename());
6868
this.m_ui.setSchedules(schedules);
6969
Platform.runLater(() -> this.m_ui.displaySchedule(schedules));

src/comp110/Parser.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,26 +81,32 @@ public Employee parseEmployee(String file) throws Exception {
8181
return new Employee(name, onyen, capacity, gender.equals("M") ? false : true, level, availability);
8282
}
8383

84-
public List<Schedule> parseSchedule(String scheduleFolderPath, String staff_dir, String leadsFile) throws Exception {
84+
public List<Schedule> parseSchedules(String scheduleFolderPath, String staff_dir, String leadsFile) throws Exception {
8585

8686
List<Schedule> schedules = new ArrayList<Schedule>();
8787

8888
// read in the json file
8989
Gson gson = new Gson();
9090
String json = "";
9191

92-
File scheduleFile = null;
92+
File scheduleFilePath = null;
9393
try {
94-
scheduleFile = new File(scheduleFolderPath);
94+
scheduleFilePath = new File(scheduleFolderPath);
9595

9696
} catch (Exception e) {
97+
System.err.println("error in parseSchedules");
9798
throw new Exception("Parser::parseSchedule(): Error reading schedule folder=" + scheduleFolderPath);
9899
}
99-
100-
for (File scheduleJson : scheduleFile.listFiles()) {
101-
Scanner scanner = new Scanner(scheduleFile);
102-
scanner.useDelimiter("\\Z");
103-
json = scanner.next();
100+
for (File scheduleJson : scheduleFilePath.listFiles()) {
101+
Scanner scanner = null;
102+
try {
103+
scanner = new Scanner(scheduleJson);
104+
scanner.useDelimiter("\\Z");
105+
json = scanner.nextLine();
106+
} catch (Exception e) {
107+
System.err.println(e.toString());
108+
throw new Exception("Parser::parseSchedule(): Error reading schedule file= "+ scheduleJson.getAbsolutePath());
109+
}
104110
scanner.close();
105111

106112
// create the json week object

src/comp110/Storage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public String get_availability_csv_filename_from_onyen(String onyen){
6464
}
6565

6666
public String get_schedule_json_folder(){
67-
return this.m_application_directory + DEFAULT_LOCAL_REPO_FOLDER + "/data/currentSchedules";
67+
return this.m_application_directory + DEFAULT_LOCAL_REPO_FOLDER + "/data/currentSchedules/";
6868
}
6969

7070
public String get_schedule_leads_filename(){

src/tests/ParserTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void parseEmployee_test() {
4040
public void parseSchedule_test() {
4141
Parser p = new Parser();
4242
try {
43-
Schedule s = p.parseSchedule("testData/schedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
43+
Schedule s = p.parseSchedules("testData/schedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
4444
Shift test1 = new Shift(0, 1, 0);
4545
Shift test2 = new Shift(0, 2, 0);
4646
Shift test3 = new Shift(1, 5, 0);
@@ -131,9 +131,9 @@ public void writeFile_test() {
131131
public void writeScheduleToJson_Test() {
132132
Parser p = new Parser();
133133
try {
134-
Schedule s = p.parseSchedule("testData/schedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
134+
Schedule s = p.parseSchedules("testData/schedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
135135
p.writeScheduleToJson(s, "testData/testSchedule.json");
136-
Schedule result = p.parseSchedule("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
136+
Schedule result = p.parseSchedules("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
137137
assertEquals(s.equals(result), true);
138138
} catch (Exception e) {
139139
// TODO Auto-generated catch block
@@ -170,12 +170,12 @@ public void writeRepeatedFiles(){
170170
public void writeRepeatedSchedules(){
171171
Parser p = new Parser();
172172
try {
173-
Schedule s = p.parseSchedule("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
173+
Schedule s = p.parseSchedules("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
174174
p.writeScheduleToJson(s, "testData/testSchedule.json");
175-
Schedule result = p.parseSchedule("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
175+
Schedule result = p.parseSchedules("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
176176
for(int i = 0; i < 20; i++){
177177
p.writeScheduleToJson(result, "testData/testSchedule.json");
178-
result = p.parseSchedule("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
178+
result = p.parseSchedules("testData/testSchedule.json", "data/spring-17/staff", "data/fall-17/leads.csv");
179179
}
180180
assertEquals(s.equals(result), true);
181181
} catch (Exception e) {

src/ui/PerformSwapStage.java

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,34 @@ private void performSwap(ActionEvent event) {
226226

227227
private void setupForDrop() {
228228
_addOrDropButton.setDisable(true);
229-
229+
230+
BorderPane firstColumn = new BorderPane();
231+
232+
List<String> scheduleListNames = new ArrayList<String>();
233+
for (Schedule s :_ui.getSchedules()) {
234+
scheduleListNames.add(s.getDatesValid());
235+
}
236+
237+
javafx.collections.ObservableList<String> scheduleList = FXCollections.observableArrayList(scheduleListNames);
238+
ListView<String> scheduleListView = new ListView<String>(scheduleList);
239+
230240
javafx.collections.ObservableList<String> dayList = FXCollections.observableArrayList(_ui.getDaysList());
231241
ListView<String> dayListView = new ListView<String>(dayList);
232-
_addOrDropPane.setLeft(dayListView);
242+
243+
scheduleListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
244+
_dropSchedule = _ui.getScheduleByName(newValue);
245+
javafx.collections.ObservableList<String> days = FXCollections
246+
.observableArrayList(_ui.getDaysList());
247+
dayListView.setItems(days);
248+
_employeeToAddOrDrop = null;
249+
_addOrDropButton.setDisable(true);
250+
});
251+
252+
253+
254+
firstColumn.setTop(scheduleListView);
255+
firstColumn.setBottom(dayListView);
256+
_addOrDropPane.setLeft(firstColumn);
233257
ListView<String> hourListView = new ListView<String>();
234258
_addOrDropPane.setCenter(hourListView);
235259
dayListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
@@ -249,7 +273,7 @@ private void setupForDrop() {
249273
_dropHour += 12;
250274
}
251275
List<Label> scheduledEmployees = new ArrayList<Label>();
252-
for (Employee e : _ui.getSchedules().getWeek().getShift(_dropDay, _dropHour)) {
276+
for (Employee e : _dropSchedule.getWeek().getShift(_dropDay, _dropHour)) {
253277
Label toAdd = new Label(e.getName());
254278
if (_ui.getCurrentEmployee() != null && toAdd.getText().equals(_ui.getCurrentEmployee().getName())) {
255279
toAdd.setTextFill(Color.RED);
@@ -262,7 +286,7 @@ private void setupForDrop() {
262286
_addOrDropButton.setDisable(true);
263287
});
264288
personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
265-
_employeeToAddOrDrop = _ui.getSchedules().getStaff().getEmployeeByName(newValue.getText());
289+
_employeeToAddOrDrop = _dropSchedule.getStaff().getEmployeeByName(newValue.getText());
266290
if (_employeeToAddOrDrop == null) {
267291
_addOrDropButton.setDisable(true);
268292
} else {
@@ -273,9 +297,29 @@ private void setupForDrop() {
273297

274298
private void setupForAdd() {
275299
_addOrDropButton.setDisable(true);
276-
300+
301+
BorderPane firstColumn = new BorderPane();
302+
303+
List<String> scheduleListNames = new ArrayList<String>();
304+
for (Schedule s :_ui.getSchedules()) {
305+
scheduleListNames.add(s.getDatesValid());
306+
}
307+
308+
javafx.collections.ObservableList<String> scheduleList = FXCollections.observableArrayList(scheduleListNames);
309+
ListView<String> scheduleListView = new ListView<String>(scheduleList);
310+
277311
javafx.collections.ObservableList<String> dayList = FXCollections.observableArrayList(_ui.getDaysList());
278312
ListView<String> dayListView = new ListView<String>(dayList);
313+
314+
scheduleListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
315+
_addSchedule = _ui.getScheduleByName(newValue);
316+
javafx.collections.ObservableList<String> days = FXCollections
317+
.observableArrayList(_ui.getDaysList());
318+
dayListView.setItems(days);
319+
_employeeToAddOrDrop = null;
320+
_addOrDropButton.setDisable(true);
321+
});
322+
279323
_addOrDropPane.setLeft(dayListView);
280324
ListView<String> hourListView = new ListView<String>();
281325
_addOrDropPane.setCenter(hourListView);
@@ -296,7 +340,7 @@ private void setupForAdd() {
296340
_addHour += 12;
297341
}
298342
List<Label> allEmployees = new ArrayList<Label>();
299-
for (Employee e : _ui.getSchedules().getStaff()) {
343+
for (Employee e : _addSchedule.getStaff()) {
300344
Label toAdd = new Label(e.getName());
301345
if (_ui.getCurrentEmployee() != null && toAdd.getText().equals(_ui.getCurrentEmployee().getName())) {
302346
toAdd.setTextFill(Color.RED);
@@ -331,7 +375,7 @@ private void setupForAdd() {
331375
_addOrDropButton.setDisable(true);
332376
});
333377
personListView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
334-
_employeeToAddOrDrop = _ui.getSchedules().getStaff().getEmployeeByName(newValue.getText());
378+
_employeeToAddOrDrop = _addSchedule.getStaff().getEmployeeByName(newValue.getText());
335379
if (_employeeToAddOrDrop == null) {
336380
_addOrDropButton.setDisable(true);
337381
} else {
@@ -346,20 +390,20 @@ private void setupForAdd() {
346390
private void addDropButtonPress(ActionEvent event) {
347391

348392
if (_addOrDrop.equals("Add")) {
349-
_ui.getSchedules().getWeek().getShift(_addDay, _addHour).add(_employeeToAddOrDrop);
393+
_addSchedule.getWeek().getShift(_addDay, _addHour).add(_employeeToAddOrDrop);
350394
} else { // must be a drop
351-
_ui.getSchedules().getWeek().getShift(_dropDay, _dropHour).remove(_employeeToAddOrDrop);
395+
_dropSchedule.getWeek().getShift(_dropDay, _dropHour).remove(_employeeToAddOrDrop);
352396

353397
}
354398
// tell controller to push changes
355399
if (_addOrDrop.equals("Add")) {
356400
_controller.uiRequestChangeSchedule(_ui.getSchedules(),
357-
_addOrDrop.toUpperCase() + ": " + _employeeToAddOrDrop + " " + Week.dayString(_addDay) + " "
401+
_addOrDrop.toUpperCase() + ": " + _addSchedule.getDatesValid() + " " + _employeeToAddOrDrop + " " + Week.dayString(_addDay) + " "
358402
+ ((_addHour % 12) == 0 ? 12 : (_addHour % 12)) + " -- "
359403
+ (((_addHour + 1) % 12) == 0 ? 12 : ((_addHour + 1) % 12)));
360-
} else {
404+
} else { //it's a drop
361405
_controller.uiRequestChangeSchedule(_ui.getSchedules(),
362-
_addOrDrop.toUpperCase() + ": " + _employeeToAddOrDrop + " " + Week.dayString(_dropDay) + " "
406+
_addOrDrop.toUpperCase() + ": " + _dropSchedule.getDatesValid() + " " + _employeeToAddOrDrop + " " + Week.dayString(_dropDay) + " "
363407
+ ((_dropHour % 12) == 0 ? 12 : (_dropHour % 12)) + " -- "
364408
+ (((_dropHour + 1) % 12) == 0 ? 12 : ((_dropHour + 1) % 12)));
365409
}

0 commit comments

Comments
 (0)