Skip to content

Commit 43266ed

Browse files
Merge pull request #56 from CSC207-2022F-UofT/53-dialog-boxes
changed the StudySession failure case to throw an exception
2 parents d7327ee + b354346 commit 43266ed

9 files changed

+34
-85
lines changed

src/main/java/studyMode/StudySessionInteractor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,14 @@ public StudySessionResponseModel study(StudySessionRequestModel request) {
5757
}
5858

5959
@Override
60-
public StudySettingsResponseModel getSetToStudy(StudySettingsRequestModel request) throws IndexOutOfBoundsException {
60+
public StudySettingsResponseModel getSetToStudy(StudySettingsRequestModel request) {
6161
this.studier = builder.buildStudier(request.getFlashcardSetId(), request.isTermDefault());
6262

63-
try {
63+
if (this.studier.getNumFlashcards() == 0) {
64+
String error = "<html>This flashcard set is empty. Please add some flashcard to begin studying!</html>";
65+
return presenter.prepareFailedStudyView(error);
66+
}
67+
else {
6468
String sortingOrder = request.getSortingOrder();
6569
if (sortingOrder.equals(StudySessionInteractor.shuffleSort)) {
6670
studier.shuffle();
@@ -81,8 +85,5 @@ public StudySettingsResponseModel getSetToStudy(StudySettingsRequestModel reques
8185
return presenter.prepareSuccessStudyView(studier.getOutputText(), studier.getTitle(),
8286
studier.getNumFlashcards(), studier.getFlashcardSetId());
8387
}
84-
catch (IndexOutOfBoundsException exception) {
85-
return presenter.prepareFailedStudyView();
86-
}
8788
}
8889
}

src/main/java/studyMode/StudySessionOutputBoundary.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ StudySettingsResponseModel prepareSuccessStudyView(String outputText, String tit
2929
int numFlashcards, int flashcardSetId);
3030

3131
/**
32-
* @return a response model which specifies that creating the study view has failed
32+
* @return alert the system that preparing the study view has failed
3333
*/
34-
StudySettingsResponseModel prepareFailedStudyView();
34+
StudySettingsResponseModel prepareFailedStudyView(String error);
3535

3636
}

src/main/java/studyMode/StudySessionPresenter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package studyMode;
22

3+
import studyMode.screens.StudySettingsFailed;
4+
35
/**
46
* The study session presenter.
57
* <p>
@@ -20,7 +22,7 @@ public StudySettingsResponseModel prepareSuccessStudyView(String outputText, Str
2022
}
2123

2224
@Override
23-
public StudySettingsResponseModel prepareFailedStudyView() {
24-
return new StudySettingsResponseModel();
25+
public StudySettingsResponseModel prepareFailedStudyView(String error) {
26+
throw new StudySettingsFailed(error);
2527
}
2628
}

src/main/java/studyMode/StudySessionResponseModel.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
* @author Lucas Prates
99
*/
1010
public class StudySessionResponseModel {
11-
private String outputText;
12-
private int cardNumber;
11+
private final String outputText;
12+
private final int cardNumber;
1313

1414
/**
1515
* Creates a StudySessionResponseModel
@@ -22,13 +22,6 @@ public StudySessionResponseModel(String outputText, int cardNumber){
2222
this.cardNumber = cardNumber;
2323
}
2424

25-
/**
26-
* Creates a StudySessionResponseModel with null values.
27-
*/
28-
public StudySessionResponseModel() {
29-
30-
}
31-
3225
/**
3326
* @return the output text
3427
*/

src/main/java/studyMode/StudySettingsResponseModel.java

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
*/
1010
public class StudySettingsResponseModel extends StudySessionResponseModel {
1111

12-
private int numFlashcards;
13-
private String title;
14-
private boolean failed = false;
15-
private int flashcardSetId;
12+
private final int numFlashcards;
13+
private final String title;
14+
private final int flashcardSetId;
1615

1716
/**
1817
* Creates a StudySettingsResponseModel
@@ -29,15 +28,6 @@ public StudySettingsResponseModel(String outputText, String title,
2928
this.flashcardSetId = flashcardSetId;
3029
}
3130

32-
/**
33-
* Creates a StudySettingsResponseModel with null values, and sets
34-
* hasFailed to true
35-
*/
36-
public StudySettingsResponseModel(){
37-
super();
38-
this.failed = true;
39-
}
40-
4131
/**
4232
* @return the total number of flashcards in the current flashcard set
4333
*/
@@ -48,13 +38,6 @@ public StudySettingsResponseModel(){
4838
*/
4939
public String getTitle(){return title;}
5040

51-
/**
52-
* @return returns true if the output data was successfully created
53-
*/
54-
public boolean hasFailed (){
55-
return failed;
56-
}
57-
5841
/**
5942
* @return the ID of the current flashcard set
6043
*/
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package studyMode.screens;
2+
3+
public class StudySettingsFailed extends RuntimeException {
4+
public StudySettingsFailed(String error) {
5+
super(error);
6+
}
7+
}
8+

src/main/java/studyMode/screens/StudySettingsFailureScreen.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/main/java/studyMode/screens/StudySettingsScreen.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,19 @@ public void actionPerformed(ActionEvent e) {
149149
termIsDefault, isReverse);
150150
}
151151

152-
// get the response model
153-
StudySettingsResponseModel response = this.controller.getSetToStudy(request);
154152

155153
// close this screen
156154
setVisible(false);
157155
dispose();
158156

159-
// open the appropriate screen
160-
if (response.hasFailed()){
161-
new StudySettingsFailureScreen();
162-
}
163-
else {
157+
// get the response model
158+
try {
159+
StudySettingsResponseModel response = this.controller.getSetToStudy(request);
164160
new StudySessionScreen(this.controller, response);
165161
}
162+
catch (StudySettingsFailed err) {
163+
JOptionPane.showMessageDialog(this, err.getMessage());
164+
}
165+
166166
}
167167
}

src/test/java/studyMode/StudySessionUseCaseUnitTest.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package studyMode;
22
import dataAccess.*;
33
import org.junit.jupiter.api.Test;
4+
import studyMode.screens.StudySettingsFailed;
45

56
import java.io.IOException;
67

@@ -41,7 +42,6 @@ void testTimeSort() throws IOException {
4142
StudySessionController.timeSort, true, false);
4243

4344
StudySettingsResponseModel settings = controller.getSetToStudy(request);
44-
assertFalse(settings.hasFailed());
4545

4646
assertEquals("test card 1", settings.getOutputText());
4747
assertEquals(1, settings.getCardNumber());
@@ -69,7 +69,6 @@ void testAlphSort() throws IOException {
6969
StudySessionController.alphSort, true, false);
7070

7171
StudySettingsResponseModel settings = controller.getSetToStudy(request);
72-
assertFalse(settings.hasFailed());
7372

7473
assertEquals("alphabetical order checker", settings.getOutputText());
7574
assertEquals(1, settings.getCardNumber());
@@ -97,7 +96,6 @@ void testPrevious() throws IOException {
9796
StudySessionController.timeSort, true, false);
9897

9998
StudySettingsResponseModel settings = controller.getSetToStudy(request);
100-
assertFalse(settings.hasFailed());
10199

102100
assertEquals("test card 1", settings.getOutputText());
103101
assertEquals(1, settings.getCardNumber());
@@ -125,7 +123,6 @@ void testFlip() throws IOException {
125123
StudySessionController.timeSort, true, false);
126124

127125
StudySettingsResponseModel settings = controller.getSetToStudy(request);
128-
assertFalse(settings.hasFailed());
129126

130127
assertEquals("test card 1", settings.getOutputText());
131128
assertEquals(1, settings.getCardNumber());
@@ -145,7 +142,6 @@ void testsTermNotDefault() throws IOException {
145142
StudySessionController.timeSort, false, false);
146143

147144
StudySettingsResponseModel settings = controller.getSetToStudy(request);
148-
assertFalse(settings.hasFailed());
149145

150146
assertEquals("the first test card", settings.getOutputText());
151147
assertEquals(1, settings.getCardNumber());
@@ -165,7 +161,6 @@ void testReverse() throws IOException {
165161
StudySessionController.timeSort, true, true);
166162

167163
StudySettingsResponseModel settings = controller.getSetToStudy(request);
168-
assertFalse(settings.hasFailed());
169164

170165
assertEquals("alphabetical order checker", settings.getOutputText());
171166
assertEquals(1, settings.getCardNumber());
@@ -192,7 +187,6 @@ void testEmpty() throws IOException {
192187
StudySettingsRequestModel request = this.setup(emptyTestSetId,
193188
StudySessionController.timeSort, true, true);
194189

195-
StudySettingsResponseModel settings = controller.getSetToStudy(request);
196-
assertTrue(settings.hasFailed());
190+
assertThrows(StudySettingsFailed.class, () -> controller.getSetToStudy(request));
197191
}
198192
}

0 commit comments

Comments
 (0)