123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package org.insa.graph.io;
-
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.util.Arrays;
-
- import org.insa.graph.Arc;
- import org.insa.graph.Path;
-
- /**
- * Implementation of {@link PathWriter} to write paths in binary format.
- *
- */
- public class BinaryPathWriter extends BinaryWriter implements PathWriter {
-
- /**
- * Create a new BinaryPathWriter that writes to the given output stream.
- *
- * @param dos Output stream to write to.
- */
- public BinaryPathWriter(DataOutputStream dos) {
- super(dos);
- }
-
- @Override
- public void writePath(Path path) throws IOException {
-
- // Write magic number and version.
- dos.writeInt(BinaryPathReader.MAGIC_NUMBER);
- dos.writeInt(BinaryPathReader.VERSION);
-
- // Write map id.
- byte[] bytes = Arrays.copyOf(path.getGraph().getMapId().getBytes("UTF-8"),
- BinaryGraphReader.MAP_ID_FIELD_LENGTH);
- dos.write(bytes);
-
- // Write number of arcs
- dos.writeInt(path.getArcs().size() + 1);
-
- // Write origin / destination.
- dos.writeInt(path.getOrigin().getId());
- dos.writeInt(path.getDestination().getId());
-
- // Write nodes.
- dos.writeInt(path.getOrigin().getId());
- for (Arc arc: path.getArcs()) {
- dos.writeInt(arc.getDestination().getId());
- }
-
- dos.flush();
- dos.close();
- }
-
- }
|