package uni.projecte.dataLayer.CitationManager.objects;
import edu.ub.bio.biogeolib.CoordConverter;
import edu.ub.bio.biogeolib.CoordinateLatLon;
import edu.ub.bio.biogeolib.CoordinateUTM;
public class Citation {
private long citationId;
private String date;
private double longitude;
private double latitude;
private int filterLevel;
/* UTM data */
private String zonaFus;
private String quadrant;
private String x;
private String y;
/*in case of biological data it'll be the taxonName*/
private String tag;
private boolean checked;
private int position;
private boolean convertUTM=true;
public Citation(long citationId,String tag, String date, double latitude, double longitude,int position){
this.citationId=citationId;
this.latitude=latitude;
this.longitude=longitude;
this.tag=tag;
this.date=date;
this.position=position;
if(convertUTM) {
CoordinateUTM utm = CoordConverter.getInstance().toUTM(new CoordinateLatLon(latitude,longitude));
String utmS=utm.getShortForm();
String[] utmArray=utmS.split("_");
//zonaFus=utmS.substring(0, 3);
//quadrant=utmS.substring(3, 5);
//x=utmS.substring(5,utmS.length()-5);
//y=utmS.substring(utmS.length()-5);
zonaFus=utmArray[0];
quadrant=utmArray[1];
x=utmArray[2];
y=utmArray[3];
}
}
public Citation(long citationId,String tag, String date, double latitude, double longitude,int position,int level){
this(citationId,tag,date,latitude,longitude,position);
this.filterLevel=level;
}
public long getCitationId() {
return citationId;
}
public String getDate() {
return date;
}
public double getLongitude() {
return longitude;
}
public double getLatitude() {
return latitude;
}
public String getTag() {
return tag;
}
public boolean isChecked() {
return checked;
}
public void setCitationId(long citationId) {
this.citationId = citationId;
}
public void setDate(String date) {
this.date = date;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public void setTag(String tag) {
this.tag = tag;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public boolean belongsToUTM(String utm, String x1,String y1) {
if(utm.substring(0, 3).equals(zonaFus)){
if(utm.substring(3, 5).equals(quadrant)){
int prec=x1.length();
if(x1.equals(x.substring(0, prec)) && y1.equals(y.substring(0, prec))) return true;
}
}
return false;
}
public boolean belongsToLatLong(double latitude, int precLat, double longitude, int precLong) {
double latitudeMax=((1/Math.pow(10, precLat-1))+latitude);
double longitudeMax=((1/Math.pow(10, precLong-1))+longitude);
return (latitudeMax> this.latitude && this.latitude >= latitude) && (longitudeMax > this.longitude && this.longitude >= longitude);
}
public int getFilterLevel() {
return filterLevel;
}
public void setFilterLevel(int filterLevel) {
this.filterLevel = filterLevel;
}
public String toString(){
return citationId+":"+tag;
}
}