20 package org.matsim.lanes;
22 import java.io.BufferedWriter;
23 import java.io.IOException;
26 import jakarta.xml.bind.JAXBContext;
27 import jakarta.xml.bind.JAXBException;
28 import jakarta.xml.bind.Marshaller;
29 import javax.xml.crypto.MarshalException;
31 import org.apache.logging.log4j.LogManager;
32 import org.apache.logging.log4j.Logger;
64 this.laneDefinitions = lanedefs;
71 public void write(String filename) {
77 Marshaller m = jc.createMarshaller();
80 m.marshal(xmlLaneDefinitions, bufout);
82 }
catch (JAXBException | IOException | MarshalException e) {
95 for (
Lane bl : ltla.getLanes().values()) {
97 xmllane.
setId(bl.getId().toString());
99 if ((bl.getToLinkIds() == null && bl.getToLaneIds() != null) ||
100 (bl.getToLinkIds() != null && bl.getToLaneIds() == null)){
104 throw new MarshalException(
"Either at least one toLinkId or (exclusive) one toLaneId must" +
105 "be set for Lane Id " + bl.getId() +
" on link Id " + ltla.getLinkId() +
"! Cannot write according to XML grammar.");
108 if (bl.getToLinkIds() != null){
109 for (
Id<Link> id : bl.getToLinkIds()) {
112 xmllane.
getLeadsTo().getToLink().add(xmlToLink);
115 else if (bl.getToLaneIds() != null){
116 for (
Id<Lane> id : bl.getToLaneIds()) {
119 xmllane.
getLeadsTo().getToLane().add(xmlToLink);
128 lanes.
setNumber(bl.getNumberOfRepresentedLanes());
137 if (bl.getAttributes() != null) {
141 for (Map.Entry<String, Object> objAttribute : bl.getAttributes().getAsMap().entrySet()) {
142 Class<?> clazz = objAttribute.getValue().getClass();
143 String converted = attributesConverter.
convertToString(objAttribute.getValue());
144 if (converted != null) {
146 att.
setName(objAttribute.getKey());
148 att.
setClazz(clazz.getCanonicalName());
154 xmlltla.
getLane().add(xmllane);
void setNumber(Double value)
void setName(String name)
XMLLaneType.XMLLeadsTo getLeadsTo()
SortedMap< Id< Link >, LanesToLinkAssignment > getLanesToLinkAssignments()
List< XMLLaneType > getLane()
final ObjectAttributesConverter attributesConverter
void setRepresentedLanes(XMLLaneType.XMLRepresentedLanes value)
XMLLaneDefinitions convertDataToXml()
void setLinkIdRef(String value)
void setAttributes(XMLLaneType.XMLAttributes attributes)
void setRefId(String value)
XMLLaneType.XMLAttributes getAttributes()
XMLLaneType.XMLLeadsTo createXMLLaneTypeXMLLeadsTo()
void setClazz(String clazz)
void setAlignment(int value)
static BufferedWriter getBufferedWriter(URL url, Charset charset, boolean append)
LanesWriter(Lanes lanedefs)
void setLeadsTo(XMLLaneType.XMLLeadsTo value)
XMLAttributeType createXMLAttributeType()
XMLLaneType createXMLLaneType()
XMLLanesToLinkAssignmentType createXMLLanesToLinkAssignmentType()
XMLIdRefType createXMLIdRefType()
void setValue(String value)
void setMeterFromLinkEnd(Double value)
static String aboutToWrite(String what, String filename)
List< XMLLanesToLinkAssignmentType > getLanesToLinkAssignment()
void setCapacity(XMLLaneType.XMLCapacity value)
void setStartsAt(XMLLaneType.XMLStartsAt value)
XMLLaneDefinitions createXMLLaneDefinitions()
String convertToString(Object o)
XMLLaneType.XMLAttributes createXMLLaneTypeXMLAttributes()
void write(String filename)
void setVehiclesPerHour(Double value)
static final String SCHEMALOCATIONV20