Device location history view feature

merge-requests/86/head^2^2
achala piyarathna 5 years ago committed by Dharmakeerthi Lasantha
parent c9c19308e0
commit bebf47981d

@ -485,7 +485,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
throws DeviceManagementException { throws DeviceManagementException {
DeviceLocation location = null; DeviceLocation location = null;
String latitude = "", longitude = ""; String latitude = "", longitude = "", altitude = "", speed = "", bearing = "", distance = "";
if (properties == null) return null; if (properties == null) return null;
@ -494,10 +494,22 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
if (propertyName == null) continue; if (propertyName == null) continue;
if (propertyName.equals("LATITUDE")) { if (propertyName.equals("LATITUDE")) {
latitude = property.getValue(); latitude = property.getValue();
if (!longitude.isEmpty()) break; }
} else if (propertyName.equals("LONGITUDE")) { if (propertyName.equals("LONGITUDE")) {
longitude = property.getValue(); longitude = property.getValue();
if (!latitude.isEmpty()) break; }
if (propertyName.equals("ALTITUDE")) {
altitude = property.getValue();
}
if (propertyName.equals("SPEED")) {
speed = property.getValue();
}
if (propertyName.equals("BEARING")) {
bearing = property.getValue();
}
if (propertyName.equals("DISTANCE")) {
distance = property.getValue();
} }
} }
@ -505,6 +517,10 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
location = new DeviceLocation(); location = new DeviceLocation();
location.setLatitude(Double.valueOf(latitude)); location.setLatitude(Double.valueOf(latitude));
location.setLongitude(Double.valueOf(longitude)); location.setLongitude(Double.valueOf(longitude));
location.setAltitude(Double.valueOf(altitude));
location.setSpeed(Float.valueOf(speed));
location.setBearing(Float.valueOf(bearing));
location.setDistance(Double.valueOf(distance));
location.setDeviceIdentifier(deviceIdentifier); location.setDeviceIdentifier(deviceIdentifier);
Device savedDevice = AndroidAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier, false); Device savedDevice = AndroidAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier, false);
location.setDeviceId(savedDevice.getId()); location.setDeviceId(savedDevice.getId());

@ -59,6 +59,10 @@ public class EventReceiverServiceImpl implements EventReceiverService {
private static final String LONGITUDE = "longitude"; private static final String LONGITUDE = "longitude";
private static final String LATITUDE = "latitude"; private static final String LATITUDE = "latitude";
private static final String ALTITUDE = "altitude";
private static final String SPEED = "speed";
private static final String DISTANCE = "distance";
private static final String BEARING = "bearing";
private static final String TIME_STAMP = "timeStamp"; private static final String TIME_STAMP = "timeStamp";
private static final String LOCATION_EVENT_TYPE = "location"; private static final String LOCATION_EVENT_TYPE = "location";
@ -100,7 +104,11 @@ public class EventReceiverServiceImpl implements EventReceiverService {
Object[] payload = { Object[] payload = {
jsonObject.get(TIME_STAMP).getAsLong(), jsonObject.get(TIME_STAMP).getAsLong(),
jsonObject.get(LATITUDE).getAsDouble(), jsonObject.get(LATITUDE).getAsDouble(),
jsonObject.get(LONGITUDE).getAsDouble() jsonObject.get(LONGITUDE).getAsDouble(),
jsonObject.get(ALTITUDE).getAsDouble(),
jsonObject.get(SPEED).getAsFloat(),
jsonObject.get(BEARING).getAsFloat(),
jsonObject.get(DISTANCE).getAsDouble()
}; };
try { try {
if (AndroidAPIUtils.getEventPublisherService().publishEvent( if (AndroidAPIUtils.getEventPublisherService().publishEvent(

@ -226,6 +226,22 @@ public class DeviceManagementServiceTests {
property.setName("LONGITUDE"); property.setName("LONGITUDE");
property.setValue("6.9"); property.setValue("6.9");
properties.add(property); properties.add(property);
property = new Device.Property();
property.setName("ALTITUDE");
property.setValue("-59.8373726");
properties.add(property);
property = new Device.Property();
property.setName("SPEED");
property.setValue("0.5123423333");
properties.add(property);
property = new Device.Property();
property.setName("BEARING");
property.setValue("44.0");
properties.add(property);
property = new Device.Property();
property.setName("DISTANCE");
property.setValue("44.0");
properties.add(property);
androidDevice.setProperties(properties); androidDevice.setProperties(properties);
Response response = deviceManagementService.enrollDevice(androidDevice); Response response = deviceManagementService.enrollDevice(androidDevice);

@ -1,5 +1,6 @@
package org.wso2.carbon.mdm.services.android.mocks; package org.wso2.carbon.mdm.services.android.mocks;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
@ -39,4 +40,5 @@ public class DeviceInformationManagerServiceMock implements DeviceInformationMan
public List<DeviceLocation> getDeviceLocations(List<DeviceIdentifier> list) throws DeviceDetailsMgtException { public List<DeviceLocation> getDeviceLocations(List<DeviceIdentifier> list) throws DeviceDetailsMgtException {
return null; return null;
} }
} }

@ -32,6 +32,7 @@ import org.wso2.carbon.device.mgt.common.configuration.mgt.AmbiguousConfiguratio
import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException; import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException;
import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration; import org.wso2.carbon.device.mgt.common.configuration.mgt.DeviceConfiguration;
import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocationHistory;
import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException; import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
import org.wso2.carbon.device.mgt.common.exceptions.DeviceNotFoundException; import org.wso2.carbon.device.mgt.common.exceptions.DeviceNotFoundException;
import org.wso2.carbon.device.mgt.common.exceptions.DeviceTypeNotFoundException; import org.wso2.carbon.device.mgt.common.exceptions.DeviceTypeNotFoundException;
@ -590,6 +591,11 @@ public class DeviceManagementProviderServiceMock implements DeviceManagementProv
return null; return null;
} }
@Override
public List<DeviceLocationHistory> getDeviceLocationInfo(String s, String s1, long l, long l1) throws DeviceManagementException {
return null;
}
@Override @Override
public void notifyPullNotificationSubscriber(DeviceIdentifier deviceIdentifier, Operation operation) public void notifyPullNotificationSubscriber(DeviceIdentifier deviceIdentifier, Operation operation)
throws PullNotificationExecutionFailedException { throws PullNotificationExecutionFailedException {

@ -0,0 +1,66 @@
/*
* Copyright (c) 2019, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved.
*
* Entgra (pvt) Ltd. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.carbon.mdm.services.android.mocks;
import org.wso2.carbon.device.mgt.common.Device;
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
import java.util.List;
public class DeviceInformationManagerServiceMock implements DeviceInformationManager {
@Override
public void addDeviceInfo(DeviceIdentifier deviceIdentifier, DeviceInfo deviceInfo)
throws DeviceDetailsMgtException {
}
@Override
public DeviceInfo getDeviceInfo(DeviceIdentifier deviceIdentifier) throws DeviceDetailsMgtException {
return null;
}
@Override
public List<DeviceInfo> getDevicesInfo(List<DeviceIdentifier> list) throws DeviceDetailsMgtException {
return null;
}
@Override
public void addDeviceLocation(DeviceLocation deviceLocation) throws DeviceDetailsMgtException {
}
@Override
public DeviceLocation getDeviceLocation(DeviceIdentifier deviceIdentifier) throws DeviceDetailsMgtException {
return null;
}
@Override
public List<DeviceLocation> getDeviceLocations(List<DeviceIdentifier> list) throws DeviceDetailsMgtException {
return null;
}
@Override
public void addDeviceLocationHistory(Device device, DeviceLocation deviceLocation) throws DeviceDetailsMgtException {
}
}

@ -323,6 +323,10 @@ public class AndroidDeviceManager implements DeviceManager {
// Updating current object features using newer ones // Updating current object features using newer ones
existingMobileDevice.setLatitude(mobileDevice.getLatitude()); existingMobileDevice.setLatitude(mobileDevice.getLatitude());
existingMobileDevice.setLongitude(mobileDevice.getLongitude()); existingMobileDevice.setLongitude(mobileDevice.getLongitude());
existingMobileDevice.setAltitude(mobileDevice.getAltitude());
existingMobileDevice.setSpeed(mobileDevice.getSpeed());
existingMobileDevice.setBearing(mobileDevice.getBearing());
existingMobileDevice.setDistance(mobileDevice.getDistance());
existingMobileDevice.setDeviceProperties(mobileDevice.getDeviceProperties()); existingMobileDevice.setDeviceProperties(mobileDevice.getDeviceProperties());
try { try {

@ -34,6 +34,10 @@ public class MobileDevice implements Serializable {
private String vendor; private String vendor;
private String latitude; private String latitude;
private String longitude; private String longitude;
private String altitude;
private String speed;
private String bearing;
private String distance;
private String imei; private String imei;
private String imsi; private String imsi;
private String serial; private String serial;
@ -93,6 +97,38 @@ public class MobileDevice implements Serializable {
this.longitude = longitude; this.longitude = longitude;
} }
public String getSpeed() {
return speed;
}
public void setSpeed(String speed) {
this.speed = speed;
}
public String getBearing() {
return bearing;
}
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
public void setBearing(String bearing) {
this.bearing = bearing;
}
public String getAltitude() {
return altitude;
}
public void setAltitude(String altitude) {
this.altitude = altitude;
}
public String getImei() { public String getImei() {
return imei; return imei;
} }

@ -81,6 +81,10 @@ public class MobileDeviceManagementUtil {
private static final String MOBILE_DEVICE_MODEL = "DEVICE_MODEL"; private static final String MOBILE_DEVICE_MODEL = "DEVICE_MODEL";
private static final String MOBILE_DEVICE_LATITUDE = "LATITUDE"; private static final String MOBILE_DEVICE_LATITUDE = "LATITUDE";
private static final String MOBILE_DEVICE_LONGITUDE = "LONGITUDE"; private static final String MOBILE_DEVICE_LONGITUDE = "LONGITUDE";
private static final String MOBILE_DEVICE_ALTITUDE = "ALTITUDE";
private static final String MOBILE_DEVICE_DISTANCE = "DISTANCE";
private static final String MOBILE_DEVICE_SPEED = "SPEED";
private static final String MOBILE_DEVICE_BEARING = "BEARING";
private static final String MOBILE_DEVICE_SERIAL = "SERIAL"; private static final String MOBILE_DEVICE_SERIAL = "SERIAL";
private static final String MOBILE_DEVICE_OS_BUILD_DATE = "OS_BUILD_DATE"; private static final String MOBILE_DEVICE_OS_BUILD_DATE = "OS_BUILD_DATE";
@ -132,6 +136,10 @@ public class MobileDeviceManagementUtil {
mobileDevice.setVendor(getPropertyValue(device, MOBILE_DEVICE_VENDOR)); mobileDevice.setVendor(getPropertyValue(device, MOBILE_DEVICE_VENDOR));
mobileDevice.setLatitude(getPropertyValue(device, MOBILE_DEVICE_LATITUDE)); mobileDevice.setLatitude(getPropertyValue(device, MOBILE_DEVICE_LATITUDE));
mobileDevice.setLongitude(getPropertyValue(device, MOBILE_DEVICE_LONGITUDE)); mobileDevice.setLongitude(getPropertyValue(device, MOBILE_DEVICE_LONGITUDE));
mobileDevice.setAltitude(getPropertyValue(device, MOBILE_DEVICE_ALTITUDE));
mobileDevice.setDistance(getPropertyValue(device, MOBILE_DEVICE_DISTANCE));
mobileDevice.setSpeed(getPropertyValue(device, MOBILE_DEVICE_SPEED));
mobileDevice.setBearing(getPropertyValue(device, MOBILE_DEVICE_BEARING));
mobileDevice.setSerial(getPropertyValue(device, MOBILE_DEVICE_SERIAL)); mobileDevice.setSerial(getPropertyValue(device, MOBILE_DEVICE_SERIAL));
mobileDevice.setOsBuildDate(getPropertyValue(device, MOBILE_DEVICE_OS_BUILD_DATE)); mobileDevice.setOsBuildDate(getPropertyValue(device, MOBILE_DEVICE_OS_BUILD_DATE));
@ -160,11 +168,18 @@ public class MobileDeviceManagementUtil {
propertyList.add(getProperty(MOBILE_DEVICE_OS_VERSION, mobileDevice.getOsVersion())); propertyList.add(getProperty(MOBILE_DEVICE_OS_VERSION, mobileDevice.getOsVersion()));
propertyList.add(getProperty(MOBILE_DEVICE_OS_BUILD_DATE, mobileDevice.getOsBuildDate())); propertyList.add(getProperty(MOBILE_DEVICE_OS_BUILD_DATE, mobileDevice.getOsBuildDate()));
propertyList.add(getProperty(MOBILE_DEVICE_VENDOR, mobileDevice.getVendor())); propertyList.add(getProperty(MOBILE_DEVICE_VENDOR, mobileDevice.getVendor()));
propertyList.add(getProperty(MOBILE_DEVICE_BEARING, mobileDevice.getBearing()));
propertyList.add(getProperty(MOBILE_DEVICE_SPEED, mobileDevice.getSpeed()));
propertyList.add(getProperty(MOBILE_DEVICE_DISTANCE, mobileDevice.getDistance()));
if(mobileDevice.getLatitude() != null) { if(mobileDevice.getLatitude() != null) {
propertyList.add(getProperty(MOBILE_DEVICE_LATITUDE, mobileDevice.getLatitude())); propertyList.add(getProperty(MOBILE_DEVICE_LATITUDE, mobileDevice.getLatitude()));
} }
if(mobileDevice.getLongitude() != null) { if(mobileDevice.getLongitude() != null) {
propertyList.add(getProperty(MOBILE_DEVICE_LONGITUDE, mobileDevice.getLongitude())); propertyList.add(getProperty(MOBILE_DEVICE_LONGITUDE, mobileDevice.getLongitude()));
}
if(mobileDevice.getAltitude() != null) {
propertyList.add(getProperty(MOBILE_DEVICE_ALTITUDE, mobileDevice.getAltitude()));
} }
propertyList.add(getProperty(MOBILE_DEVICE_SERIAL, mobileDevice.getSerial())); propertyList.add(getProperty(MOBILE_DEVICE_SERIAL, mobileDevice.getSerial()));

Loading…
Cancel
Save