|
|
@ -41,7 +41,6 @@ import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
|
|
|
|
import com.google.api.client.json.jackson2.JacksonFactory;
|
|
|
|
import com.google.api.client.json.jackson2.JacksonFactory;
|
|
|
|
import com.google.api.services.sheets.v4.Sheets;
|
|
|
|
import com.google.api.services.sheets.v4.Sheets;
|
|
|
|
import com.google.api.services.sheets.v4.SheetsScopes;
|
|
|
|
import com.google.api.services.sheets.v4.SheetsScopes;
|
|
|
|
import com.google.api.services.sheets.v4.model.AppendValuesResponse;
|
|
|
|
|
|
|
|
import com.google.api.services.sheets.v4.model.ValueRange;
|
|
|
|
import com.google.api.services.sheets.v4.model.ValueRange;
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
import io.entgra.application.mgt.common.ApplicationInstallResponse;
|
|
|
|
import io.entgra.application.mgt.common.ApplicationInstallResponse;
|
|
|
@ -130,8 +129,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
|
|
|
|
|
|
|
|
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
|
|
|
private static final Log log = LogFactory.getLog(DeviceManagementServiceImpl.class);
|
|
|
|
private static final String SPREADSHEET_ID = "1OZCS5NRwwSum9ai3ra4lABtU0UGW-9yLYgZk-aQfxpw";
|
|
|
|
|
|
|
|
private static final String RANGE = "Sheet1!A:B";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Validate group Id and group Id greater than 0 and exist.
|
|
|
|
* Validate group Id and group Id greater than 0 and exist.
|
|
|
@ -457,7 +454,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@DELETE
|
|
|
|
@DELETE
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Path("/type/{deviceType}/id/{deviceId}")
|
|
|
|
@Path("/type/{deviceType}/id/{deviceId}")
|
|
|
@ -466,25 +462,12 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
DeviceManagementProviderService deviceManagementProviderService =
|
|
|
|
DeviceManagementProviderService deviceManagementProviderService =
|
|
|
|
DeviceMgtAPIUtils.getDeviceManagementService();
|
|
|
|
DeviceMgtAPIUtils.getDeviceManagementService();
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
long startTime = System.currentTimeMillis(); // Start measuring response time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType);
|
|
|
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(deviceId, deviceType);
|
|
|
|
Device persistedDevice = deviceManagementProviderService.getDevice(deviceIdentifier, true);
|
|
|
|
Device persistedDevice = deviceManagementProviderService.getDevice(deviceIdentifier, true);
|
|
|
|
if (persistedDevice == null) {
|
|
|
|
if (persistedDevice == null) {
|
|
|
|
return Response.status(Response.Status.NOT_FOUND).build();
|
|
|
|
return Response.status(Response.Status.NOT_FOUND).build();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
boolean response = deviceManagementProviderService.disenrollDevice(deviceIdentifier);
|
|
|
|
boolean response = deviceManagementProviderService.disenrollDevice(deviceIdentifier);
|
|
|
|
|
|
|
|
|
|
|
|
long endTime = System.currentTimeMillis(); // End measuring response time
|
|
|
|
|
|
|
|
long responseTime = endTime - startTime;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
saveResponseTimeToGoogleSheet(responseTime); // Save response time to Google Sheet
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (response) {
|
|
|
|
|
|
|
|
String successMessage = "Device of type '" + deviceType + "' with ID '" + deviceId + "' has been deleted.";
|
|
|
|
|
|
|
|
System.out.println(successMessage); // Print success message
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Response.status(Response.Status.OK).entity(response).build();
|
|
|
|
return Response.status(Response.Status.OK).entity(response).build();
|
|
|
|
} catch (DeviceManagementException e) {
|
|
|
|
} catch (DeviceManagementException e) {
|
|
|
|
String msg = "Error encountered while deleting requested device of type : " + deviceType;
|
|
|
|
String msg = "Error encountered while deleting requested device of type : " + deviceType;
|
|
|
@ -493,41 +476,6 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void saveResponseTimeToGoogleSheet(long responseTime) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Sheets sheetsService = createSheetsService();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Prepare the data to be written
|
|
|
|
|
|
|
|
ValueRange requestBody = new ValueRange().setValues(Collections.singletonList(
|
|
|
|
|
|
|
|
Arrays.asList(System.currentTimeMillis(), responseTime)
|
|
|
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Write the data to the spreadsheet
|
|
|
|
|
|
|
|
AppendValuesResponse appendResponse = sheetsService.spreadsheets().values()
|
|
|
|
|
|
|
|
.append(SPREADSHEET_ID, RANGE, requestBody)
|
|
|
|
|
|
|
|
.setValueInputOption("RAW")
|
|
|
|
|
|
|
|
.execute();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println("Response Time saved to Google Sheet. Updated rows: " + appendResponse.getUpdates().getUpdatedRows());
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
// Handle any exceptions that occur during the process
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Sheets createSheetsService() throws IOException {
|
|
|
|
|
|
|
|
GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("components/device-mgt/org.wso2.carbon.device.mgt.api/src/test/resources/apicall-382608-48aa6a62800d.json"))
|
|
|
|
|
|
|
|
.createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
return new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), credential)
|
|
|
|
|
|
|
|
.setApplicationName("ApiCall")
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
} catch (GeneralSecurityException e) {
|
|
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@POST
|
|
|
|
@POST
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Path("/type/{deviceType}/id/{deviceId}/rename")
|
|
|
|
@Path("/type/{deviceType}/id/{deviceId}/rename")
|
|
|
@ -535,6 +483,9 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
@PathParam("deviceId") String deviceId) {
|
|
|
|
@PathParam("deviceId") String deviceId) {
|
|
|
|
DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService();
|
|
|
|
DeviceManagementProviderService deviceManagementProviderService = DeviceMgtAPIUtils.getDeviceManagementService();
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
|
|
|
|
// Start measuring API call response time
|
|
|
|
|
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
|
|
|
|
|
|
|
|
|
Device persistedDevice = deviceManagementProviderService.getDevice(new DeviceIdentifier
|
|
|
|
Device persistedDevice = deviceManagementProviderService.getDevice(new DeviceIdentifier
|
|
|
|
(deviceId, deviceType), true);
|
|
|
|
(deviceId, deviceType), true);
|
|
|
|
persistedDevice.setName(device.getName());
|
|
|
|
persistedDevice.setName(device.getName());
|
|
|
@ -544,14 +495,53 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
|
|
|
|
persistedDevice);
|
|
|
|
persistedDevice);
|
|
|
|
boolean response = responseOfmodifyEnrollment && responseOfDeviceNameChanged;
|
|
|
|
boolean response = responseOfmodifyEnrollment && responseOfDeviceNameChanged;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// End measuring API call response time
|
|
|
|
|
|
|
|
long endTime = System.currentTimeMillis();
|
|
|
|
|
|
|
|
long responseTime = endTime - startTime;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Save the response time to Google Spreadsheet
|
|
|
|
|
|
|
|
saveResponseTimeToSpreadsheet(responseTime);
|
|
|
|
|
|
|
|
|
|
|
|
return Response.status(Response.Status.CREATED).entity(response).build();
|
|
|
|
return Response.status(Response.Status.CREATED).entity(response).build();
|
|
|
|
} catch (DeviceManagementException e) {
|
|
|
|
} catch (DeviceManagementException e) {
|
|
|
|
String msg = "Error encountered while updating requested device of type : " + deviceType;
|
|
|
|
String msg = "Error encountered while updating requested device of type : " + deviceType;
|
|
|
|
log.error(msg, e);
|
|
|
|
log.error(msg, e);
|
|
|
|
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
|
|
|
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
|
|
|
|
|
|
|
} catch (IOException | GeneralSecurityException e) {
|
|
|
|
|
|
|
|
String msg = "Error encountered while saving response time to spreadsheet";
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void saveResponseTimeToSpreadsheet(long responseTime) throws IOException, GeneralSecurityException {
|
|
|
|
|
|
|
|
// Load credentials from JSON file
|
|
|
|
|
|
|
|
GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("components/device-mgt/org.wso2.carbon.device.mgt.api/src/test/resources/apicall-382608-48aa6a62800d.json"))
|
|
|
|
|
|
|
|
.createScoped(Collections.singleton(SheetsScopes.SPREADSHEETS));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Build Google Sheets service
|
|
|
|
|
|
|
|
Sheets sheetsService = new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),
|
|
|
|
|
|
|
|
JacksonFactory.getDefaultInstance(), credential)
|
|
|
|
|
|
|
|
.setApplicationName("ApiCall")
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Define the spreadsheet ID and range
|
|
|
|
|
|
|
|
String spreadsheetId = "1OZCS5NRwwSum9ai3ra4lABtU0UGW-9yLYgZk-aQfxpw";
|
|
|
|
|
|
|
|
String range = "Sheet1!A:B"; // Assuming column A for timestamps and column B for response times
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Prepare the values to be written
|
|
|
|
|
|
|
|
List<List<Object>> values = Collections.singletonList(Collections.singletonList(responseTime));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Build the value range object
|
|
|
|
|
|
|
|
ValueRange body = new ValueRange().setValues(values);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Write the response time value to the spreadsheet
|
|
|
|
|
|
|
|
sheetsService.spreadsheets().values()
|
|
|
|
|
|
|
|
.append(spreadsheetId, range, body)
|
|
|
|
|
|
|
|
.setValueInputOption("USER_ENTERED")
|
|
|
|
|
|
|
|
.execute();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@GET
|
|
|
|
@GET
|
|
|
|
@Path("/{type}/{id}")
|
|
|
|
@Path("/{type}/{id}")
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|