mirror of
https://repository.entgra.net/community/device-mgt-plugins.git
synced 2025-09-16 23:42:15 +00:00
adding DeviceInfo operation handler
This commit is contained in:
parent
d82670fa94
commit
67e75ee38a
@ -226,13 +226,17 @@ public class WindowsAPIUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void updateDeviceInfo(DeviceIdentifier deviceId, DeviceInfo deviceInfo)
|
/**
|
||||||
|
* This method is used to update Device Information.
|
||||||
|
* @param deviceId DeviceID to need to update.
|
||||||
|
* @param deviceInfo Device Info to be update/
|
||||||
|
* @throws DeviceDetailsMgtException Error occurs while updating Device Info.
|
||||||
|
*/
|
||||||
|
public static void updateDeviceInfo(DeviceIdentifier deviceId, DeviceInfo deviceInfo)
|
||||||
throws DeviceDetailsMgtException {
|
throws DeviceDetailsMgtException {
|
||||||
|
|
||||||
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
|
||||||
DeviceInformationManager informationManager =
|
DeviceInformationManager informationManager =
|
||||||
(DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
|
(DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
|
||||||
|
|
||||||
informationManager.addDeviceInfo(deviceId, deviceInfo);
|
informationManager.addDeviceInfo(deviceId, deviceInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,6 +24,7 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
|
||||||
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
|
||||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
|
||||||
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
|
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
|
||||||
@ -165,7 +166,7 @@ public class OperationHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* Update status of the ring operation.
|
* Update status of the ring operation.
|
||||||
*
|
*
|
||||||
* @param status Ring status of the device.
|
* @param status Ring status of the device.
|
||||||
@ -193,7 +194,7 @@ public class OperationHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* Update the status of the DataWipe operation.
|
* Update the status of the DataWipe operation.
|
||||||
*
|
*
|
||||||
* @param status Status of the data wipe.
|
* @param status Status of the data wipe.
|
||||||
@ -222,6 +223,23 @@ public class OperationHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void updateDeviceInfoStatus(DeviceIdentifier deviceIdentifier) throws OperationManagementException {
|
||||||
|
List<? extends Operation> pendingDeviceInfoOperations;
|
||||||
|
try {
|
||||||
|
pendingDeviceInfoOperations = WindowsAPIUtils.getPendingOperations(deviceIdentifier);
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
throw new OperationManagementException("Error occurred in getting pending operation.");
|
||||||
|
}
|
||||||
|
for (Operation operation : pendingDeviceInfoOperations) {
|
||||||
|
if (PluginConstants.OperationCodes.DEVICE_INFO.equals(operation.getCode())) {
|
||||||
|
operation.setStatus(Operation.Status.COMPLETED);
|
||||||
|
updateStatus(deviceIdentifier.getId(), pendingDeviceInfoOperations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get pending operations.
|
* Get pending operations.
|
||||||
*
|
*
|
||||||
@ -231,13 +249,20 @@ public class OperationHandler {
|
|||||||
*/
|
*/
|
||||||
public List<? extends Operation> getPendingOperations(SyncmlDocument syncmlDocument)
|
public List<? extends Operation> getPendingOperations(SyncmlDocument syncmlDocument)
|
||||||
throws OperationManagementException, WindowsOperationException {
|
throws OperationManagementException, WindowsOperationException {
|
||||||
|
SyncmlHeader syncmlHeader = syncmlDocument.getHeader();
|
||||||
|
SyncmlBody syncmlBody = syncmlDocument.getBody();
|
||||||
List<? extends Operation> pendingOperations;
|
List<? extends Operation> pendingOperations;
|
||||||
DeviceIdentifier deviceIdentifier = convertToDeviceIdentifierObject(
|
DeviceIdentifier deviceIdentifier = convertToDeviceIdentifierObject(syncmlHeader.getSource().getLocURI());
|
||||||
syncmlDocument.getHeader().getSource().getLocURI());
|
int sessionId = syncmlHeader.getSessionId();
|
||||||
|
int msgId = syncmlHeader.getMsgID();
|
||||||
|
if (!(PluginConstants.SyncML.SYNCML_FIRST_MESSAGE_ID == msgId &&
|
||||||
|
PluginConstants.SyncML.SYNCML_FIRST_SESSION_ID == sessionId)) {
|
||||||
|
if ((syncmlBody.getResults() != null)) {
|
||||||
|
updateDeviceInfo(syncmlDocument);
|
||||||
|
}
|
||||||
|
}
|
||||||
UpdateUriOperations(syncmlDocument);
|
UpdateUriOperations(syncmlDocument);
|
||||||
generateComplianceFeatureStatus(syncmlDocument);
|
generateComplianceFeatureStatus(syncmlDocument);
|
||||||
|
|
||||||
pendingOperations = WindowsAPIUtils.getDeviceManagementService().getPendingOperations(deviceIdentifier);
|
pendingOperations = WindowsAPIUtils.getDeviceManagementService().getPendingOperations(deviceIdentifier);
|
||||||
return pendingOperations;
|
return pendingOperations;
|
||||||
}
|
}
|
||||||
@ -486,4 +511,61 @@ public class OperationHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateDeviceInfo(SyncmlDocument syncmlDocument) throws WindowsOperationException {
|
||||||
|
String softwareVersion;
|
||||||
|
String imsi;
|
||||||
|
String imei;
|
||||||
|
String model;
|
||||||
|
String vendor;
|
||||||
|
String totalRAM;
|
||||||
|
String deviceID = null;
|
||||||
|
String totalStorage;
|
||||||
|
|
||||||
|
List<ItemTag> deviceInformations = syncmlDocument.getBody().getResults().getItem();
|
||||||
|
DeviceInfo deviceInfo = new DeviceInfo();
|
||||||
|
for (ItemTag item : deviceInformations) {
|
||||||
|
String source = item.getSource().getLocURI();
|
||||||
|
if (OperationCode.Info.SOFTWARE_VERSION.getCode().equals(source)) {
|
||||||
|
softwareVersion = item.getData();
|
||||||
|
deviceInfo.setOsVersion(softwareVersion);
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.IMSI.getCode().equals(source)) {
|
||||||
|
imsi = item.getData();
|
||||||
|
deviceInfo.setIMSI(imsi);
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.IMEI.getCode().equals(source)) {
|
||||||
|
imei = item.getData();
|
||||||
|
deviceInfo.setIMEI(imei);
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.DEVICE_MODEL.getCode().equals(source)) {
|
||||||
|
model = item.getData();
|
||||||
|
deviceInfo.setDeviceModel(model);
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.VENDOR.getCode().equals(source)) {
|
||||||
|
vendor = item.getData();
|
||||||
|
deviceInfo.setVendor(vendor);
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.TOTAL_RAM.getCode().equals(source)) {
|
||||||
|
totalRAM = item.getData();
|
||||||
|
deviceInfo.setAvailableRAMMemory(Double.parseDouble(totalRAM));
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.TOTAL_STORAGE.getCode().equals(source)) {
|
||||||
|
totalStorage = item.getData();
|
||||||
|
deviceInfo.setInternalAvailableMemory(Double.parseDouble(totalStorage));
|
||||||
|
}
|
||||||
|
if (OperationCode.Info.DEV_ID.getCode().equals(source)) {
|
||||||
|
deviceID = item.getData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DeviceIdentifier deviceIdentifier = convertToDeviceIdentifierObject(deviceID);
|
||||||
|
try {
|
||||||
|
WindowsAPIUtils.updateDeviceInfo(deviceIdentifier, deviceInfo);
|
||||||
|
updateDeviceInfoStatus(deviceIdentifier);
|
||||||
|
} catch (org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException e) {
|
||||||
|
throw new WindowsOperationException("Error occurred while adding Device info.");
|
||||||
|
} catch (OperationManagementException e) {
|
||||||
|
throw new WindowsOperationException("Error occurred while updating Device info operation status.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -247,10 +247,10 @@ public class OperationReply {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case POLICY:
|
case POLICY:
|
||||||
if (this.syncmlDocument.getBody().getAlert() != null) {
|
if (this.syncmlDocument.getBody().getAlert() != null) {
|
||||||
if ((Constants.INITIAL_ALERT_DATA.equals(this.syncmlDocument.getBody()
|
if ((Constants.INITIAL_ALERT_DATA.equals(this.syncmlDocument.getBody().getAlert()
|
||||||
.getAlert().getData())) ||
|
.getData())) || Constants.INITIAL_WIN10_ALERT_DATA.
|
||||||
Constants.INITIAL_WIN10_ALERT_DATA.equals(this.syncmlDocument.getBody()
|
equals(this.syncmlDocument.getBody()
|
||||||
.getAlert().getData())) {
|
.getAlert().getData())) {
|
||||||
SequenceTag policySequence = new SequenceTag();
|
SequenceTag policySequence = new SequenceTag();
|
||||||
policySequence = buildSequence(operation, policySequence);
|
policySequence = buildSequence(operation, policySequence);
|
||||||
syncmlBody.setSequence(policySequence);
|
syncmlBody.setSequence(policySequence);
|
||||||
@ -322,33 +322,40 @@ public class OperationReply {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PluginConstants.OperationCodes.DEVICE_INFO.equals(operation.getCode())) {
|
if (PluginConstants.OperationCodes.DEVICE_INFO.equals(operation.getCode())) {
|
||||||
HeartBeatDeviceInfo heartBeatDeviceInfo = new HeartBeatDeviceInfo();
|
if (this.syncmlDocument.getBody().getAlert() != null) {
|
||||||
deviceInfoOperations = heartBeatDeviceInfo.getDeviceInfo();
|
if ((Constants.INITIAL_ALERT_DATA.equals(this.syncmlDocument.getBody().getAlert()
|
||||||
for (int x = 0; x > deviceInfoOperations.size(); x++) {
|
.getData())) || Constants.INITIAL_WIN10_ALERT_DATA.
|
||||||
ItemTag deviceInfo = appendGetInfo(operation);
|
equals(this.syncmlDocument.getBody()
|
||||||
getElements.add(deviceInfo);
|
.getAlert().getData())) {
|
||||||
|
HeartBeatDeviceInfo heartBeatDeviceInfo = new HeartBeatDeviceInfo();
|
||||||
|
deviceInfoOperations = heartBeatDeviceInfo.getDeviceInfo();
|
||||||
|
for (Operation infoOperation : deviceInfoOperations) {
|
||||||
|
ItemTag deviceInfo = appendGetInfo(infoOperation);
|
||||||
|
getElements.add(deviceInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!replaceItems.isEmpty()) {
|
||||||
|
replaceElement.setCommandId(Constants.SyncmlMessageCodes.replaceCommandId);
|
||||||
|
replaceElement.setItems(replaceItems);
|
||||||
|
}
|
||||||
|
if (!getElements.isEmpty()) {
|
||||||
|
getElement.setCommandId(Constants.SyncmlMessageCodes.elementCommandId);
|
||||||
|
getElement.setItems(getElements);
|
||||||
|
}
|
||||||
|
if (!addElements.isEmpty()) {
|
||||||
|
atomicTagElement.setCommandId(Constants.SyncmlMessageCodes.atomicCommandId);
|
||||||
|
atomicTagElement.setAdds(addElements);
|
||||||
|
}
|
||||||
|
syncmlBody.setGet(getElement);
|
||||||
|
syncmlBody.setExec(executeElements);
|
||||||
|
syncmlBody.setAtomicTag(atomicTagElement);
|
||||||
|
syncmlBody.setReplace(replaceElement);
|
||||||
}
|
}
|
||||||
if (!replaceItems.isEmpty()) {
|
|
||||||
replaceElement.setCommandId(Constants.SyncmlMessageCodes.replaceCommandId);
|
|
||||||
replaceElement.setItems(replaceItems);
|
|
||||||
}
|
|
||||||
if (!getElements.isEmpty()) {
|
|
||||||
getElement.setCommandId(Constants.SyncmlMessageCodes.elementCommandId);
|
|
||||||
getElement.setItems(getElements);
|
|
||||||
}
|
|
||||||
if (!addElements.isEmpty()) {
|
|
||||||
atomicTagElement.setCommandId(Constants.SyncmlMessageCodes.atomicCommandId);
|
|
||||||
atomicTagElement.setAdds(addElements);
|
|
||||||
}
|
|
||||||
syncmlBody.setGet(getElement);
|
|
||||||
syncmlBody.setExec(executeElements);
|
|
||||||
syncmlBody.setAtomicTag(atomicTagElement);
|
|
||||||
syncmlBody.setReplace(replaceElement);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemTag appendExecInfo(Operation operation) {
|
private ItemTag appendExecInfo(Operation operation) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user