20 package org.matsim.facilities;
31 import java.io.BufferedWriter;
32 import java.io.IOException;
33 import java.io.OutputStream;
34 import java.io.UncheckedIOException;
35 import java.util.ArrayList;
36 import java.util.List;
38 import java.util.SortedSet;
43 class FacilitiesWriterV1
extends MatsimXmlWriter implements MatsimWriter {
45 private static final String DTD =
"http://www.matsim.org/files/dtd/facilities_v1.dtd";
47 private final ActivityFacilities facilities;
49 private final CoordinateTransformation coordinateTransformation;
51 private AttributesXmlWriterDelegate attributesWriter =
new AttributesXmlWriterDelegate();
54 final CoordinateTransformation coordinateTransformation,
55 final ActivityFacilities facilities) {
56 this.coordinateTransformation = coordinateTransformation;
57 this.facilities = facilities;
61 public void write(String filename) {
64 for (ActivityFacility f : FacilitiesUtils.getSortedFacilities(
this.facilities).values()) {
65 this.writeFacility((ActivityFacilityImpl) f);
70 public void write(OutputStream stream) {
73 for (ActivityFacility f : FacilitiesUtils.getSortedFacilities(
this.facilities).values()) {
74 this.writeFacility((ActivityFacilityImpl) f);
79 private void writeInit() {
82 this.startFacilities(this.facilities, this.writer);
85 private void writeFacility(
final ActivityFacilityImpl f) {
87 this.startFacility(f);
88 for (ActivityOption a : f.getActivityOptions().values()) {
89 this.startActivity((ActivityOptionImpl) a);
90 this.writeCapacity((ActivityOptionImpl) a, this.writer);
91 SortedSet<OpeningTime> o_set = a.getOpeningTimes();
92 for (OpeningTime o : o_set) {
93 this.writeOpentime(o, this.writer);
97 if (!f.getAttributes().isEmpty()) {
100 this.attributesWriter.writeAttributes(
"\t\t", this.writer, f.getAttributes(),
false);
102 }
catch (IOException e) {
103 throw new UncheckedIOException(e);
107 private void writeFinish() {
109 this.endFacilities();
112 }
catch (IOException e) {
113 throw new UncheckedIOException(e);
121 private void startFacilities(
final ActivityFacilities facilities,
final BufferedWriter out) {
122 List<Tuple<String, String>> attributes =
new ArrayList<>();
123 if (facilities.getName() != null) {
124 attributes.add(
new Tuple<>(
"name", facilities.getName()));
127 if (!facilities.getAttributes().isEmpty()) {
130 }
catch (IOException e) {
131 throw new UncheckedIOException(e);
134 this.attributesWriter.writeAttributes(
"\t", out, facilities.getAttributes());
138 private void endFacilities() {
146 private void startFacility(
final ActivityFacilityImpl facility) {
147 List<Tuple<String, String>> attributes =
new ArrayList<>();
148 attributes.add(
new Tuple<>(
"id", facility.getId().toString()));
149 if (facility.getLinkId() != null) {
150 attributes.add(
new Tuple<>(
"linkId", facility.getLinkId().toString()));
152 if (facility.getCoord()!=null) {
153 final Coord coord = this.coordinateTransformation.transform(facility.getCoord());
154 attributes.add(
new Tuple<>(
"x", Double.toString(coord.getX())));
155 attributes.add(
new Tuple<>(
"y", Double.toString(coord.getY())));
157 if (facility.getDesc() != null) {
158 attributes.add(
new Tuple<>(
"desc", facility.getDesc()));
163 private void endFacility() {
171 public void startActivity(
final ActivityOptionImpl activity) {
172 List<Tuple<String, String>> attributes =
new ArrayList<>();
173 attributes.add(
new Tuple<>(
"type", activity.getType()));
177 public void endActivity() {
185 private void writeCapacity(
final ActivityOptionImpl activity,
final BufferedWriter out)
throws IOException {
186 if (activity.getCapacity() != Integer.MAX_VALUE) {
187 out.write(
"\t\t\t<capacity");
188 out.write(
" value=\"" + activity.getCapacity() +
"\"");
197 private void writeOpentime(
final OpeningTime opentime,
final BufferedWriter out)
throws IOException {
198 out.write(
"\t\t\t<opentime");
199 out.write(
" day=\"wkday\"");
200 out.write(
" start_time=\"" + Time.writeTime(opentime.getStartTime()) +
"\"");
201 out.write(
" end_time=\"" + Time.writeTime(opentime.getEndTime()) +
"\"");
205 public void putAttributeConverters(Map<Class<?>, AttributeConverter<?>> converters) {
206 this.attributesWriter.putAttributeConverters(converters);
final void writeXmlHead()
final void openOutputStream(OutputStream outputStream)
final void openFile(final String filename)
final void writeStartTag(String tagname, List< Tuple< String, String >> attributes)
final void writeEndTag(String tagname)
final void writeDoctype(String rootTag, String dtdUrl)