-
Notifications
You must be signed in to change notification settings - Fork 5
/
LessonParser.java
134 lines (121 loc) · 3.42 KB
/
LessonParser.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
Twidor: the twiddler typing tutor.
Copyright (C) 2005 James Fusia
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
/**
* CCG: Twidor- The Twiddler Tutor!
* <pre>
* LessonParser.java, the class to read the lessons.txt file and produce
* the associated Lesson interface in the menu system, as well as control
* the flow of the tutoring.
*
* Revisions:
* 0.1 11 August 2005
* Created class LessonParser
* </pre>
* @author <a href="mailto:visyz@cc.gatech.edu">James Fusia</a>
* @version Version 0.1; 11 August 2005
*/
import java.util.*;
import java.io.*;
public class LessonParser implements TwidorConstants {
/**
* internal variables
*/
private Vector lessons;
private LessonParser () {
lessons = new Vector();
}
/**
* default constructor
*/
public LessonParser (String file) {
this();
int count = 1;
FileReader fReader = null;
InputStream iStream = null;
InputStreamReader isReader = null;
BufferedReader bReader = null;
if (bDEBUG) System.out.println("LessonParser: reading file " + file);
try {
fReader = new FileReader(file);
bReader = new BufferedReader(fReader);
} catch (FileNotFoundException e) {
iStream = this.getClass().getResourceAsStream(file);
if (iStream != null) {
isReader = new InputStreamReader(iStream);
bReader = new BufferedReader(isReader);
} else {
System.out.println("Could not load Lesson Planner. (" + file + " not found)");
System.exit(1);
}
} catch (Exception e) {
}
try {
while (bReader.ready()) {
/* read a sentence with readLine() */
String line = bReader.readLine();
line.trim();
if (line.startsWith("#")) {
/* comment. ignore it. */
} else {
String[] parts = line.split("\\s");
if (parts.length == 4) {
Lesson nLesson = new Lesson(parts[0]);
nLesson.setLessonTotal(Integer.parseInt(parts[1]));
if (parts[2].equalsIgnoreCase("y")) {
nLesson.setHighlight(true);
} else {
nLesson.setHighlight(false);
}
if (parts[3].equalsIgnoreCase("y")) {
nLesson.setHighlightMCC(true);
} else {
nLesson.setHighlightMCC(false);
}
nLesson.setLessonNumber(count++);
addLesson(nLesson);
}
}
}
} catch (IOException e) {
if (bDEBUG) System.out.println("LessonParser: IO Error while reading");
} catch (Exception e) {
if (bDEBUG) System.out.println("LessonParser: General error");
}
try {
bReader.close();
if (iStream == null) {
fReader.close();
} else {
isReader.close();
iStream.close();
}
} catch (Exception e) {
}
}
private void addLesson (Lesson newLesson) {
lessons.addElement(newLesson);
}
/**
* accessors
*/
public int getLessonCount () {
return lessons.size();
}
public Lesson getLesson (int number) {
return (Lesson)lessons.elementAt(number);
}
}