package com.lai.geolocation.baidu;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.baidu.location.BDLocation;
import com.lai.geolocation.w3.Coordinates;
import com.lai.geolocation.w3.Position;

public class MessageBuilder {

  BDLocation location;

  MessageBuilder(BDLocation location) {
    this.location = location;
  }

  public JSONArray build() {
    Position result = new Position()
      .setTimestamp(System.currentTimeMillis())
      .setCoords(new Coordinates()
        .setLatitude(location.getLatitude())
        .setLongitude(location.getLongitude())
        .setAccuracy(location.getRadius())
        .setHeading(location.getDirection())
        .setSpeed(location.getSpeed())
        .setAltitude(location.getAltitude())
      );

    JSONObject extra = new JSONObject();
    try {
      extra.put("type", location.getLocType());
      extra.put("addr", location.getAddrStr());
      extra.put("gpsAccuracyStatus", location.getGpsAccuracyStatus());
    } catch (JSONException e) {
      e.printStackTrace();
    }

    JSONArray message = new JSONArray();

    message.put(result.toJSON());
    message.put(extra);

    return message;
  }

}
