Merge branch 'master' into new_issue#19

This commit is contained in:
David Wu
2017-08-17 16:34:19 +12:00
38 changed files with 2271 additions and 135 deletions
@@ -52,6 +52,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
*/
private final List<Leg> legs = new ArrayList<>();
/**
* List of corners in the race
*/
private final List<Corner> cornersList = new ArrayList<>();
/**
* The time that the race.xml file was created.
@@ -337,6 +341,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
//gets the Rounding of this corner element
String cornerRounding = getCompoundMarkRounding(cornerElement);
int cornerSeq = Integer.parseInt(getAttribute(cornerElement, "SeqID"));
cornersList.add(new Corner(cornerID, cornerSeq, "SP", 3));
//Gets the CompoundMark associated with this corner.
CompoundMark lastCompoundMark = this.compoundMarkMap.get(cornerID);
@@ -356,6 +364,9 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
//Gets the ID number of this corner element.
cornerID = getCompoundMarkID(cornerElement);
cornerSeq = Integer.parseInt(getAttribute(cornerElement, "SeqID"));
cornersList.add(new Corner(cornerID, cornerSeq, "Port", 3));
//gets the Rounding of this corner element
cornerRounding = getCompoundMarkRounding(cornerElement);
@@ -476,4 +487,8 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
public List<Integer> getParticipants() {
return participants;
}
public List<Corner> getCornersList() {
return cornersList;
}
}
@@ -1,11 +1,14 @@
package shared.model;
import shared.xml.Race.XMLCompoundMark;
import shared.enums.RoundingType;
/**
* Represents a compound mark - that is, either one or two individual marks which form a single compound mark.
*/
public class CompoundMark {
public class CompoundMark extends XMLCompoundMark{
/**
* The ID of the compound mark.
@@ -45,11 +48,7 @@ public class CompoundMark {
* @param mark1 The individual mark that comprises this compound mark.
*/
public CompoundMark(int id, String name, Mark mark1) {
this.id = id;
this.name = name;
this.mark1 = mark1;
this.averageGPSCoordinate = calculateAverage();
this(id, name, mark1, null);
}
@@ -61,6 +60,14 @@ public class CompoundMark {
* @param mark2 The second individual mark that comprises this compound mark.
*/
public CompoundMark(int id, String name, Mark mark1, Mark mark2) {
//parent set up
super();
setName(name);
setCompoundMarkID(id);
/*TODO need to talk to connor about this as Mark should be extending XMLMark
getMark().add(mark1);
if (mark2 != null) getMark().add(mark2);*/
this.id = id;
this.name = name;
this.mark1 = mark1;
@@ -78,14 +85,6 @@ public class CompoundMark {
return id;
}
/**
* Returns the name of this compound mark
* @return The name of this compound mark.
*/
public String getName() {
return name;
}
/**
* Returns the first mark of the compound mark.
* @return The first mark of the compound mark.
@@ -0,0 +1,25 @@
package shared.model;
import shared.xml.Race.XMLCorner;
/**
* Created by Gondr on 3/08/2017.
*/
public class Corner extends XMLCorner{
private int id;
public Corner(int id, int seqID, String rounding, int zoneSize){
super();
setCompoundMarkID(id);
setSeqID(seqID);
setRounding(rounding);
setZoneSize(zoneSize);
this.id = id;
}
public int getId() {
return id;
}
}
@@ -1,5 +1,10 @@
package shared.model;
import shared.xml.Race.XMLMark;
import java.math.BigDecimal;
import java.math.BigInteger;
import mock.model.collider.Collider;
import mock.model.collider.Collision;
@@ -7,7 +12,7 @@ import mock.model.collider.Collision;
* Represents an individual mark.
* Has a source ID, name, and position.
*/
public class Mark extends Collider {
public class Mark extends Collider{
/**
* The source ID of the mark.
@@ -36,6 +41,13 @@ public class Mark extends Collider {
* @param position The position of the mark.
*/
public Mark(int sourceID, String name, GPSCoordinate position) {
super();
/* TODO need to talk to connor about this as this class should be extending XMLMark
targetLat = position.getLatitude();
targetLng = position.getLongitude();
setSourceID(sourceID);
setName(name);*/
this.sourceID = sourceID;
this.name = name;
this.position = position;
@@ -60,8 +72,8 @@ public class Mark extends Collider {
}
/**
* Returns the source ID of the mark.
* @return The source ID of the mark.
* Returns the source ID of the mark
* @return the source ID of the mark
*/
public int getSourceID() {
return sourceID;
@@ -0,0 +1,135 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Mark" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"mark"
})
public class XMLCompoundMark {
@XmlElement(name = "Mark", required = true)
protected List<XMLMark> mark;
@XmlAttribute(name = "CompoundMarkID", required = true)
protected int compoundMarkID;
@XmlAttribute(name = "Name", required = true)
protected String name;
/**
* Gets the value of the mark property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the mark property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getMark().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link XMLMark }
*
* @return list of marks
*/
public List<XMLMark> getMark() {
if (mark == null) {
mark = new ArrayList<XMLMark>();
}
return this.mark;
}
/**
* Gets the value of the compoundMarkID property.
* @return the id of the compound mark
*/
public int getCompoundMarkID() {
return compoundMarkID;
}
/**
* Sets the value of the compoundMarkID property.
* @param value sets ID of the compound mark
*/
public void setCompoundMarkID(int value) {
this.compoundMarkID = value;
}
/**
* Gets the value of the name property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getName() {
return name;
}
/**
* Sets the value of the name property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setName(String value) {
this.name = value;
}
}
@@ -0,0 +1,87 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Corner" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"corner"
})
public class XMLCompoundMarkSequence {
@XmlElement(name = "Corner", required = true)
protected List<XMLCorner> corner;
/**
* Gets the value of the corner property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the corner property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getCorner().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link XMLCorner }
*
* @return getCorners/legs that the boats are to sequentially pass
*/
public List<XMLCorner> getCorner() {
if (corner == null) {
corner = new ArrayList<XMLCorner>();
}
return this.corner;
}
}
@@ -0,0 +1,122 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class XMLCorner {
@XmlAttribute(name = "CompoundMarkID", required = true)
protected int compoundMarkID;
@XmlAttribute(name = "SeqID", required = true)
protected int seqID;
@XmlAttribute(name = "Rounding", required = true)
protected String rounding;
@XmlAttribute(name = "ZoneSize", required = true)
protected int zoneSize;
/**
* Gets the value of the compoundMarkID property.
* @return Id of the compound mark
*/
public int getCompoundMarkID() {
return compoundMarkID;
}
/**
* Sets the value of the compoundMarkID property.
* @param value sets the id of the compound mark
*/
public void setCompoundMarkID(int value) {
this.compoundMarkID = value;
}
/**
* Gets the value of the seqID property.
* @return the order that the mark is to be passed at
*/
public int getSeqID() {
return seqID;
}
/**
* Sets the value of the seqID property.
* @param value sets the order that this corner is to appear in a race at.
*/
public void setSeqID(int value) {
this.seqID = value;
}
/**
* Gets the value of the rounding property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getRounding() {
return rounding;
}
/**
* Sets the value of the rounding property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setRounding(String value) {
this.rounding = value;
}
/**
* Gets the value of the zoneSize property.
* @return the size of the leg
*/
public int getZoneSize() {
return zoneSize;
}
/**
* Sets the value of the zoneSize property.
* @param value sets the size of the corner.
*/
public void setZoneSize(int value) {
this.zoneSize = value;
}
}
@@ -0,0 +1,100 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="CompoundMark" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Mark" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"compoundMark"
})
public class XMLCourse {
@XmlElement(name = "CompoundMark", required = true)
protected List<XMLCompoundMark> compoundMark;
/**
* Gets the value of the compoundMark property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the compoundMark property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getCompoundMark().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link XMLCompoundMark }
*
* @return the compound marks in the course.
*/
public List<XMLCompoundMark> getCompoundMark() {
if (compoundMark == null) {
compoundMark = new ArrayList<XMLCompoundMark>();
}
return this.compoundMark;
}
}
@@ -0,0 +1,86 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Limit" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"limit"
})
public class XMLCourseLimit {
@XmlElement(name = "Limit", required = true)
protected List<XMLLimit> limit;
/**
* Gets the value of the limit property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the limit property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getLimit().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link XMLLimit }
*
* @return the limits of the race
*/
public List<XMLLimit> getLimit() {
if (limit == null) {
limit = new ArrayList<XMLLimit>();
}
return this.limit;
}
}
@@ -0,0 +1,95 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class XMLLimit {
@XmlAttribute(name = "Lat", required = true)
protected double lat;
@XmlAttribute(name = "Lon", required = true)
protected double lon;
@XmlAttribute(name = "SeqID", required = true)
protected int seqID;
/**
* Gets the value of the lat property.
* @return get the latitude of the limit
*/
public double getLat() {
return lat;
}
/**
* Sets the value of the lat property.
* @param value sets the latitude of the limit
*/
public void setLat(double value) {
this.lat = value;
}
/**
* Gets the value of the lon property.
* @return sets the longitude of the limit
*/
public double getLon() {
return lon;
}
/**
* Sets the value of the lon property.
* @param value sets the longitude of the limit
*/
public void setLon(double value) {
this.lon = value;
}
/**
* Gets the value of the seqID property.
* @return gets the sequence that the limit is at.
*/
public int getSeqID() {
return seqID;
}
/**
* Sets the value of the seqID property.
* @param value sets the order that this limit is to appear in.
*/
public void setSeqID(int value) {
this.seqID = value;
}
}
@@ -0,0 +1,151 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import mock.model.collider.Collider;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class XMLMark{
@XmlAttribute(name = "SeqId")
protected Integer seqId;
@XmlAttribute(name = "Name", required = true)
protected String name;
@XmlAttribute(name = "TargetLat", required = true)
protected double targetLat;
@XmlAttribute(name = "TargetLng", required = true)
protected double targetLng;
@XmlAttribute(name = "SourceID", required = true)
protected int sourceID;
/**
* Gets the value of the seqId property.
*
* @return
* possible object is
* {@link Integer }
*
*/
public Integer getSeqId() {
return seqId;
}
/**
* Sets the value of the seqId property.
*
* @param value
* allowed object is
* {@link Integer }
*
*/
public void setSeqId(Integer value) {
this.seqId = value;
}
/**
* Gets the value of the name property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getName() {
return name;
}
/**
* Sets the value of the name property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setName(String value) {
this.name = value;
}
/**
* Gets the value of the targetLat property.
* @return latitude that mark is at
*/
public double getTargetLat() {
return targetLat;
}
/**
* Sets the value of the targetLat property.
* @param value sets the latitude that the mark is at.
*/
public void setTargetLat(double value) {
this.targetLat = value;
}
/**
* Gets the value of the targetLng property.
* @return the longitude the mark is at
*/
public double getTargetLng() {
return targetLng;
}
/**
* Sets the value of the targetLng property.
* @param value sets the longitude that the value is at
*/
public void setTargetLng(double value) {
this.targetLng = value;
}
/**
* Gets the value of the sourceID property.
* @return the markerboats source ID
*/
public int getSourceID() {
return sourceID;
}
/**
* Sets the value of the sourceID property.
* @param value sets the id of the boat that the mark is referencing to.
*/
public void setSourceID(int value) {
this.sourceID = value;
}
}
@@ -0,0 +1,85 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Yacht" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"yacht"
})
public class XMLParticipants {
@XmlElement(name = "Yacht", required = true)
protected List<XMLYacht> yacht;
/**
* Gets the value of the yacht property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the yacht property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getYacht().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link XMLYacht }
*
* @return the yachts that are part of the race.
*/
public List<XMLYacht> getYacht() {
if (yacht == null) {
yacht = new ArrayList<XMLYacht>();
}
return this.yacht;
}
}
@@ -0,0 +1,362 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 03:20:03 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="RaceID" type="{http://www.w3.org/2001/XMLSchema}int"/&gt;
* &lt;element name="RaceType" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="CreationTimeDate" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
* &lt;element name="RaceStartTime"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="Postpone" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="Time" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;element name="Participants"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Yacht" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;element name="CompoundMarkSequence"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Corner" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Rounding" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="ZoneSize" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;element name="Course"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="CompoundMark" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Mark" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SeqId" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="TargetLat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="TargetLng" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;attribute name="CompoundMarkID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;element name="CourseLimit"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;sequence&gt;
* &lt;element name="Limit" maxOccurs="unbounded"&gt;
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="Lat" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="Lon" use="required" type="{http://www.w3.org/2001/XMLSchema}double" /&gt;
* &lt;attribute name="SeqID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* &lt;/element&gt;
* &lt;/sequence&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"raceID",
"raceType",
"creationTimeDate",
"raceStartTime",
"participants",
"compoundMarkSequence",
"course",
"courseLimit"
})
@XmlRootElement(name = "Race")
public class XMLRace {
@XmlElement(name = "RaceID")
protected int raceID;
@XmlElement(name = "RaceType", required = true)
protected String raceType;
@XmlElement(name = "CreationTimeDate", required = true)
protected String creationTimeDate;
@XmlElement(name = "RaceStartTime", required = true)
protected XMLRaceStartTime raceStartTime;
@XmlElement(name = "Participants", required = true)
protected XMLParticipants participants;
@XmlElement(name = "CompoundMarkSequence", required = true)
protected XMLCompoundMarkSequence compoundMarkSequence;
@XmlElement(name = "Course", required = true)
protected XMLCourse course;
@XmlElement(name = "CourseLimit", required = true)
protected XMLCourseLimit courseLimit;
/**
* Gets the value of the raceID property.
* @return the id of the race
*/
public int getRaceID() {
return raceID;
}
/**
* Sets the value of the raceID property.
* @param value sets the id of the race
*/
public void setRaceID(int value) {
this.raceID = value;
}
/**
* Gets the value of the raceType property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getRaceType() {
return raceType;
}
/**
* Sets the value of the raceType property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setRaceType(String value) {
this.raceType = value;
}
/**
* Gets the value of the creationTimeDate property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCreationTimeDate() {
return creationTimeDate;
}
/**
* Sets the value of the creationTimeDate property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCreationTimeDate(String value) {
this.creationTimeDate = value;
}
/**
* Gets the value of the raceStartTime property.
*
* @return
* possible object is
* {@link XMLRaceStartTime }
*
*/
public XMLRaceStartTime getRaceStartTime() {
return raceStartTime;
}
/**
* Sets the value of the raceStartTime property.
*
* @param value
* allowed object is
* {@link XMLRaceStartTime }
*
*/
public void setRaceStartTime(XMLRaceStartTime value) {
this.raceStartTime = value;
}
/**
* Gets the value of the participants property.
*
* @return
* possible object is
* {@link XMLParticipants }
*
*/
public XMLParticipants getParticipants() {
return participants;
}
/**
* Sets the value of the participants property.
*
* @param value
* allowed object is
* {@link XMLParticipants }
*
*/
public void setParticipants(XMLParticipants value) {
this.participants = value;
}
/**
* Gets the value of the compoundMarkSequence property.
*
* @return
* possible object is
* {@link XMLCompoundMarkSequence }
*
*/
public XMLCompoundMarkSequence getCompoundMarkSequence() {
return compoundMarkSequence;
}
/**
* Sets the value of the compoundMarkSequence property.
*
* @param value
* allowed object is
* {@link XMLCompoundMarkSequence }
*
*/
public void setCompoundMarkSequence(XMLCompoundMarkSequence value) {
this.compoundMarkSequence = value;
}
/**
* Gets the value of the course property.
*
* @return
* possible object is
* {@link XMLCourse }
*
*/
public XMLCourse getCourse() {
return course;
}
/**
* Sets the value of the course property.
*
* @param value
* allowed object is
* {@link XMLCourse }
*
*/
public void setCourse(XMLCourse value) {
this.course = value;
}
/**
* Gets the value of the courseLimit property.
*
* @return
* possible object is
* {@link XMLCourseLimit }
*
*/
public XMLCourseLimit getCourseLimit() {
return courseLimit;
}
/**
* Sets the value of the courseLimit property.
*
* @param value
* allowed object is
* {@link XMLCourseLimit }
*
*/
public void setCourseLimit(XMLCourseLimit value) {
this.courseLimit = value;
}
}
@@ -0,0 +1,127 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:41:51 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlRegistry;
/**
* This object contains factory methods for each
* Java content interface and Java element interface
* generated in the shared.xml.Race package.
* <p>An ObjectFactory allows you to programatically
* construct new instances of the Java representation
* for XML content. The Java representation of XML
* content can consist of schema derived interfaces
* and classes representing the binding of schema
* type definitions, element declarations and model
* groups. Factory methods for each of these are
* provided in this class.
*
*/
@XmlRegistry
public class XMLRaceFactory {
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: shared.xml.Race
*
*/
public XMLRaceFactory() {
}
/**
* Create an instance of {@link XMLRace }
* @return a new instance of a race.
*/
public XMLRace createRace() {
return new XMLRace();
}
/**
* Create an instance of {@link XMLRaceStartTime }
* @return a new start time for the race
*/
public XMLRaceStartTime createXMLRaceStartTime() {
return new XMLRaceStartTime();
}
/**
* Create an instance of {@link XMLParticipants }
* @return a new participant of the race
*/
public XMLParticipants createXMLParticipants() {
return new XMLParticipants();
}
/**
* Create an instance of {@link XMLCompoundMarkSequence }
* @return a new Compound Mark Sequence that hte race is to follow.
*/
public XMLCompoundMarkSequence createXMLCompoundMarkSequence() {
return new XMLCompoundMarkSequence();
}
/**
* Create an instance of {@link XMLCourse }
* @return the course the race is to use.
*/
public XMLCourse createXMLCourse() {
return new XMLCourse();
}
/**
* Create an instance of {@link XMLCourseLimit }
* @return the limits/boundaries of the course.
*/
public XMLCourseLimit createXMLCourseLimit() {
return new XMLCourseLimit();
}
/**
* Create an instance of {@link XMLLimit }
* @return a point on hte boundaries
*/
public XMLLimit createXMLLimit() {
return new XMLLimit();
}
/**
* Create an instance of {@link XMLCompoundMark }
* @return a compound mark (made out of multiple marks)
*/
public XMLCompoundMark createXMLCompoundMark() {
return new XMLCompoundMark();
}
/**
* Create an instance of {@link XMLMark }
* @return a mark
*/
public XMLMark createXMLMark() {
return new XMLMark();
}
/**
* Create an instance of {@link XMLCorner }
* @return a corner of a compound mark sequence
*/
public XMLCorner createXMLCorner() {
return new XMLCorner();
}
/**
* Create an instance of {@link XMLYacht }
* @return creates a new Yacht.
*/
public XMLYacht createXMLYacht() {
return new XMLYacht();
}
}
@@ -0,0 +1,92 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="Postpone" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;attribute name="Time" use="required" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class XMLRaceStartTime {
@XmlAttribute(name = "Postpone", required = true)
protected String postpone;
@XmlAttribute(name = "Time", required = true)
protected String time;
/**
* Gets the value of the postpone property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getPostpone() {
return postpone;
}
/**
* Sets the value of the postpone property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setPostpone(String value) {
this.postpone = value;
}
/**
* Gets the value of the time property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTime() {
return time;
}
/**
* Sets the value of the time property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTime(String value) {
this.time = value;
}
}
@@ -0,0 +1,84 @@
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.8-b130911.1802
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2017.08.14 at 02:54:32 AM NZST
//
package shared.xml.Race;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType&gt;
* &lt;complexContent&gt;
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
* &lt;attribute name="SourceID" use="required" type="{http://www.w3.org/2001/XMLSchema}int" /&gt;
* &lt;attribute name="Entry" type="{http://www.w3.org/2001/XMLSchema}string" /&gt;
* &lt;/restriction&gt;
* &lt;/complexContent&gt;
* &lt;/complexType&gt;
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public class XMLYacht {
@XmlAttribute(name = "SourceID", required = true)
protected int sourceID;
@XmlAttribute(name = "Entry")
protected String entry;
/**
* Gets the value of the sourceID property.
* @return the id of the yacht
*/
public int getSourceID() {
return sourceID;
}
/**
* Sets the value of the sourceID property.
* @param value sets the source ID of the a yacht that is participating in the race
*/
public void setSourceID(int value) {
this.sourceID = value;
}
/**
* Gets the value of the entry property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getEntry() {
return entry;
}
/**
* Sets the value of the entry property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setEntry(String value) {
this.entry = value;
}
}
@@ -0,0 +1,90 @@
package shared.xml;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.*;
import java.net.URL;
/**
* Created by fwy13 on 13/08/17.
*/
public class XMLUtilities {
public static String classToXML(Object o) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(o.getClass());
Marshaller jaxbMarshaller = context.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
jaxbMarshaller.marshal(o, sw);
return sw.toString();
}
public static Object xmlToClass(File file, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(file);
return xmlToClass(document, schemaURL, c);
}
public static Object xmlToClass(String xml, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("utf-8"))));
return xmlToClass(document, schemaURL, c);
}
public static Object xmlToClass(InputStream i, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(i);
return xmlToClass(document, schemaURL, c);
}
public static Object xmlToClass(Document document, URL schemaURL, Class c) throws ParserConfigurationException, IOException, SAXException, JAXBException {
JAXBContext jc = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = jc.createUnmarshaller();
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(schemaURL);
unmarshaller.setSchema(schema);
return unmarshaller.unmarshal(new DOMSource(document));
}
public static boolean validateXML(String file, URL schemaURL){
try {
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new File(file));
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(schemaURL);
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));
} catch (ParserConfigurationException e) {
return false;
} catch (IOException e) {
return false;
} catch (SAXException e) {
return false;
}
return true;
}
}