All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.evrythng.thng.resource.model.store.EmbeddedLocation Maven / Gradle / Ivy

There is a newer version: 1.33
Show newest version
/*
 * (c) Copyright 2013 EVRYTHNG Ltd London / Zurich
 * www.evrythng.com
 */
package com.evrythng.thng.resource.model.store;

import com.evrythng.commons.annotations.csv.CsvSerializer;
import com.evrythng.thng.resource.model.store.geojson.GeoJsonPoint;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.io.Serializable;
import java.util.Map;

/**
 * Location to be used within a parent model.
 */
@CsvSerializer("toCsvString")
public class EmbeddedLocation implements Locatable, Serializable {

	private static final long serialVersionUID = 3095613094764949496L;
	private String place;
	private Double latitude;
	private Double longitude;
	private GeoJsonPoint position;
	private Map customFields;

	public EmbeddedLocation() {

	}

	public EmbeddedLocation(final String place, final Double latitude, final Double longitude) {

		this.latitude = latitude;
		this.longitude = longitude;
		this.setPosition(new GeoJsonPoint(latitude, longitude));
		this.place = place;
	}

	@Override
	public String getPlace() {

		return place;
	}

	@Override
	public void setPlace(final String place) {

		this.place = place;
	}

	/**
	 * TODO For API backward compatibility. Once compatibility is not needed
	 * anymore, use {@link JsonIgnore}.
	 */
	@Override
	public Double getLatitude() {

		return latitude;
	}

	/**
	 * TODO For API backward compatibility. Once compatibility is not needed
	 * anymore, use {@link JsonIgnore}.
	 */
	@Override
	public void setLatitude(final Double latitude) {

		this.latitude = latitude;
	}

	/**
	 * TODO For API backward compatibility. Once compatibility is not needed
	 * anymore, use {@link JsonIgnore}.
	 */
	@Override
	public Double getLongitude() {

		return longitude;
	}

	/**
	 * TODO For API backward compatibility. Once compatibility is not needed
	 * anymore, use {@link JsonIgnore}.
	 */
	@Override
	public void setLongitude(final Double longitude) {

		this.longitude = longitude;
	}

	@Override
	public GeoJsonPoint getPosition() {

		return position;
	}

	@JsonIgnore
	public boolean hasPosition() {

		return position != null && position.getLatitude() != null && position.getLongitude() != null;
	}

	@Override
	public void setPosition(final GeoJsonPoint position) {

		this.position = position;
	}

	@Override
	public Map getCustomFields() {

		return customFields;
	}

	@Override
	public void setCustomFields(final Map customFields) {

		this.customFields = customFields;
	}

	public static EmbeddedLocation copyFrom(final Locatable source) {

		EmbeddedLocation loc = new EmbeddedLocation();
		LocationHelper.copy(source, loc);
		return loc;
	}

	@Override
	public String toString() {

		return "EmbeddedLocation [place=" + place + ", latitude=" + latitude + ", longitude=" + longitude + ", position=" + position + ", customFields=" + customFields + ", getPlace()=" + getPlace() + ", getLatitude()=" + getLatitude()
				+ ", getLongitude()=" + getLongitude() + ", getPosition()=" + getPosition() + ", getCustomFields()=" + getCustomFields() + "]";
	}

	public String toCsvString() {

		return String.format("(%.4f;%.4f)", getLatitude(), getLongitude());
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy