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;
import org.w3c.dom.*;
import seng302.models.GateMark;
import seng302.models.Mark;
import seng302.models.mark.*;
import java.util.ArrayList;
import java.util.NoSuchElementException;
@@ -26,15 +25,15 @@ public class CourseParser extends FileParser {
* @param node
* @return a mark, or null if fails to create a mark
*/
private Mark generateMark(Node node) {
private SingleMark generateSingleMark(Node node) {
try {
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String name = element.getElementsByTagName("name").item(0).getTextContent();
double lat = Double.valueOf(element.getElementsByTagName("latitude").item(0).getTextContent());
double lon = Double.valueOf(element.getElementsByTagName("longitude").item(0).getTextContent());
Mark mark = new Mark(name, lat, lon);
return mark;
SingleMark singleMark = new SingleMark(name, lat, lon);
return singleMark;
} else {
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.
*/
public ArrayList<GateMark> getGates() {
public ArrayList<GateMark> getGateMarks() {
ArrayList<GateMark> gateMarks = new ArrayList<>();
try {
@@ -61,8 +60,8 @@ public class CourseParser extends FileParser {
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String name = element.getElementsByTagName("name").item(0).getTextContent();
Mark mark1 = generateMark(element.getElementsByTagName("mark").item(0));
Mark mark2 = generateMark(element.getElementsByTagName("mark").item(1));
SingleMark mark1 = generateSingleMark(element.getElementsByTagName("mark").item(0));
SingleMark mark2 = generateSingleMark(element.getElementsByTagName("mark").item(1));
GateMark gateMark = new GateMark(name, mark1, mark2);
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.
*/
public ArrayList<Mark> getMarks() {
ArrayList<Mark> marks = new ArrayList<>();
public ArrayList<SingleMark> getSingleMarks() {
ArrayList<SingleMark> singleMarks = new ArrayList<>();
try {
// find the "marks" tag
@@ -90,11 +89,11 @@ public class CourseParser extends FileParser {
if (n.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) n;
if (element.getNodeName() == "mark") {
marks.add(generateMark(n));
singleMarks.add(generateSingleMark(n));
}
}
}
return marks;
return singleMarks;
} catch (Exception e) {
e.printStackTrace();
return null;
@@ -2,8 +2,7 @@ package seng302.models.parsers;
import org.junit.Before;
import org.junit.Test;
import seng302.models.GateMark;
import seng302.models.Mark;
import seng302.models.mark.*;
import java.util.ArrayList;
@@ -24,7 +23,7 @@ public class CourseParserTest {
@Test
public void getGates() throws Exception {
ArrayList<GateMark> gateMarks = cp.getGates();
ArrayList<GateMark> gateMarks = cp.getGateMarks();
assertEquals(4, gateMarks.size());
assertEquals("Start", gateMarks.get(0).getName());
@@ -32,20 +31,20 @@ public class CourseParserTest {
assertEquals("Windward Gate", gateMarks.get(2).getName());
assertEquals("Finish", gateMarks.get(3).getName());
assertEquals("Start1", gateMarks.get(0).getMark1().getName());
assertEquals("Start2", gateMarks.get(0).getMark2().getName());
assertEquals(32.293834, gateMarks.get(0).getMark2().getLatitude(), 0.00000001);
assertEquals(-64.855195, gateMarks.get(0).getMark2().getLongitude(), 0.00000001);
assertEquals("Start1", gateMarks.get(0).getSingleMark1().getName());
assertEquals("Start2", gateMarks.get(0).getSingleMark2().getName());
assertEquals(32.293834, gateMarks.get(0).getSingleMark2().getLatitude(), 0.00000001);
assertEquals(-64.855195, gateMarks.get(0).getSingleMark2().getLongitude(), 0.00000001);
assertEquals("Finish1", gateMarks.get(3).getMark1().getName());
assertEquals("Finish2", gateMarks.get(3).getMark2().getName());
assertEquals(32.318303, gateMarks.get(3).getMark2().getLatitude(), 0.00000001);
assertEquals(-64.834974, gateMarks.get(3).getMark2().getLongitude(), 0.00000001);
assertEquals("Finish1", gateMarks.get(3).getSingleMark1().getName());
assertEquals("Finish2", gateMarks.get(3).getSingleMark2().getName());
assertEquals(32.318303, gateMarks.get(3).getSingleMark2().getLatitude(), 0.00000001);
assertEquals(-64.834974, gateMarks.get(3).getSingleMark2().getLongitude(), 0.00000001);
}
@Test
public void getMarks() throws Exception {
ArrayList<Mark> marks = cp.getMarks();
ArrayList<SingleMark> marks = cp.getSingleMarks();
assertEquals(1, marks.size());
assertEquals("Mid Mark", marks.get(0).getName());
}