Refactored RegattaData

#story[778]
main
Erika Savell 9 years ago
parent ba5c965fd6
commit 19224ba840

@ -6,7 +6,6 @@ import javafx.stage.Stage;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import seng302.Mock.RaceDataSource; import seng302.Mock.RaceDataSource;
import seng302.Mock.RegattaDataSource; import seng302.Mock.RegattaDataSource;
import seng302.Mock.RegattaXMLReader;
import seng302.Model.Event; import seng302.Model.Event;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;

@ -3,7 +3,6 @@ package seng302.Data;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import seng302.Exceptions.InvalidRegattaDataException; import seng302.Exceptions.InvalidRegattaDataException;
import seng302.Mock.Regatta;
import seng302.Mock.RegattaDataSource; import seng302.Mock.RegattaDataSource;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
@ -23,7 +22,8 @@ public class RegattaData {
private RegattaDataSource regattaDataSource; private RegattaDataSource regattaDataSource;
private Document doc;
private Element rootElement;
public RegattaData(RegattaDataSource regattaDataSource) { public RegattaData(RegattaDataSource regattaDataSource) {
this.regattaDataSource = regattaDataSource; this.regattaDataSource = regattaDataSource;
@ -31,76 +31,105 @@ public class RegattaData {
public String createXML() { public String createXML() {
Regatta regatta = regattaDataSource.getRegatta();
try { try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
//root element //root element
Document doc = docBuilder.newDocument(); doc = docBuilder.newDocument();
Element rootElement = doc.createElement("RegattaConfig"); rootElement = doc.createElement("RegattaConfig");
doc.appendChild(rootElement); doc.appendChild(rootElement);
appendChildElements();
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
//Serialize document.
StringWriter stringWriter = new StringWriter();
StreamResult result = new StreamResult(stringWriter);
transformer.transform(source,result);
return stringWriter.toString();
} catch (ParserConfigurationException pce) {
throw new InvalidRegattaDataException();
} catch (TransformerException tfe) {
throw new InvalidRegattaDataException();
}
}
private void appendRegattaID() {
//regattaID element //regattaID element
Element regattaID = doc.createElement("RegattaID"); Element regattaID = doc.createElement("RegattaID");
regattaID.appendChild(doc.createTextNode(Integer.toString(regatta.getRegattaID()))); regattaID.appendChild(doc.createTextNode(Integer.toString(regattaDataSource.getRegatta().getRegattaID())));
rootElement.appendChild(regattaID); rootElement.appendChild(regattaID);
}
private void appendRegattaName() {
//regattaName element //regattaName element
Element regattaName = doc.createElement("RegattaName"); Element regattaName = doc.createElement("RegattaName");
regattaName.appendChild(doc.createTextNode(regatta.getRegattaName())); regattaName.appendChild(doc.createTextNode(regattaDataSource.getRegatta().getRegattaName()));
rootElement.appendChild(regattaName); rootElement.appendChild(regattaName);
}
private void appendCourseName() {
//courseName element //courseName element
Element courseName = doc.createElement("CourseName"); Element courseName = doc.createElement("CourseName");
courseName.appendChild(doc.createTextNode(regatta.getCourseName())); courseName.appendChild(doc.createTextNode(regattaDataSource.getRegatta().getCourseName()));
rootElement.appendChild(courseName); rootElement.appendChild(courseName);
}
private void appendCentralLatitude() {
//centralLatitude element //centralLatitude element
Element centralLat = doc.createElement("CentralLatitude"); Element centralLat = doc.createElement("CentralLatitude");
centralLat.appendChild(doc.createTextNode(Double.toString(regatta.getCentralLatitude()))); centralLat.appendChild(doc.createTextNode(Double.toString(regattaDataSource.getRegatta().getCentralLatitude())));
rootElement.appendChild(centralLat); rootElement.appendChild(centralLat);
}
private void appendCentralLongitude() {
//centralLongitude element //centralLongitude element
Element centralLong = doc.createElement("CentralLongitude"); Element centralLong = doc.createElement("CentralLongitude");
centralLong.appendChild(doc.createTextNode(Double.toString(regatta.getCentralLongitude()))); centralLong.appendChild(doc.createTextNode(Double.toString(regattaDataSource.getRegatta().getCentralLongitude())));
rootElement.appendChild(centralLong); rootElement.appendChild(centralLong);
}
private void appendCentralAltitude() {
//centralAltitude element //centralAltitude element
Element centralAlt = doc.createElement("CentralAltitude"); Element centralAlt = doc.createElement("CentralAltitude");
centralAlt.appendChild(doc.createTextNode(Double.toString(regatta.getCentralAltitude()))); centralAlt.appendChild(doc.createTextNode(Double.toString(regattaDataSource.getRegatta().getCentralAltitude())));
rootElement.appendChild(centralAlt); rootElement.appendChild(centralAlt);
}
private void appedUtcOffset() {
//utcOffset element //utcOffset element
Element utcOffset = doc.createElement("UtcOffset"); Element utcOffset = doc.createElement("UtcOffset");
utcOffset.appendChild(doc.createTextNode(Double.toString(regatta.getUtcOffset()))); utcOffset.appendChild(doc.createTextNode(Double.toString(regattaDataSource.getRegatta().getUtcOffset())));
rootElement.appendChild(utcOffset); rootElement.appendChild(utcOffset);
}
private void appendMagneticVariation() {
//magneticVariation element //magneticVariation element
Element magneticVariation = doc.createElement("MagneticVariation"); Element magneticVariation = doc.createElement("MagneticVariation");
magneticVariation.appendChild(doc.createTextNode(Double.toString(regatta.getMagneticVariation()))); magneticVariation.appendChild(doc.createTextNode(Double.toString(regattaDataSource.getRegatta().getMagneticVariation())));
rootElement.appendChild(magneticVariation); rootElement.appendChild(magneticVariation);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
//Serialize document.
StringWriter stringWriter = new StringWriter();
StreamResult result = new StreamResult(stringWriter);
transformer.transform(source,result);
return stringWriter.toString();
} catch (ParserConfigurationException pce) {
throw new InvalidRegattaDataException();
} catch (TransformerException tfe) {
throw new InvalidRegattaDataException();
}
} }
private void appendChildElements() {
appendRegattaID();
appendRegattaName();
appendCourseName();
appendCentralLatitude();
appendCentralLongitude();
appendCentralAltitude();
appedUtcOffset();
appendMagneticVariation();
}
} }

@ -1,5 +1,7 @@
package seng302.Mock; package seng302.Mock;
import seng302.Model.Regatta;
/** /**
* Created by zwu18 on 25/04/17. * Created by zwu18 on 25/04/17.
*/ */

@ -1,4 +1,4 @@
package seng302.Mock; package seng302.Model;
/** /**
* Created by jjg64 on 19/04/17. * Created by jjg64 on 19/04/17.

@ -1,8 +1,10 @@
package seng302.Mock; package seng302;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; import org.xml.sax.SAXException;
import seng302.Mock.RegattaDataSource;
import seng302.Model.Regatta;
import seng302.XMLReader; import seng302.XMLReader;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;

@ -2,6 +2,8 @@ package seng302.Mock;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import seng302.Model.Regatta;
import seng302.RegattaXMLReader;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotEquals;

Loading…
Cancel
Save