21 package org.matsim.core.network.io;
32 import java.io.BufferedWriter;
33 import java.io.IOException;
38 class NetworkWriterHandlerImplV1
implements NetworkWriterHandler {
39 private final CoordinateTransformation transformation;
41 NetworkWriterHandlerImplV1() {
42 this(
new IdentityTransformation() );
45 NetworkWriterHandlerImplV1(CoordinateTransformation transformation) {
46 this.transformation = transformation;
60 public void startNetwork(
final Network network,
final BufferedWriter out)
throws IOException {
61 out.write(
"<network");
62 if ((network.getName() != null)) {
63 out.write(
" name=\"" + encodeAttributeValue(network.getName()) +
"\"");
69 public void endNetwork(
final BufferedWriter out)
throws IOException {
70 out.write(
"</network>\n");
78 public void startNodes(
final Network network,
final BufferedWriter out)
throws IOException {
79 out.write(
"\t<nodes>\n");
83 public void endNodes(
final BufferedWriter out)
throws IOException {
84 out.write(
"\t</nodes>\n\n");
92 public void startLinks(
final Network network,
final BufferedWriter out)
throws IOException {
93 out.write(
"\t<links");
94 if (network.getCapacityPeriod() != Integer.MIN_VALUE) {
95 out.write(
" capperiod=\"" + Time.writeTime(network.getCapacityPeriod()) +
"\"");
98 out.write(
" effectivecellsize=\"" + network.getEffectiveCellSize() +
"\"");
99 out.write(
" effectivelanewidth=\"" + network.getEffectiveLaneWidth() +
"\"");
105 public void endLinks(
final BufferedWriter out)
throws IOException {
106 out.write(
"\t</links>\n\n");
114 public void startNode(
final Node node,
final BufferedWriter out)
throws IOException {
115 out.write(
"\t\t<node");
116 out.write(
" id=\"" + encodeAttributeValue(node.getId().toString()) +
"\"");
117 final Coord coord = transformation.transform( node.getCoord() );
118 out.write(
" x=\"" + coord.getX() +
"\"");
119 out.write(
" y=\"" + coord.getY() +
"\"");
120 if( coord.hasZ() ) out.write(
" z=\"" + coord.getZ() +
"\"");
121 if (NetworkUtils.getType( node ) != null) {
122 out.write(
" type=\"" + encodeAttributeValue(NetworkUtils.getType( node )) +
"\"");
124 if (NetworkUtils.getOrigId( node ) != null) {
125 out.write(
" origid=\"" + encodeAttributeValue(NetworkUtils.getOrigId( node )) +
"\"");
131 public void endNode(
final BufferedWriter out)
throws IOException {
138 private Set<String> lastSet = null;
139 private String lastModes = null;
142 public void startLink(
final Link link,
final BufferedWriter out)
throws IOException {
143 out.write(
"\t\t<link");
144 out.write(
" id=\"" + encodeAttributeValue(link.getId().toString()) +
"\"");
145 out.write(
" from=\"" + encodeAttributeValue(link.getFromNode().getId().toString()) +
"\"");
146 out.write(
" to=\"" + encodeAttributeValue(link.getToNode().getId().toString()) +
"\"");
147 out.write(
" length=\"" + link.getLength() +
"\"");
148 out.write(
" freespeed=\"" + link.getFreespeed() +
"\"");
149 out.write(
" capacity=\"" + link.getCapacity() +
"\"");
150 out.write(
" permlanes=\"" + link.getNumberOfLanes() +
"\"");
151 out.write(
" oneway=\"1\"");
153 Set<String> modes = link.getAllowedModes();
155 if (modes != this.lastSet) {
156 StringBuilder buffer =
new StringBuilder();
158 for (String mode : modes) {
165 this.lastModes = encodeAttributeValue(buffer.toString());
166 this.lastSet = modes;
168 out.write(
" modes=\"" + this.lastModes +
"\"");
172 if (NetworkUtils.getOrigId( li ) != null) {
173 out.write(
" origid=\"" + encodeAttributeValue(NetworkUtils.getOrigId(li)) +
"\"");
175 if (NetworkUtils.getType(li) != null) {
176 out.write(
" type=\"" + encodeAttributeValue(NetworkUtils.getType(li)) +
"\"");
182 public void endLink(
final BufferedWriter out)
throws IOException {
190 public void writeSeparator(
final BufferedWriter out)
throws IOException {
191 out.write(
"<!-- =================================================" +
192 "===================== -->\n\n");
static String encodeAttributeValue(final String attributeValue)