Merged the refactored mark related class with course parser.

#fix #refactor #story[9] #story[10] #story[11]
This commit is contained in:
Haoming Yin
2017-03-17 15:56:37 +13:00
parent 23b163e6c1
commit 8fd06c84ac
2 changed files with 22 additions and 24 deletions
@@ -1,8 +1,7 @@
package seng302.models.parsers; package seng302.models.parsers;
import org.w3c.dom.*; import org.w3c.dom.*;
import seng302.models.GateMark; import seng302.models.mark.*;
import seng302.models.Mark;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
@@ -26,15 +25,15 @@ public class CourseParser extends FileParser {
* @param node * @param node
* @return a mark, or null if fails to create a mark * @return a mark, or null if fails to create a mark
*/ */
private Mark generateMark(Node node) { private SingleMark generateSingleMark(Node node) {
try { try {
if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node; Element element = (Element) node;
String name = element.getElementsByTagName("name").item(0).getTextContent(); String name = element.getElementsByTagName("name").item(0).getTextContent();
double lat = Double.valueOf(element.getElementsByTagName("latitude").item(0).getTextContent()); double lat = Double.valueOf(element.getElementsByTagName("latitude").item(0).getTextContent());
double lon = Double.valueOf(element.getElementsByTagName("longitude").item(0).getTextContent()); double lon = Double.valueOf(element.getElementsByTagName("longitude").item(0).getTextContent());
Mark mark = new Mark(name, lat, lon); SingleMark singleMark = new SingleMark(name, lat, lon);
return mark; return singleMark;
} else { } else {
throw new NoSuchElementException("Cannot generate a mark by given node."); throw new NoSuchElementException("Cannot generate a mark by given node.");
} }
@@ -49,7 +48,7 @@ public class CourseParser extends FileParser {
* *
* @return an arrayList of gates, or null if no gate has been found. * @return an arrayList of gates, or null if no gate has been found.
*/ */
public ArrayList<GateMark> getGates() { public ArrayList<GateMark> getGateMarks() {
ArrayList<GateMark> gateMarks = new ArrayList<>(); ArrayList<GateMark> gateMarks = new ArrayList<>();
try { try {
@@ -61,8 +60,8 @@ public class CourseParser extends FileParser {
if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node; Element element = (Element) node;
String name = element.getElementsByTagName("name").item(0).getTextContent(); String name = element.getElementsByTagName("name").item(0).getTextContent();
Mark mark1 = generateMark(element.getElementsByTagName("mark").item(0)); SingleMark mark1 = generateSingleMark(element.getElementsByTagName("mark").item(0));
Mark mark2 = generateMark(element.getElementsByTagName("mark").item(1)); SingleMark mark2 = generateSingleMark(element.getElementsByTagName("mark").item(1));
GateMark gateMark = new GateMark(name, mark1, mark2); GateMark gateMark = new GateMark(name, mark1, mark2);
gateMarks.add(gateMark); gateMarks.add(gateMark);
} }
@@ -78,8 +77,8 @@ public class CourseParser extends FileParser {
* *
* @return an arrayList of marks, or null if no gate has been found. * @return an arrayList of marks, or null if no gate has been found.
*/ */
public ArrayList<Mark> getMarks() { public ArrayList<SingleMark> getSingleMarks() {
ArrayList<Mark> marks = new ArrayList<>(); ArrayList<SingleMark> singleMarks = new ArrayList<>();
try { try {
// find the "marks" tag // find the "marks" tag
@@ -90,11 +89,11 @@ public class CourseParser extends FileParser {
if (n.getNodeType() == Node.ELEMENT_NODE) { if (n.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) n; Element element = (Element) n;
if (element.getNodeName() == "mark") { if (element.getNodeName() == "mark") {
marks.add(generateMark(n)); singleMarks.add(generateSingleMark(n));
} }
} }
} }
return marks; return singleMarks;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
@@ -2,8 +2,7 @@ package seng302.models.parsers;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import seng302.models.GateMark; import seng302.models.mark.*;
import seng302.models.Mark;
import java.util.ArrayList; import java.util.ArrayList;
@@ -24,7 +23,7 @@ public class CourseParserTest {
@Test @Test
public void getGates() throws Exception { public void getGates() throws Exception {
ArrayList<GateMark> gateMarks = cp.getGates(); ArrayList<GateMark> gateMarks = cp.getGateMarks();
assertEquals(4, gateMarks.size()); assertEquals(4, gateMarks.size());
assertEquals("Start", gateMarks.get(0).getName()); assertEquals("Start", gateMarks.get(0).getName());
@@ -32,20 +31,20 @@ public class CourseParserTest {
assertEquals("Windward Gate", gateMarks.get(2).getName()); assertEquals("Windward Gate", gateMarks.get(2).getName());
assertEquals("Finish", gateMarks.get(3).getName()); assertEquals("Finish", gateMarks.get(3).getName());
assertEquals("Start1", gateMarks.get(0).getMark1().getName()); assertEquals("Start1", gateMarks.get(0).getSingleMark1().getName());
assertEquals("Start2", gateMarks.get(0).getMark2().getName()); assertEquals("Start2", gateMarks.get(0).getSingleMark2().getName());
assertEquals(32.293834, gateMarks.get(0).getMark2().getLatitude(), 0.00000001); assertEquals(32.293834, gateMarks.get(0).getSingleMark2().getLatitude(), 0.00000001);
assertEquals(-64.855195, gateMarks.get(0).getMark2().getLongitude(), 0.00000001); assertEquals(-64.855195, gateMarks.get(0).getSingleMark2().getLongitude(), 0.00000001);
assertEquals("Finish1", gateMarks.get(3).getMark1().getName()); assertEquals("Finish1", gateMarks.get(3).getSingleMark1().getName());
assertEquals("Finish2", gateMarks.get(3).getMark2().getName()); assertEquals("Finish2", gateMarks.get(3).getSingleMark2().getName());
assertEquals(32.318303, gateMarks.get(3).getMark2().getLatitude(), 0.00000001); assertEquals(32.318303, gateMarks.get(3).getSingleMark2().getLatitude(), 0.00000001);
assertEquals(-64.834974, gateMarks.get(3).getMark2().getLongitude(), 0.00000001); assertEquals(-64.834974, gateMarks.get(3).getSingleMark2().getLongitude(), 0.00000001);
} }
@Test @Test
public void getMarks() throws Exception { public void getMarks() throws Exception {
ArrayList<Mark> marks = cp.getMarks(); ArrayList<SingleMark> marks = cp.getSingleMarks();
assertEquals(1, marks.size()); assertEquals(1, marks.size());
assertEquals("Mid Mark", marks.get(0).getName()); assertEquals("Mid Mark", marks.get(0).getName());
} }