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
/** 
	 * This is a method that is used to get the terms and definitions from a
	 * file and place the term and a copy of the term and the term's definition 
	 * into three different ArrayLists.
	 * 
	 * @throws IOException 
	 * @requires in.open = true
	 * @ensures wordsAndTerms = ArrayList: String word, ArrayList: String word_copy
	 * 			ArrayList: String def; where each word is mapped to it's definition 
	 * 			by matching positions
	 */
	private static void getwordsAndDefs(BufferedReader inStream, ArrayList<String> termsInput, 
			ArrayList<String> termsSort, ArrayList<String> definitions) throws IOException {
		try {
			// Read in input until end of file
			String line = new String(inStream.readLine()); 
			while (line != null) {

				// Create String objects for terms and definitions
				String term = new String(line.toLowerCase());
				String termCopy = term.substring(0);
				String def = new String(inStream.readLine());
				
				// Create boolean to tell when an empty line is reached
				boolean emptyLine = false;
				int BUFFER_SIZE = 1000;
				inStream.mark(BUFFER_SIZE);
				while ((inStream.read() != -1) && (!emptyLine)) {
					inStream.reset();
					String tmp = new String(inStream.readLine());
					if (tmp.length() == 0) {
						emptyLine = true;
					} else {
						def += " ";
						def += tmp;
						inStream.mark(BUFFER_SIZE);
					}
				}
				// Add each term and corresponding definition to the ArrayList
				termsInput.add(term);
				termsSort.add(termCopy);
				definitions.add(def);
				
				// Get next line
				line = inStream.readLine(); 
			} 
		} finally {}
		}