package org.societies.context.location.management.impl;
import org.societies.context.location.management.api.ITag;
import org.societies.context.location.management.api.IUserLocation;
import org.societies.context.location.management.api.IZone;
/*
*
* LOCATION_SYMBOLIC -> (zoneId_X, Zone "name"),(zoneId_Y, Zone "name")
* LOCATION_PUBLIC_TAGS -> (zoneId_X, Zone tag1) ,(zoneId_X, Zone tag2) ,(zoneId_Y, Zone tag3)
* LOCATION_PERSONAL_TAGS -> (zoneId_X, Zone tag1), (zoneId_Y, Zone tag2)
* LOCATION_TYPE -> (zoneId_X, type),(zoneId_y, type)
* LOCATION_ID -> zoneId_X,zoneId_Y
*
*/
public class LMDataEncoding {
String encodeLocationSymbolic;
public static String encodeLocationSymbolic(IUserLocation userLocation){
String symbolicLocationString = "";
for (IZone zone : userLocation.getZones()){
if (!isRootZone(zone)){
symbolicLocationString += "("+zone.getId().getId()+"." + zone.getName()+")";
}
}
return symbolicLocationString;
}
public static String encodeCoordinates(IUserLocation userLocation){
double xCoordinate = round (3, userLocation.getXCoordinate().getCoordinate());
double yCoordinate = round (3, userLocation.getYCoordinate().getCoordinate());
return xCoordinate+","+yCoordinate;
}
private static double round(int floatingPoint, double value){
value = value*Math.pow(10,floatingPoint);
value = Math.round(value);
value = value / (Math.pow(10,floatingPoint));
return value;
}
public static String encodePersonalTags(IUserLocation userLocation){
String str = "";
for (IZone zone : userLocation.getZones()){
if (!isEmpty(zone.getPersonalTag().getTag()) ){
str += "("+zone.getId().getId()+"," + zone.getPersonalTag().getTag()+")";
}
}
return str;
}
public static String encodePublicTags(IUserLocation userLocation){
String str = "";
for (IZone zone : userLocation.getZones()){
for (ITag tag : zone.getTags()){
if (!isEmpty(tag.getTag()) ){
str += "("+zone.getId().getId()+"," + tag.getTag()+")";
}
}
}
return str;
}
public static String encodeZoneType(IUserLocation userLocation){
String str = "";
for (IZone zone : userLocation.getZones()){
str += "("+zone.getId().getId()+"," + zone.getType()+")";
}
return str;
}
public static String encodeZones(IUserLocation userLocation){
String str = "";
for (IZone zone : userLocation.getZones()){
if (!isRootZone(zone)){
str += zone.getId().getId() + ",";
}
}
if (str.endsWith(",")){
str = str.substring(0,str.length()-1);
}
return str;
}
public static String encodeParentZones(IUserLocation userLocation){
String str = "";
for (IZone zone : userLocation.getZones()){
if (isRootZone(zone)){
str += zone.getId().getId() + ",";
}
}
if (str.endsWith(",")){
str = str.substring(0,str.length()-1);
}
return str;
}
private static boolean isRootZone(IZone zone){
if ("root-zone".equalsIgnoreCase(zone.getType())){
return true;
}
return false;
}
private static boolean isEmpty(String value){
if (value != null && value.trim().length() > 0 && !"null".equalsIgnoreCase(value)){
return false;
}
return true;
}
}