MATSIM
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.lanes.LanesWriter Class Reference
Inheritance diagram for org.matsim.lanes.LanesWriter:
Inheritance graph
[legend]

Public Member Functions

 LanesWriter (Lanes lanedefs)
 
void write (String filename)
 

Static Public Member Functions

static final void setMarshallerProperties (String schemaLocation, Marshaller m) throws PropertyException
 

Private Member Functions

XMLLaneDefinitions convertDataToXml () throws MarshalException
 

Private Attributes

Lanes laneDefinitions
 
final ObjectAttributesConverter attributesConverter = new ObjectAttributesConverter()
 

Static Private Attributes

static final Logger log = LogManager.getLogger(LanesWriter.class)
 

Detailed Description

Writer for the http://www.matsim.org/files/dtd/laneDefinitions_v2.0.xsd file format.

Author
dgrether

Definition at line 48 of file LanesWriter.java.

Constructor & Destructor Documentation

◆ LanesWriter()

org.matsim.lanes.LanesWriter.LanesWriter ( Lanes  lanedefs)

Writer for the http://www.matsim.org/files/dtd/laneDefinitions_v2.0.xsd file format.

Parameters
lanedefs

Definition at line 62 of file LanesWriter.java.

62  {
63 // log.info("Using LaneDefinitionWriter20...");
64  this.laneDefinitions = lanedefs;
65  }

Member Function Documentation

◆ write()

void org.matsim.lanes.LanesWriter.write ( String  filename)
See also
org.matsim.core.utils.io.MatsimJaxbXmlWriter::write(java.lang.String)

Implements org.matsim.core.api.internal.MatsimWriter.

Definition at line 71 of file LanesWriter.java.

References org.matsim.core.gbl.Gbl.aboutToWrite(), org.matsim.lanes.LanesWriter.convertDataToXml(), org.matsim.core.utils.io.IOUtils.getBufferedWriter(), and org.matsim.lanes.LanesReader.SCHEMALOCATIONV20.

Referenced by org.matsim.lanes.LanesUtils.calculateMissingCapacitiesForLanes20().

71  {
72  log.info( Gbl.aboutToWrite( "lanes", filename ) ) ;
73  JAXBContext jc;
74  try {
75  XMLLaneDefinitions xmlLaneDefinitions = convertDataToXml();
76  jc = JAXBContext.newInstance(org.matsim.jaxb.lanedefinitions20.ObjectFactory.class);
77  Marshaller m = jc.createMarshaller();
78  super.setMarshallerProperties(LanesReader.SCHEMALOCATIONV20, m);
79  BufferedWriter bufout = IOUtils.getBufferedWriter(filename);
80  m.marshal(xmlLaneDefinitions, bufout);
81  bufout.close();
82  } catch (JAXBException | IOException | MarshalException e) {
83  throw new RuntimeException(e);
84  }
85  }
XMLLaneDefinitions convertDataToXml()
static final Logger log
Here is the call graph for this function:

◆ convertDataToXml()

XMLLaneDefinitions org.matsim.lanes.LanesWriter.convertDataToXml ( ) throws MarshalException
private

Definition at line 87 of file LanesWriter.java.

References org.matsim.utils.objectattributes.ObjectAttributesConverter.convertToString(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLAttributeType(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLIdRefType(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLLaneDefinitions(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLLanesToLinkAssignmentType(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLLaneType(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLLaneTypeXMLAttributes(), org.matsim.jaxb.lanedefinitions20.ObjectFactory.createXMLLaneTypeXMLLeadsTo(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.getAttributes(), org.matsim.jaxb.lanedefinitions20.XMLLanesToLinkAssignmentType.getLane(), org.matsim.jaxb.lanedefinitions20.XMLLaneDefinitions.getLanesToLinkAssignment(), org.matsim.lanes.Lanes.getLanesToLinkAssignments(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.getLeadsTo(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setAlignment(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setAttributes(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setCapacity(), org.matsim.jaxb.lanedefinitions20.XMLAttributeType.setClazz(), org.matsim.jaxb.lanedefinitions20.XMLMatsimObjectType.setId(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setLeadsTo(), org.matsim.jaxb.lanedefinitions20.XMLLanesToLinkAssignmentType.setLinkIdRef(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.XMLStartsAt.setMeterFromLinkEnd(), org.matsim.jaxb.lanedefinitions20.XMLAttributeType.setName(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.XMLRepresentedLanes.setNumber(), org.matsim.jaxb.lanedefinitions20.XMLIdRefType.setRefId(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setRepresentedLanes(), org.matsim.jaxb.lanedefinitions20.XMLLaneType.setStartsAt(), org.matsim.jaxb.lanedefinitions20.XMLAttributeType.setValue(), and org.matsim.jaxb.lanedefinitions20.XMLLaneType.XMLCapacity.setVehiclesPerHour().

Referenced by org.matsim.lanes.LanesWriter.write().

87  {
88  ObjectFactory fac = new ObjectFactory();
89  XMLLaneDefinitions xmllaneDefs = fac.createXMLLaneDefinitions();
90 
91  for (LanesToLinkAssignment ltla : this.laneDefinitions.getLanesToLinkAssignments().values()) {
93  xmlltla.setLinkIdRef(ltla.getLinkId().toString());
94 
95  for (Lane bl : ltla.getLanes().values()) {
96  XMLLaneType xmllane = fac.createXMLLaneType();
97  xmllane.setId(bl.getId().toString());
98 
99  if ((bl.getToLinkIds() == null && bl.getToLaneIds() != null) ||
100  (bl.getToLinkIds() != null && bl.getToLaneIds() == null)){
102  }
103  else {
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.");
106  }
107 
108  if (bl.getToLinkIds() != null){
109  for (Id<Link> id : bl.getToLinkIds()) {
110  XMLIdRefType xmlToLink = fac.createXMLIdRefType();
111  xmlToLink.setRefId(id.toString());
112  xmllane.getLeadsTo().getToLink().add(xmlToLink);
113  }
114  }
115  else if (bl.getToLaneIds() != null){
116  for (Id<Lane> id : bl.getToLaneIds()) {
117  XMLIdRefType xmlToLink = fac.createXMLIdRefType();
118  xmlToLink.setRefId(id.toString());
119  xmllane.getLeadsTo().getToLane().add(xmlToLink);
120  }
121  }
122 
124  capacity.setVehiclesPerHour(bl.getCapacityVehiclesPerHour());
125  xmllane.setCapacity(capacity);
126 
128  lanes.setNumber(bl.getNumberOfRepresentedLanes());
129  xmllane.setRepresentedLanes(lanes);
130 
132  startsAt.setMeterFromLinkEnd(bl.getStartsAtMeterFromLinkEnd());
133  xmllane.setStartsAt(startsAt);
134 
135  xmllane.setAlignment(bl.getAlignment());
136 
137  if (bl.getAttributes() != null) {
139 
140  // write attributes
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());
147  att.setValue(converted);
148  att.setClazz(clazz.getCanonicalName());
149  xmllane.getAttributes().getAttributeList().add(att);
150  }
151  }
152  }
153 
154  xmlltla.getLane().add(xmllane);
155  }
156  xmllaneDefs.getLanesToLinkAssignment().add(xmlltla);
157  } //end writing lanesToLinkAssignments
158 
159  return xmllaneDefs;
160  }
SortedMap< Id< Link >, LanesToLinkAssignment > getLanesToLinkAssignments()
final ObjectAttributesConverter attributesConverter
void setRepresentedLanes(XMLLaneType.XMLRepresentedLanes value)
void setAttributes(XMLLaneType.XMLAttributes attributes)
XMLLaneType.XMLAttributes getAttributes()
void setLeadsTo(XMLLaneType.XMLLeadsTo value)
XMLLanesToLinkAssignmentType createXMLLanesToLinkAssignmentType()
List< XMLLanesToLinkAssignmentType > getLanesToLinkAssignment()
void setCapacity(XMLLaneType.XMLCapacity value)
void setStartsAt(XMLLaneType.XMLStartsAt value)
XMLLaneType.XMLAttributes createXMLLaneTypeXMLAttributes()
Here is the call graph for this function:

◆ setMarshallerProperties()

static final void org.matsim.core.utils.io.MatsimJaxbXmlWriter.setMarshallerProperties ( String  schemaLocation,
Marshaller  m 
) throws PropertyException
staticinherited

Definition at line 40 of file MatsimJaxbXmlWriter.java.

References org.matsim.core.utils.io.MatsimXmlWriter.MATSIM_NAMESPACE, and org.matsim.core.utils.io.MatsimJaxbXmlWriter.write().

40  {
41  m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
42  m.setProperty("jaxb.schemaLocation", MatsimXmlWriter.MATSIM_NAMESPACE + " " + schemaLocation);
43  }
Here is the call graph for this function:

Member Data Documentation

◆ log

final Logger org.matsim.lanes.LanesWriter.log = LogManager.getLogger(LanesWriter.class)
staticprivate

Definition at line 50 of file LanesWriter.java.

◆ laneDefinitions

Lanes org.matsim.lanes.LanesWriter.laneDefinitions
private

Definition at line 52 of file LanesWriter.java.

◆ attributesConverter

final ObjectAttributesConverter org.matsim.lanes.LanesWriter.attributesConverter = new ObjectAttributesConverter()
private

Definition at line 54 of file LanesWriter.java.


The documentation for this class was generated from the following file: