package io.opentraffic.engine.data.seralizers; import io.opentraffic.engine.geom.TripLine; import com.vividsolutions.jts.geom.Coordinate; import org.mapdb.Serializer; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.io.Serializable; public class TripLineSerializer implements Serializer<TripLine>, Serializable { private static final long serialVersionUID = 1l; @Override public void serialize(DataOutput out, TripLine item) throws IOException { out.writeLong(item.id); out.writeInt(item.lats.length); for(int i = 0; i < item.lats.length; i++) { out.writeDouble(item.lons[i]); out.writeDouble(item.lats[i]); } out.writeLong(item.segmentId); out.writeInt(item.tripLineIndex); out.writeDouble(item.dist); } @Override public TripLine deserialize(DataInput in, int available) throws IOException { long id = in.readLong(); int geomSize = in.readInt(); Coordinate coords[] = new Coordinate[geomSize]; for(int i = 0; i < geomSize; i++) { coords[i] = new Coordinate(in.readDouble(), in.readDouble()); } long segmentId = in.readLong(); int tripLineIndex = in.readInt(); double dist = in.readDouble(); TripLine item = new TripLine(id, coords, segmentId, tripLineIndex, dist); return item; } @Override public int fixedSize() { return -1; } }