summaryrefslogblamecommitdiffstats
path: root/src/org/uic/ticket/api/impl/SimpleGeoCoordinate.java
blob: a591e2956bb3ae71ac0e1252995951c5be9925ce (plain) (tree)













































































































































































































                                                                                                                                
/*
 * 
 */
package org.uic.ticket.api.impl;

import org.uic.ticket.api.asn.omv1.GeoCoordinateSystemType;
import org.uic.ticket.api.asn.omv1.GeoUnitType;
import org.uic.ticket.api.asn.omv1.HemisphereLatitudeType;
import org.uic.ticket.api.asn.omv1.HemisphereLongitudeType;
import org.uic.ticket.api.spec.IGeoCoordinate;

// TODO: Auto-generated Javadoc
/**
 * The Class SimpleGeoCoordinate.
 */
public class SimpleGeoCoordinate implements IGeoCoordinate {
	
	/** The unit. */
	protected GeoUnitType unit = GeoUnitType.milliDegree;

	/** The accuracy. */
	protected GeoUnitType accuracy;
	
	/** The system. */
	protected GeoCoordinateSystemType system = GeoCoordinateSystemType.wgs84;
	
	/** The hemispher longiture. */
	protected HemisphereLongitudeType hemispherLongiture = HemisphereLongitudeType.north;
	
	/** The hemisphere latitude. */
	protected HemisphereLatitudeType hemisphereLatitude = HemisphereLatitudeType.east;
	
	/** The longitude. */
	protected Long longitude;
	
	/** The latitude. */
	protected Long latitude;

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getUnit()
	 */
	public GeoUnitType getUnit() {
		return unit;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setUnit(org.uic.ticket.api.asn.om.GeoUnitType)
	 */
	public void setUnit(GeoUnitType unit) {
		this.unit = unit;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getAccuracy()
	 */
	public GeoUnitType getAccuracy() {
		return accuracy;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setAccuracy(org.uic.ticket.api.asn.om.GeoUnitType)
	 */
	public void setAccuracy(GeoUnitType accuracy) {
		this.accuracy = accuracy;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getSystem()
	 */
	public GeoCoordinateSystemType getSystem() {
		return system;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setSystem(org.uic.ticket.api.asn.om.GeoCoordinateSystemType)
	 */
	public void setSystem(GeoCoordinateSystemType system) {
		this.system = system;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getHemispherLongitude()
	 */
	public HemisphereLongitudeType getHemisphereLongitude() {
		return hemispherLongiture;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setHemispherLongitude(org.uic.ticket.api.asn.om.HemisphereLongitudeType)
	 */
	public void setHemisphereLongitude(HemisphereLongitudeType hemispherLongiture) {
		this.hemispherLongiture = hemispherLongiture;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getHemisphereLatitude()
	 */
	public HemisphereLatitudeType getHemisphereLatitude() {
		return hemisphereLatitude;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setHemisphereLatitude(org.uic.ticket.api.asn.om.HemisphereLatitudeType)
	 */
	public void setHemisphereLatitude(HemisphereLatitudeType hemisphereLatitude) {
		this.hemisphereLatitude = hemisphereLatitude;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getLongitude()
	 */
	public Long getLongitude() {
		return 	limitValues(longitude);
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setLongitude(long)
	 */
	public void setLongitude(long longitude) {
		this.longitude = longitude;
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#getLatitude()
	 */
	public Long getLatitude() {
		
		return limitValues(latitude);
	}

	/* (nicht-Javadoc)
	 * @see org.uic.ticket.api.spec.IGeoCoordinate#setLatitude(long)
	 */
	public void setLatitude(long latitude) {
		this.latitude = latitude;
	}	
	
	public long limitValues(long value){
				
		while (value < 0) {
			value = value + getFullCircle();
		}
		
		return value % getFullCircle();
		
	}
	
	public long getFullCircle(){
		if (unit == GeoUnitType.centiDegree) {
			return 100 * 360;
		} else if (unit == GeoUnitType.deciDegree) {
			return 10 * 360;
		} else if (unit == GeoUnitType.milliDegree) {
			return 1000 * 360;
		} else if (unit == GeoUnitType.tenthmilliDegree) {
			return 10000 * 360;
		} else if (unit == GeoUnitType.milliDegree) {
			return 100000 * 360;
		} else {
			return 360;
		}
		
	}
	
	
	/* (nicht-Javadoc)
	 * @see java.lang.Object#clone()
	 */
	public SimpleGeoCoordinate clone(){
		
		SimpleGeoCoordinate clone = new SimpleGeoCoordinate();
		
		clone.setSystem(this.getSystem());
		clone.setAccuracy(this.getAccuracy());
		clone.setHemisphereLatitude(this.getHemisphereLatitude());
		clone.setHemisphereLongitude(this.getHemisphereLongitude());
		clone.setLatitude(this.getLatitude());
		clone.setLongitude(this.getLongitude());
		clone.setUnit(this.getUnit());
		
		return clone;
		
		
	}

	/**
	 * Adds the longitude.
	 *
	 * @param l the longitude
	 */
	public void addLongitude(Long l) {
		long value = this.longitude + longitude;
		this.longitude = limitValues(value);
	}

	/**
	 * Adds the latitude.
	 *
	 * @param latitude the latitude
	 */
	public void addLatitude(Long latitude) {
		long value = this.latitude + latitude;
		this.latitude = limitValues(value);
	}

}