working on ui features

4.x.x
Gathika94 7 years ago
parent 4eb66f4e6b
commit d3eb32b5cc

@ -35,11 +35,7 @@ import org.wso2.carbon.device.mgt.common.DeviceManagementConstants.GeoServices;
import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
import org.wso2.carbon.device.mgt.common.geo.service.Alert; import org.wso2.carbon.device.mgt.common.geo.service.*;
import org.wso2.carbon.device.mgt.common.geo.service.Event;
import org.wso2.carbon.device.mgt.common.geo.service.GeoFence;
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationBasedServiceException;
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationProviderService;
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroupConstants;
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
@ -48,26 +44,15 @@ import org.wso2.carbon.device.mgt.core.geo.GeoGrid;
import org.wso2.carbon.device.mgt.core.geo.GeoRectangle; import org.wso2.carbon.device.mgt.core.geo.GeoRectangle;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService;
import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl;
import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil;
import org.wso2.carbon.device.mgt.jaxrs.service.api.DeviceManagementService;
import org.wso2.carbon.device.mgt.jaxrs.service.api.GeoLocationBasedService; import org.wso2.carbon.device.mgt.jaxrs.service.api.GeoLocationBasedService;
import org.wso2.carbon.device.mgt.jaxrs.service.api.GroupManagementService;
import org.wso2.carbon.device.mgt.jaxrs.util.Constants; import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil; import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtUtil;
import org.wso2.carbon.user.api.UserStoreException; import org.wso2.carbon.user.api.UserStoreException;
import org.wso2.carbon.utils.multitenancy.MultitenantUtils; import org.wso2.carbon.utils.multitenancy.MultitenantUtils;
import javax.ws.rs.Consumes; import javax.ws.rs.*;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -81,6 +66,15 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
private static Log log = LogFactory.getLog(GeoLocationBasedServiceImpl.class); private static Log log = LogFactory.getLog(GeoLocationBasedServiceImpl.class);
private static Event getEventBean(Record record) {
Event eventBean = new Event();
eventBean.setId(record.getId());
eventBean.setTableName(record.getTableName());
eventBean.setTimestamp(record.getTimestamp());
eventBean.setValues(record.getValues());
return eventBean;
}
@Path("stats/{deviceType}/{deviceId}") @Path("stats/{deviceType}/{deviceId}")
@GET @GET
@Consumes("application/json") @Consumes("application/json")
@ -163,7 +157,7 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
Map<Integer, DeviceLocation> locationHashMap = new HashMap<>(); Map<Integer, DeviceLocation> locationHashMap = new HashMap<>();
for (Device device : devices) { for (Device device : devices) {
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(device.getDeviceIdentifier(),device.getType()); DeviceIdentifier deviceIdentifier = new DeviceIdentifier(device.getDeviceIdentifier(), device.getType());
locationHashMap.put(device.getId(), deviceInformationManagerService.getDeviceLocation(deviceIdentifier)); locationHashMap.put(device.getId(), deviceInformationManagerService.getDeviceLocation(deviceIdentifier));
} }
@ -173,8 +167,8 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
log.error(msg, e); log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
} catch (DeviceDetailsMgtException e) { } catch (DeviceDetailsMgtException e) {
String msg = "Exception occurred while retrieving device location."+groupId; String msg = "Exception occurred while retrieving device location." + groupId;
log.error(msg,e); log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build(); return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).build();
} }
@ -191,39 +185,44 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
@QueryParam("minLong") double minLong, @QueryParam("minLong") double minLong,
@QueryParam("maxLong") double maxLong) { @QueryParam("maxLong") double maxLong) {
try {
if (!DeviceManagerUtil.isPublishOperationResponseEnabled()) {
return Response.status(Response.Status.BAD_REQUEST.getStatusCode())
.entity("Operation publishing does not exists").build();
}
} catch (DeviceManagementException e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).entity(e.getMessage()).build();
}
DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService();
DeviceInformationManager deviceInformationManagerService = DeviceMgtAPIUtils.getDeviceInformationManagerService();
GeoGrid geoGrid = new GeoGrid(horizontalDivisions,verticalDivisions,minLat,maxLat,minLong,maxLong);
DeviceManagementProviderService deviceManagementService = DeviceMgtAPIUtils.getDeviceManagementService();
GeoGrid geoGrid = new GeoGrid(horizontalDivisions, verticalDivisions, minLat, maxLat, minLong, maxLong);
try { try {
List<Device> devices =deviceManagementService.getAllDevices(); List<Device> devices = deviceManagementService.getAllDevices();
ArrayList<Device> devicesInGeoGrid =geoGrid.getDevicesInGeoGrid(devices); ArrayList<Device> devicesInGeoGrid = geoGrid.getDevicesInGeoGrid(devices);
List<GeoRectangle> geoRectangles=geoGrid.placeDevicesInGeoRectangles(devicesInGeoGrid); List<GeoRectangle> geoRectangles = geoGrid.placeDevicesInGeoRectangles(devicesInGeoGrid);
Map<Map<String,Double>,Map<String,String>> details = new HashMap<>(); Map<String, Map<String, String>> details = new HashMap<>();
for(GeoRectangle geoRectangle:geoRectangles){ for (GeoRectangle geoRectangle : geoRectangles) {
Map<String,Double> center = geoRectangle.getCenter(); Map<String, String> rectangleDetails = new HashMap<>();
if(geoRectangle.getDeviceCount()==0){ Map<String, Double> rectangleCoordinates = geoRectangle.getCoordinates();
details.put(center,null); String rectangleLat = rectangleCoordinates.get("Lat").toString();
}else if(geoRectangle.getDeviceCount()==1){ String rectangleLong = rectangleCoordinates.get("Long").toString();
Map<String,String> deviceDetails = new HashMap<>(); String minRectangleLat = geoRectangle.getMinLat().toString();
Device device=geoRectangle.getDevices().get(0); String maxRectangleLat = geoRectangle.getMaxLat().toString();
deviceDetails.put("deviceID",device.getDeviceIdentifier()); String minRectangleLong = geoRectangle.getMinLong().toString();
details.put(center,deviceDetails); String maxRectangleLong = geoRectangle.getMaxLong().toString();
}else{ rectangleDetails.put("rectangleLat", rectangleLat);
Map<String,String> deviceCountDetails = new HashMap<>(); rectangleDetails.put("rectangleLong", rectangleLong);
int deviceCount=geoRectangle.getDeviceCount(); rectangleDetails.put("minLat",minRectangleLat);
deviceCountDetails.put("count",Integer.toString(deviceCount)); rectangleDetails.put("maxLat",maxRectangleLat);
details.put(center,deviceCountDetails); rectangleDetails.put("minLong",minRectangleLong);
} rectangleDetails.put("maxLong",maxRectangleLong);
if (geoRectangle.getDeviceCount() == 0) {
rectangleDetails.put("count", "0");
rectangleDetails.put("deviceId", null);
} else if (geoRectangle.getDeviceCount() == 1) {
Device device = geoRectangle.getDevices().get(0);
rectangleDetails.put("count", "1");
rectangleDetails.put("deviceID", device.getDeviceIdentifier());
} else {
int deviceCount = geoRectangle.getDeviceCount();
rectangleDetails.put("count", Integer.toString(deviceCount));
rectangleDetails.put("deviceID", null);
}
details.put(geoRectangle.getId().toString(), rectangleDetails);
} }
return Response.ok().entity(details).build(); return Response.ok().entity(details).build();
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
@ -234,7 +233,6 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
} }
@Path("alerts/{alertType}/{deviceType}/{deviceId}") @Path("alerts/{alertType}/{deviceType}/{deviceId}")
@POST @POST
@Consumes("application/json") @Consumes("application/json")
@ -475,13 +473,4 @@ public class GeoLocationBasedServiceImpl implements GeoLocationBasedService {
} }
return ids; return ids;
} }
private static Event getEventBean(Record record) {
Event eventBean = new Event();
eventBean.setId(record.getId());
eventBean.setTableName(record.getTableName());
eventBean.setTimestamp(record.getTimestamp());
eventBean.setValues(record.getValues());
return eventBean;
}
} }

@ -48,6 +48,7 @@ public class GeoGrid {
double maxRectangleLat; double maxRectangleLat;
double minRectangleLong; double minRectangleLong;
double maxRectangleLong; double maxRectangleLong;
Integer id = 0;
for (int i = 0; i < verticalDivisions; i++) { for (int i = 0; i < verticalDivisions; i++) {
minRectangleLong = this.minLong + i * longIncrement; minRectangleLong = this.minLong + i * longIncrement;
@ -59,7 +60,11 @@ public class GeoGrid {
for (int m = 0; m < horizontalDivisions; m++) { for (int m = 0; m < horizontalDivisions; m++) {
minRectangleLat = this.minLat + m * latIncrement; minRectangleLat = this.minLat + m * latIncrement;
if(m+1==horizontalDivisions){
maxRectangleLat=this.maxLat;
}else {
maxRectangleLat = this.minLat + (m + 1) * latIncrement; maxRectangleLat = this.minLat + (m + 1) * latIncrement;
}
geoRectangles.add(new GeoRectangle(minRectangleLat, maxRectangleLat, minRectangleLong, maxRectangleLong)); geoRectangles.add(new GeoRectangle(minRectangleLat, maxRectangleLat, minRectangleLong, maxRectangleLong));
} }
} }

@ -33,68 +33,93 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class GeoRectangle{ public class GeoRectangle {
private static int count = 0;
private static Log log = LogFactory.getLog(GeoRectangle.class);
DeviceInformationManager deviceInformationManagerService = new DeviceInformationManagerImpl();
private double minLat; private double minLat;
private double maxLat; private double maxLat;
private double minLong; private double minLong;
private double maxLong; private double maxLong;
private ArrayList<Device> devices=new ArrayList<>(); private double centerLat;
private double centerLong;
private double rectangleLat;
DeviceInformationManager deviceInformationManagerService = new DeviceInformationManagerImpl(); private double rectangleLong;
private static Log log = LogFactory.getLog(GeoRectangle.class); private double deviantLatValue = 1000;
private double deviantLongValue = 1000;
public GeoRectangle(double minLat, double maxLat, double minLong, double maxLong){ private int id;
this.minLat=minLat; private ArrayList<Device> devices = new ArrayList<>();
this.maxLat=maxLat;
this.minLong=minLong; public GeoRectangle(double minLat, double maxLat, double minLong, double maxLong) {
this.maxLong=maxLong; this.minLat = minLat;
this.maxLat = maxLat;
this.minLong = minLong;
this.maxLong = maxLong;
this.centerLat = (this.minLat + this.maxLat) / 2;
this.centerLong = (this.minLong + this.maxLong) / 2;
this.rectangleLat = this.centerLat;
this.rectangleLong = this.centerLong;
count++;
this.id = count;
} }
public Map<String, Double> getCenter(){ public Map<String, Double> getCoordinates() {
Map<String,Double> centerCordinates = new HashMap<String,Double>(); Map<String, Double> rectangleCoordinates = new HashMap<String, Double>();
double centerLat = (minLat+maxLat)/2;
double centerLong = (minLong+maxLong)/2; rectangleCoordinates.put("Lat", rectangleLat);
centerCordinates.put("Lat",centerLat); rectangleCoordinates.put("Long", rectangleLong);
centerCordinates.put("Long",centerLong); return rectangleCoordinates;
return centerCordinates;
} }
public boolean isDeviceInGeoRectangle(Device device){ public boolean isDeviceInGeoRectangle(Device device) {
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(device.getDeviceIdentifier(),device.getType()); DeviceIdentifier deviceIdentifier = new DeviceIdentifier(device.getDeviceIdentifier(), device.getType());
try { try {
DeviceLocation location = deviceInformationManagerService.getDeviceLocation(deviceIdentifier); DeviceLocation location = deviceInformationManagerService.getDeviceLocation(deviceIdentifier);
double locationLat = location.getLatitude(); double locationLat = location.getLatitude();
double locationLong = location.getLongitude(); double locationLong = location.getLongitude();
if(locationLat >= minLat && locationLat < maxLat && locationLong >= minLong && locationLong<maxLong){ if (locationLat >= minLat && locationLat < maxLat && locationLong >= minLong && locationLong < maxLong) {
checkLocationDeviants(locationLat, locationLong);
return true; return true;
}else{ } else {
return false; return false;
} }
} catch (DeviceDetailsMgtException e) { } catch (DeviceDetailsMgtException e) {
String msg = "Exception occurred while retrieving device location."+deviceIdentifier; String msg = "Exception occurred while retrieving device location." + deviceIdentifier;
log.error(msg,e); log.error(msg, e);
return false; return false;
} }
} }
public void addDevice(Device device){ private void checkLocationDeviants(double locationLat, double locationLong) {
double latDeviant = Math.abs(centerLat - locationLat);
double longDeviant = Math.abs(centerLong - locationLong);
if (latDeviant <= deviantLatValue) {
deviantLatValue = latDeviant;
rectangleLat = locationLat;
}
if (longDeviant <= deviantLongValue) {
deviantLongValue = longDeviant;
rectangleLong = locationLong;
}
}
public void addDevice(Device device) {
devices.add(device); devices.add(device);
} }
public List<Device> getDevices(){
public List<Device> getDevices() {
return devices; return devices;
} }
public int getDeviceCount(){ public int getDeviceCount() {
return devices.size(); return devices.size();
} }
public double getMinLat() { public Double getMinLat() {
return minLat; return minLat;
} }
@ -102,7 +127,7 @@ public class GeoRectangle{
this.minLat = minLat; this.minLat = minLat;
} }
public double getMaxLat() { public Double getMaxLat() {
return maxLat; return maxLat;
} }
@ -110,7 +135,7 @@ public class GeoRectangle{
this.maxLat = maxLat; this.maxLat = maxLat;
} }
public double getMinLong() { public Double getMinLong() {
return minLong; return minLong;
} }
@ -118,7 +143,7 @@ public class GeoRectangle{
this.minLong = minLong; this.minLong = minLong;
} }
public double getMaxLong() { public Double getMaxLong() {
return maxLong; return maxLong;
} }
@ -126,4 +151,8 @@ public class GeoRectangle{
this.maxLong = maxLong; this.maxLong = maxLong;
} }
public Integer getId() {
return id;
}
} }

@ -105,7 +105,6 @@ function updateAttribution(e) {
} }
}); });
} }
var attributionControl; var attributionControl;
var geoAlertsBar; var geoAlertsBar;
var groupedOverlays; var groupedOverlays;

Loading…
Cancel
Save