Package org.tastefuljava.hiketools.switzerland

Source Code of org.tastefuljava.hiketools.switzerland.XolWriter

package org.tastefuljava.hiketools.switzerland;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import org.tastefuljava.hiketools.geo.TrackPoint;
import org.tastefuljava.hiketools.geo.XMLWriter;

public class XolWriter {
    private static final DateFormat TIME_FORMAT
            = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    private static final DecimalFormat NUMBER_FORMAT
            = new DecimalFormat("0.########");

    public static void writeTrack(TrackPoint points[], File file)
            throws IOException {
        XMLWriter out = new XMLWriter(file);
        try {
            writeTrack(points, out);
        } finally {
            out.close();
        }
    }

    public static void writeTrack(TrackPoint points[], Writer writer) {
        writeTrack(points, new XMLWriter(writer));
    }

    public static void writeTrack(TrackPoint points[], PrintWriter writer) {
        writeTrack(points, new XMLWriter(writer));
    }

    public static void writeTrack(TrackPoint points[], XMLWriter out) {
        out.startTag("overlays");
        out.startTag("overlay");
        out.attribute("version", "1.0");
        writeCenter(points, out);
        out.startTag("shapes");
        writePolyline(points, out);
        out.endTag();
        out.endTag();
        out.endTag();
    }

    private static void writeCenter(TrackPoint points[], XMLWriter out) {
        int sumx = 0;
        int sumy = 0;
        for (TrackPoint pt: points) {
            Mn03Point tp = new Mn03Point(pt);
            sumx += tp.getX();
            sumy += tp.getY();
        }
        out.startTag("center");
        out.attribute("x", Integer.toString(sumx/points.length));
        out.attribute("y", Integer.toString(sumy/points.length));
        out.endTag();
    }

    private static void writePolyline(TrackPoint[] points, XMLWriter out) {
        out.startTag("shape");
        out.attribute("type", "polyline");
        out.attribute("name", "track");
        out.attribute("lineSize", "10");
        out.attribute("lineColor", "#FF0000");
        out.attribute("lineStyle", "solid");
        out.startTag("waypoints");
        for (TrackPoint pt: points) {
            writePoint(new Mn03Point(pt), out);
        }
        out.endTag();
        out.endTag();
    }

    private static void writePoint(Mn03Point pt, XMLWriter out) {
        out.startTag("shape");
        out.attribute("type", "waypoint");
        if (pt.getTime() != null) {
            out.attribute("timestamp", TIME_FORMAT.format(pt.getTime()));
        }
        out.attribute("alt", NUMBER_FORMAT.format(pt.getH()));
        out.startTag("points");
        out.startTag("point");
        out.attribute("x", NUMBER_FORMAT.format(pt.getX()));
        out.attribute("y", NUMBER_FORMAT.format(pt.getY()));
        out.endTag();
        out.endTag();
        out.endTag();
    }
}
TOP

Related Classes of org.tastefuljava.hiketools.switzerland.XolWriter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.