mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
add device type versioning APIs
This commit is contained in:
parent
9f7b05a502
commit
13960f77c9
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.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.device.mgt.jaxrs.beans;
|
||||||
|
|
||||||
|
public class DeviceTypeVersionWrapper {
|
||||||
|
|
||||||
|
String versionName;
|
||||||
|
String versionStatus;
|
||||||
|
|
||||||
|
public String getVersionName() {
|
||||||
|
return versionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionName(String versionName) {
|
||||||
|
this.versionName = versionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersionStatus() {
|
||||||
|
return versionStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionStatus(String versionStatus) {
|
||||||
|
this.versionStatus = versionStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -51,11 +51,13 @@ import org.wso2.carbon.apimgt.annotations.api.Scopes;
|
|||||||
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.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeList;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeVersionWrapper;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
import org.wso2.carbon.device.mgt.jaxrs.util.Constants;
|
||||||
|
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.PUT;
|
import javax.ws.rs.PUT;
|
||||||
@ -370,4 +372,213 @@ public interface DeviceTypeManagementAdminService {
|
|||||||
PlatformConfiguration config);
|
PlatformConfiguration config);
|
||||||
|
|
||||||
|
|
||||||
|
@Path("/versions")
|
||||||
|
@POST
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "POST",
|
||||||
|
value = "Add Device Type Version",
|
||||||
|
notes = "Add a new device type version.",
|
||||||
|
tags = "Device Type Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin:device-type")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(code = 200, message = "OK. \n Successfully updated the device type version.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body")
|
||||||
|
}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 304,
|
||||||
|
message = "Not Modified. Empty body because the client already has the latest version of the " +
|
||||||
|
"requested resource.\n"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 401,
|
||||||
|
message = "Unauthorized.\n The unauthorized access to the requested resource.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 404,
|
||||||
|
message = "Not Found.\n The specified device does not exist",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 406,
|
||||||
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while fetching the device list.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response addDeviceTypeVersion(
|
||||||
|
@ApiParam(
|
||||||
|
name = "deviceTypeName",
|
||||||
|
value = "Device type name.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("deviceTypeName")
|
||||||
|
String deviceTypeName,
|
||||||
|
@ApiParam(
|
||||||
|
name = "deviceTypeVersion",
|
||||||
|
value = "The device type version details.",
|
||||||
|
required = true) DeviceTypeVersionWrapper deviceTypeVersion);
|
||||||
|
|
||||||
|
@Path("/{deviceTypeName}/versions")
|
||||||
|
@GET
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "GET",
|
||||||
|
value = "Get Device Type Version",
|
||||||
|
notes = "Get a new device type version.",
|
||||||
|
tags = "Device Type Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin:device-type")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(code = 200, message = "OK. \n Successfully fetched the device type version.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body")
|
||||||
|
}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 304,
|
||||||
|
message = "Not Modified. Empty body because the client already has the latest version of the " +
|
||||||
|
"requested resource.\n"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 401,
|
||||||
|
message = "Unauthorized.\n The unauthorized access to the requested resource.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 404,
|
||||||
|
message = "Not Found.\n The specified device does not exist",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 406,
|
||||||
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while fetching the device list.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response getDeviceTypeVersion(
|
||||||
|
@ApiParam(
|
||||||
|
name = "deviceTypeName",
|
||||||
|
value = "Device type name.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("deviceTypeName")
|
||||||
|
String deviceTypeName);
|
||||||
|
|
||||||
|
|
||||||
|
@Path("{deviceTypeName}/versions")
|
||||||
|
@PUT
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "PUT",
|
||||||
|
value = "Update Device Type Version",
|
||||||
|
notes = "Update a new device type version.",
|
||||||
|
tags = "Device Type Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin:device-type")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(code = 200, message = "OK. \n Successfully updated the device type version.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body")
|
||||||
|
}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 304,
|
||||||
|
message = "Not Modified. Empty body because the client already has the latest version of the " +
|
||||||
|
"requested resource.\n"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 401,
|
||||||
|
message = "Unauthorized.\n The unauthorized access to the requested resource.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 404,
|
||||||
|
message = "Not Found.\n The specified device does not exist",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 406,
|
||||||
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while fetching the device list.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response updateDeviceTypeVersion(
|
||||||
|
@ApiParam(
|
||||||
|
name = "deviceTypeName",
|
||||||
|
value = "Device type name.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("deviceTypeName")
|
||||||
|
String deviceTypeName,
|
||||||
|
@ApiParam(
|
||||||
|
name = "deviceTypeVersion",
|
||||||
|
value = "The device type version details.",
|
||||||
|
required = true) DeviceTypeVersionWrapper deviceTypeVersion);
|
||||||
|
|
||||||
|
|
||||||
|
@Path("{deviceTypeName}/versions/{version}")
|
||||||
|
@DELETE
|
||||||
|
@ApiOperation(
|
||||||
|
produces = MediaType.APPLICATION_JSON,
|
||||||
|
httpMethod = "DELETE",
|
||||||
|
value = "Move Device Type Version to removed state",
|
||||||
|
notes = "Move Device Type Version to removed state.",
|
||||||
|
tags = "Device Type Management Administrative Service",
|
||||||
|
extensions = {
|
||||||
|
@Extension(properties = {
|
||||||
|
@ExtensionProperty(name = Constants.SCOPE, value = "perm:admin:device-type")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(code = 200, message = "OK. \n Successfully moved the device type version to removed.",
|
||||||
|
responseHeaders = {
|
||||||
|
@ResponseHeader(
|
||||||
|
name = "Content-Type",
|
||||||
|
description = "The content type of the body")
|
||||||
|
}),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 304,
|
||||||
|
message = "Not Modified. Empty body because the client already has the latest version of the " +
|
||||||
|
"requested resource.\n"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 401,
|
||||||
|
message = "Unauthorized.\n The unauthorized access to the requested resource.",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 404,
|
||||||
|
message = "Not Found.\n The specified device does not exist",
|
||||||
|
response = ErrorResponse.class),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 406,
|
||||||
|
message = "Not Acceptable.\n The requested media type is not supported"),
|
||||||
|
@ApiResponse(
|
||||||
|
code = 500,
|
||||||
|
message = "Internal Server Error. \n Server error occurred while fetching the device list.",
|
||||||
|
response = ErrorResponse.class)
|
||||||
|
})
|
||||||
|
Response deleteDeviceTypeVersion(@ApiParam(
|
||||||
|
name = "deviceTypeName",
|
||||||
|
value = "Device type name.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("deviceTypeName") String deviceTypeName,
|
||||||
|
@ApiParam(
|
||||||
|
name = "version",
|
||||||
|
value = "Device type version.",
|
||||||
|
required = true)
|
||||||
|
@PathParam("version")String version);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,11 +42,14 @@ import org.wso2.carbon.device.mgt.common.exceptions.DeviceManagementException;
|
|||||||
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.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
|
import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceTypeVersionWrapper;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceTypeManagementAdminService;
|
import org.wso2.carbon.device.mgt.jaxrs.service.api.admin.DeviceTypeManagementAdminService;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
import org.wso2.carbon.device.mgt.jaxrs.util.DeviceMgtAPIUtils;
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.DELETE;
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.POST;
|
import javax.ws.rs.POST;
|
||||||
import javax.ws.rs.PUT;
|
import javax.ws.rs.PUT;
|
||||||
@ -179,4 +182,137 @@ public class DeviceTypeManagementAdminServiceImpl implements DeviceTypeManagemen
|
|||||||
}
|
}
|
||||||
return Response.status(isSaved ? Response.Status.OK : Response.Status.BAD_REQUEST).build();
|
return Response.status(isSaved ? Response.Status.OK : Response.Status.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Path("{deviceTypeName}/versions")
|
||||||
|
@POST
|
||||||
|
public Response addDeviceTypeVersion(@PathParam("deviceTypeName") String deviceTypeName,
|
||||||
|
DeviceTypeVersionWrapper versionWrapper) {
|
||||||
|
if (versionWrapper != null && deviceTypeName != null && !deviceTypeName.isEmpty()
|
||||||
|
&& versionWrapper.getVersionName() != null && !versionWrapper.getVersionName().isEmpty()) {
|
||||||
|
try {
|
||||||
|
// Handle device type availability in current tenant.
|
||||||
|
DeviceTypeVersion deviceTypeVersion = DeviceMgtAPIUtils.getDeviceManagementService()
|
||||||
|
.getDeviceTypeVersion(deviceTypeName, versionWrapper.getVersionName());
|
||||||
|
if (deviceTypeVersion != null) {
|
||||||
|
String msg = "Device type version already available, " + deviceTypeName;
|
||||||
|
return Response.status(Response.Status.CONFLICT).entity(msg).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle device type availability in current tenant.
|
||||||
|
DeviceType deviceType = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceType(deviceTypeName);
|
||||||
|
if (deviceType != null) {
|
||||||
|
boolean result = DeviceMgtAPIUtils.getDeviceManagementService()
|
||||||
|
.addDeviceTypeVersion(DeviceMgtAPIUtils.convertDeviceTypeVersionWrapper(deviceTypeName,
|
||||||
|
deviceType.getId(), versionWrapper));
|
||||||
|
if (result) {
|
||||||
|
return Response.serverError().entity("Could not add the version").build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.OK).build();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String msg = "Device type is not available " + versionWrapper.getVersionName();
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while adding a device type version.";
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(msg).build();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Path("/{deviceTypeName}/versions")
|
||||||
|
@Override
|
||||||
|
public Response getDeviceTypeVersion(@PathParam("deviceTypeName") String deviceTypeName) {
|
||||||
|
try {
|
||||||
|
List<DeviceTypeVersion> deviceTypes = DeviceMgtAPIUtils.getDeviceManagementService()
|
||||||
|
.getDeviceTypeVersions(deviceTypeName);
|
||||||
|
return Response.status(Response.Status.OK).entity(deviceTypes).build();
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while getting device type version for device type: " + deviceTypeName;
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(msg).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PUT
|
||||||
|
@Override
|
||||||
|
@Path("{deviceTypeName}/versions")
|
||||||
|
public Response updateDeviceTypeVersion(@PathParam("deviceTypeName") String deviceTypeName,
|
||||||
|
DeviceTypeVersionWrapper deviceTypeVersion) {
|
||||||
|
if (deviceTypeVersion != null && deviceTypeVersion.getVersionName() == null || deviceTypeVersion
|
||||||
|
.getVersionName().isEmpty()) {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity("Device type version cannot be empty.").build();
|
||||||
|
} else if (deviceTypeName == null || deviceTypeName.isEmpty()) {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity("Device type name cannot be empty.").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
boolean isAuthorized = DeviceMgtAPIUtils.getDeviceManagementService()
|
||||||
|
.isDeviceTypeVersionChangeAuthorized(deviceTypeName, deviceTypeVersion.getVersionName());
|
||||||
|
if (!isAuthorized) {
|
||||||
|
return Response.status(Response.Status.UNAUTHORIZED).entity("Unauthorized to modify version.")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceType deviceType = DeviceMgtAPIUtils.getDeviceManagementService().getDeviceType(deviceTypeName);
|
||||||
|
if (deviceType != null) {
|
||||||
|
boolean result = DeviceMgtAPIUtils.getDeviceManagementService().updateDeviceTypeVersion(DeviceMgtAPIUtils
|
||||||
|
.convertDeviceTypeVersionWrapper(deviceTypeName, deviceType.getId(), deviceTypeVersion));
|
||||||
|
if (result) {
|
||||||
|
return Response.serverError().entity("Could not update the version").build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.OK).build();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String msg = "Device type is not available " + deviceTypeName;
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while updating device type: " + deviceTypeName ;
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(msg).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Override
|
||||||
|
@Path("{deviceTypeName}/versions/{version}")
|
||||||
|
public Response deleteDeviceTypeVersion(@PathParam("deviceTypeName") String deviceTypeName,
|
||||||
|
@PathParam("version") String version) {
|
||||||
|
if (version == null || version.isEmpty()) {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity("Device type version cannot be empty.").build();
|
||||||
|
} else if (deviceTypeName == null || deviceTypeName.isEmpty()) {
|
||||||
|
return Response.status(Response.Status.BAD_REQUEST).entity("Device type name cannot be empty.").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceTypeVersion deviceTypeVersion = new DeviceTypeVersion();
|
||||||
|
deviceTypeVersion.setDeviceTypeName(deviceTypeName);
|
||||||
|
deviceTypeVersion.setVersionName(version);
|
||||||
|
deviceTypeVersion.setVersionStatus("REMOVED");
|
||||||
|
try {
|
||||||
|
boolean isAuthorized = DeviceMgtAPIUtils.getDeviceManagementService().isDeviceTypeVersionChangeAuthorized
|
||||||
|
(deviceTypeVersion.getDeviceTypeName(), deviceTypeVersion.getVersionName());
|
||||||
|
if (!isAuthorized) {
|
||||||
|
return Response.status(Response.Status.UNAUTHORIZED).entity("Unauthorized to modify version.")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
boolean result = DeviceMgtAPIUtils.getDeviceManagementService().updateDeviceTypeVersion(deviceTypeVersion);
|
||||||
|
if (result) {
|
||||||
|
return Response.serverError().entity("Could not delete the version").build();
|
||||||
|
} else {
|
||||||
|
return Response.status(Response.Status.OK).build();
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
String msg = "Error occurred while updating device type: " + deviceTypeVersion.getDeviceTypeId() ;
|
||||||
|
log.error(msg, e);
|
||||||
|
return Response.serverError().entity(msg).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,10 +49,12 @@ import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagement
|
|||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeGeneratorService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceTypeGeneratorService;
|
||||||
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
|
||||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
import org.wso2.carbon.device.mgt.core.privacy.PrivacyComplianceProvider;
|
import org.wso2.carbon.device.mgt.core.privacy.PrivacyComplianceProvider;
|
||||||
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
import org.wso2.carbon.device.mgt.core.search.mgt.SearchManagerService;
|
||||||
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.jaxrs.beans.DeviceTypeVersionWrapper;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.ErrorResponse;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.beans.analytics.EventAttributeList;
|
import org.wso2.carbon.device.mgt.jaxrs.beans.analytics.EventAttributeList;
|
||||||
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.InputValidationException;
|
import org.wso2.carbon.device.mgt.jaxrs.service.impl.util.InputValidationException;
|
||||||
@ -717,4 +719,14 @@ public class DeviceMgtAPIUtils {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static DeviceTypeVersion convertDeviceTypeVersionWrapper(String deviceTypeName, int deviceTypeId,
|
||||||
|
DeviceTypeVersionWrapper deviceTypeVersion) {
|
||||||
|
DeviceTypeVersion typeVersion = new DeviceTypeVersion();
|
||||||
|
typeVersion.setDeviceTypeId(deviceTypeId);
|
||||||
|
typeVersion.setDeviceTypeName(deviceTypeName);
|
||||||
|
typeVersion.setVersionName(deviceTypeVersion.getVersionName());
|
||||||
|
typeVersion.setVersionStatus(deviceTypeVersion.getVersionStatus());
|
||||||
|
return typeVersion;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import org.wso2.carbon.device.mgt.common.general.GeneralConfig;
|
|||||||
import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
||||||
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composite interface that acts as the SPI exposing all device management as well as application management
|
* Composite interface that acts as the SPI exposing all device management as well as application management
|
||||||
@ -56,4 +57,6 @@ public interface DeviceManagementService {
|
|||||||
|
|
||||||
GeneralConfig getGeneralConfig();
|
GeneralConfig getGeneralConfig();
|
||||||
|
|
||||||
|
DeviceTypePlatformDetails getDeviceTypePlatformDetails();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.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.device.mgt.common.type.mgt;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlType;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
@XmlType(name = "DeviceTypePlatformDetails", propOrder = {
|
||||||
|
"deviceTypePlatformVersion"
|
||||||
|
})
|
||||||
|
public class DeviceTypePlatformDetails {
|
||||||
|
|
||||||
|
@XmlElement(name = "DeviceTypePlatformVersion")
|
||||||
|
private List<DeviceTypePlatformVersion> deviceTypePlatformVersion;
|
||||||
|
|
||||||
|
public List<DeviceTypePlatformVersion> getDeviceTypePlatformVersion() {
|
||||||
|
return deviceTypePlatformVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypePlatformVersion(List<DeviceTypePlatformVersion> deviceTypePlatformVersion) {
|
||||||
|
this.deviceTypePlatformVersion = deviceTypePlatformVersion;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.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.device.mgt.common.type.mgt;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlType;
|
||||||
|
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
@XmlType(name = "DeviceTypePlatformVersion", propOrder = {
|
||||||
|
"versionsName"
|
||||||
|
})
|
||||||
|
public class DeviceTypePlatformVersion {
|
||||||
|
|
||||||
|
@XmlElement(name = "VersionName", required = true)
|
||||||
|
private String versionsName;
|
||||||
|
|
||||||
|
public String getVersionsName() {
|
||||||
|
return versionsName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionsName(String versionsName) {
|
||||||
|
this.versionsName = versionsName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -18,6 +18,7 @@
|
|||||||
package org.wso2.carbon.device.mgt.core.dao;
|
package org.wso2.carbon.device.mgt.core.dao;
|
||||||
|
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -63,6 +64,18 @@ public interface DeviceTypeDAO {
|
|||||||
*/
|
*/
|
||||||
List<String> getSharedDeviceTypes() throws DeviceManagementDAOException;
|
List<String> getSharedDeviceTypes() throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the private device types in the provided tenant matched the device type and version provided.
|
||||||
|
* If so, this is a device type version created by the tenant provided, hence modifiable.
|
||||||
|
* @param deviceTypeID device type ID of interest
|
||||||
|
* @param versionName name of the device type version ID of interest
|
||||||
|
* @param tenantId tenant ID of interest
|
||||||
|
* @return if modifiable
|
||||||
|
* @throws DeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
boolean isDeviceTypeVersionModifiable(int deviceTypeID, String versionName, int tenantId)
|
||||||
|
throws DeviceManagementDAOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param id retrieve the device type with its id.
|
* @param id retrieve the device type with its id.
|
||||||
* @return the device type associated with the id.
|
* @return the device type associated with the id.
|
||||||
@ -87,4 +100,32 @@ public interface DeviceTypeDAO {
|
|||||||
*/
|
*/
|
||||||
void removeDeviceType(String name, int tenantId) throws DeviceManagementDAOException;
|
void removeDeviceType(String name, int tenantId) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a set of device type versions to the database
|
||||||
|
* @param deviceTypeVersion device type version details
|
||||||
|
* @return success or failure
|
||||||
|
* @throws DeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
boolean addDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get device type details
|
||||||
|
* @param deviceTypeId device type id
|
||||||
|
* @param typeName device type name
|
||||||
|
* @return list of versions of device types
|
||||||
|
* @throws DeviceManagementDAOException
|
||||||
|
*/
|
||||||
|
List<DeviceTypeVersion> getDeviceTypeVersions(int deviceTypeId, String typeName)
|
||||||
|
throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update device type version
|
||||||
|
* @param deviceTypeVersion device type version details
|
||||||
|
* @return update status
|
||||||
|
* @throws DeviceManagementException
|
||||||
|
*/
|
||||||
|
boolean updateDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementDAOException;
|
||||||
|
|
||||||
|
DeviceTypeVersion getDeviceTypeVersion(int deviceTypeId, String version)
|
||||||
|
throws DeviceManagementDAOException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,14 @@ import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
|
|||||||
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
import org.wso2.carbon.device.mgt.core.dao.DeviceTypeDAO;
|
||||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
|
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@ -187,6 +194,34 @@ public class DeviceTypeDAOImpl implements DeviceTypeDAO {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDeviceTypeVersionModifiable(int deviceTypeID, String versionName, int tenantId) throws
|
||||||
|
DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String sql =
|
||||||
|
"SELECT dt.ID as DEVICE_TYPE_IDENTIFIER, dt.NAME as DEVICE_TYPE_NAME " +
|
||||||
|
"FROM DM_DEVICE_TYPE_PLATFORM dv, DM_DEVICE_TYPE dt " +
|
||||||
|
"WHERE dt.ID = dv.DEVICE_TYPE_ID AND dv.DEVICE_TYPE_ID = ? AND dv.VERSION_NAME = ?" +
|
||||||
|
" AND dt.PROVIDER_TENANT_ID = ? AND dt.SHARED_WITH_ALL_TENANTS = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, deviceTypeID);
|
||||||
|
stmt.setString(2, versionName);
|
||||||
|
stmt.setInt(3, tenantId);
|
||||||
|
stmt.setBoolean(4, false);
|
||||||
|
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
return rs.next();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while fetching the registered device types", e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeviceType getDeviceType(int id) throws DeviceManagementDAOException {
|
public DeviceType getDeviceType(int id) throws DeviceManagementDAOException {
|
||||||
Connection conn;
|
Connection conn;
|
||||||
@ -261,6 +296,121 @@ public class DeviceTypeDAOImpl implements DeviceTypeDAO {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String sql = "INSERT INTO DM_DEVICE_TYPE_PLATFORM (DEVICE_TYPE_ID, VERSION_NAME) VALUES (?,?)";
|
||||||
|
if (deviceTypeVersion.getVersionStatus() != null) {
|
||||||
|
sql = "INSERT INTO DM_DEVICE_TYPE_PLATFORM (DEVICE_TYPE_ID, VERSION_NAME, VERSION_STATUS) " +
|
||||||
|
"VALUES (?,?,?)";
|
||||||
|
}
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, deviceTypeVersion.getDeviceTypeId());
|
||||||
|
stmt.setString(2, deviceTypeVersion.getVersionName());
|
||||||
|
if (deviceTypeVersion.getVersionStatus() != null) {
|
||||||
|
stmt.setString(3, deviceTypeVersion.getVersionStatus());
|
||||||
|
}
|
||||||
|
return stmt.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException(
|
||||||
|
"Error occurred while adding the version: " + deviceTypeVersion.getVersionName()
|
||||||
|
+ " to device type: " + deviceTypeVersion.getDeviceTypeId(), e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceTypeVersion> getDeviceTypeVersions(int deviceTypeId, String typeName)
|
||||||
|
throws DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
List<DeviceTypeVersion> deviceTypesVersions = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String sql = "SELECT * FROM DM_DEVICE_TYPE_PLATFORM where DEVICE_TYPE_ID = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, deviceTypeId);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
DeviceTypeVersion deviceTypeVersion = new DeviceTypeVersion();
|
||||||
|
deviceTypeVersion.setId(rs.getInt("ID"));
|
||||||
|
deviceTypeVersion.setDeviceTypeId(rs.getInt("DEVICE_TYPE_ID"));
|
||||||
|
deviceTypeVersion.setDeviceTypeName(typeName); // Adding this for the sake of completeness of DTO
|
||||||
|
deviceTypeVersion.setVersionName(rs.getString("VERSION_NAME"));
|
||||||
|
deviceTypeVersion.setVersionStatus(rs.getString("VERSION_STATUS"));
|
||||||
|
deviceTypesVersions.add(deviceTypeVersion);
|
||||||
|
}
|
||||||
|
return deviceTypesVersions;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while fetching device type versions for device " +
|
||||||
|
"type: " + deviceTypeId, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion)
|
||||||
|
throws DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String sql = "UPDATE DM_DEVICE_TYPE_PLATFORM SET " +
|
||||||
|
" VERSION_STATUS = ? WHERE DEVICE_TYPE_ID = ? AND VERSION_NAME = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setString(1, deviceTypeVersion.getVersionStatus());
|
||||||
|
stmt.setInt(2, deviceTypeVersion.getDeviceTypeId());
|
||||||
|
stmt.setString(3, deviceTypeVersion.getVersionName());
|
||||||
|
return stmt.execute();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException(
|
||||||
|
"Error occurred while updating details of the version: " + deviceTypeVersion.getVersionName() +
|
||||||
|
" and device type: " + deviceTypeVersion.getDeviceTypeId(), e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypeVersion getDeviceTypeVersion(int deviceTypeId, String version)
|
||||||
|
throws DeviceManagementDAOException {
|
||||||
|
Connection conn;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
DeviceTypeVersion deviceTypeVersion = null;
|
||||||
|
try {
|
||||||
|
conn = this.getConnection();
|
||||||
|
String sql =
|
||||||
|
"SELECT * FROM DM_DEVICE_TYPE_PLATFORM WHERE DEVICE_TYPE_ID = ? AND VERSION_NAME = ?";
|
||||||
|
stmt = conn.prepareStatement(sql);
|
||||||
|
stmt.setInt(1, deviceTypeId);
|
||||||
|
stmt.setString(2, version);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
deviceTypeVersion = new DeviceTypeVersion();
|
||||||
|
deviceTypeVersion.setId(rs.getInt("ID"));
|
||||||
|
deviceTypeVersion.setDeviceTypeId(rs.getInt("DEVICE_TYPE_ID"));
|
||||||
|
deviceTypeVersion.setVersionName(rs.getString("VERSION_NAME"));
|
||||||
|
deviceTypeVersion.setVersionStatus(rs.getString("VERSION_STATUS"));
|
||||||
|
}
|
||||||
|
return deviceTypeVersion;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new DeviceManagementDAOException("Error occurred while fetching device type version for device " +
|
||||||
|
"type: " + deviceTypeId + ", and version " + version, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private Connection getConnection() throws SQLException {
|
private Connection getConnection() throws SQLException {
|
||||||
return DeviceManagementDAOFactory.getConnection();
|
return DeviceManagementDAOFactory.getConnection();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2019, Entgra (Pvt) Ltd. (http://www.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.device.mgt.core.dto;
|
||||||
|
|
||||||
|
public class DeviceTypeVersion {
|
||||||
|
int id;
|
||||||
|
int deviceTypeId;
|
||||||
|
String deviceTypeName;
|
||||||
|
String versionName;
|
||||||
|
String versionStatus;
|
||||||
|
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDeviceTypeId() {
|
||||||
|
return deviceTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypeId(int deviceTypeId) {
|
||||||
|
this.deviceTypeId = deviceTypeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDeviceTypeName() {
|
||||||
|
return deviceTypeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypeName(String deviceTypeName) {
|
||||||
|
this.deviceTypeName = deviceTypeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersionName() {
|
||||||
|
return versionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionName(String versionName) {
|
||||||
|
this.versionName = versionName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersionStatus() {
|
||||||
|
return versionStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVersionStatus(String versionStatus) {
|
||||||
|
this.versionStatus = versionStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -40,6 +40,7 @@ import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationExecu
|
|||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
import org.wso2.carbon.device.mgt.core.geo.GeoCluster;
|
import org.wso2.carbon.device.mgt.core.geo.GeoCluster;
|
||||||
import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate;
|
import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate;
|
||||||
|
|
||||||
@ -671,4 +672,15 @@ public interface DeviceManagementProviderService {
|
|||||||
|
|
||||||
boolean updateEnrollment(String owner, List<String> deviceIdentifiers)
|
boolean updateEnrollment(String owner, List<String> deviceIdentifiers)
|
||||||
throws DeviceManagementException, UserNotFoundException, InvalidDeviceException;
|
throws DeviceManagementException, UserNotFoundException, InvalidDeviceException;
|
||||||
|
|
||||||
|
boolean addDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementException;
|
||||||
|
|
||||||
|
List<DeviceTypeVersion> getDeviceTypeVersions(String typeName) throws DeviceManagementException;
|
||||||
|
|
||||||
|
boolean updateDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementException;
|
||||||
|
|
||||||
|
boolean isDeviceTypeVersionChangeAuthorized(String typeName, String version) throws DeviceManagementException;
|
||||||
|
|
||||||
|
DeviceTypeVersion getDeviceTypeVersion(String deviceTypeName, String version) throws
|
||||||
|
DeviceManagementException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,6 +73,8 @@ import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationExecu
|
|||||||
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformVersion;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementConstants;
|
||||||
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
import org.wso2.carbon.device.mgt.core.DeviceManagementPluginRepository;
|
||||||
import org.wso2.carbon.device.mgt.core.cache.impl.DeviceCacheManagerImpl;
|
import org.wso2.carbon.device.mgt.core.cache.impl.DeviceCacheManagerImpl;
|
||||||
@ -90,6 +92,7 @@ import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDA
|
|||||||
import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
|
import org.wso2.carbon.device.mgt.core.device.details.mgt.impl.DeviceInformationManagerImpl;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceType;
|
||||||
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeServiceIdentifier;
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeServiceIdentifier;
|
||||||
|
import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion;
|
||||||
import org.wso2.carbon.device.mgt.core.geo.GeoCluster;
|
import org.wso2.carbon.device.mgt.core.geo.GeoCluster;
|
||||||
import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate;
|
import org.wso2.carbon.device.mgt.core.geo.geoHash.GeoCoordinate;
|
||||||
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
@ -2109,6 +2112,7 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
pluginRepository.addDeviceManagementProvider(deviceManagementService);
|
pluginRepository.addDeviceManagementProvider(deviceManagementService);
|
||||||
|
initializeDeviceTypeVersions(deviceManagementService);
|
||||||
} catch (DeviceManagementException e) {
|
} catch (DeviceManagementException e) {
|
||||||
String msg = "Error occurred while registering device management plugin '" +
|
String msg = "Error occurred while registering device management plugin '" +
|
||||||
deviceManagementService.getType() + "'";
|
deviceManagementService.getType() + "'";
|
||||||
@ -3034,4 +3038,166 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv
|
|||||||
+ "constructing is failed", e);
|
+ "constructing is failed", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeDeviceTypeVersions(DeviceManagementService deviceManagementService) {
|
||||||
|
DeviceTypePlatformDetails deviceTypePlatformDetails = deviceManagementService.getDeviceTypePlatformDetails();
|
||||||
|
String deviceType = deviceManagementService.getType();
|
||||||
|
try {
|
||||||
|
if (deviceTypePlatformDetails != null && deviceTypePlatformDetails.getDeviceTypePlatformVersion() != null
|
||||||
|
&& deviceTypePlatformDetails.getDeviceTypePlatformVersion().size() > 0) {
|
||||||
|
|
||||||
|
List<DeviceTypePlatformVersion> fromXML = deviceTypePlatformDetails.getDeviceTypePlatformVersion();
|
||||||
|
List<DeviceTypePlatformVersion> newPlatformsToBeAdded = new ArrayList<>();
|
||||||
|
List<DeviceTypeVersion> existingPlatformVersions = getDeviceTypeVersions(deviceType);
|
||||||
|
|
||||||
|
for (DeviceTypePlatformVersion versionFromXml : fromXML) {
|
||||||
|
boolean match = false;
|
||||||
|
if (existingPlatformVersions != null && existingPlatformVersions.size() > 0) {
|
||||||
|
for (DeviceTypeVersion existingVersion : existingPlatformVersions) {
|
||||||
|
if (existingVersion.getVersionName().equals(versionFromXml.getVersionsName())) {
|
||||||
|
match = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!match) {
|
||||||
|
newPlatformsToBeAdded.add(versionFromXml);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceTypeVersion deviceTypeVersion;
|
||||||
|
for (DeviceTypePlatformVersion version : newPlatformsToBeAdded) {
|
||||||
|
deviceTypeVersion = new DeviceTypeVersion();
|
||||||
|
deviceTypeVersion.setDeviceTypeId(getDeviceType(deviceType).getId());
|
||||||
|
deviceTypeVersion.setDeviceTypeName(deviceManagementService.getType());
|
||||||
|
deviceTypeVersion.setVersionName(version.getVersionsName());
|
||||||
|
addDeviceTypeVersion(deviceTypeVersion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementException e) {
|
||||||
|
log.error("Error while adding versions for device type: " + deviceManagementService.getType(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementException {
|
||||||
|
boolean success;
|
||||||
|
try {
|
||||||
|
DeviceManagementDAOFactory.beginTransaction();
|
||||||
|
success = deviceTypeDAO.addDeviceTypeVersion(deviceTypeVersion);
|
||||||
|
DeviceManagementDAOFactory.commitTransaction();
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
|
String msg = "Error occurred while adding versions to device type: " + deviceTypeVersion.getDeviceTypeName();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} catch (TransactionManagementException e) {
|
||||||
|
String msg = "Error occurred while initiating transaction";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DeviceTypeVersion> getDeviceTypeVersions(String typeName) throws
|
||||||
|
DeviceManagementException {
|
||||||
|
List<DeviceTypeVersion> versions = null;
|
||||||
|
DeviceType deviceType = getDeviceType(typeName);
|
||||||
|
if (deviceType != null) {
|
||||||
|
try {
|
||||||
|
DeviceManagementDAOFactory.openConnection();
|
||||||
|
versions = deviceTypeDAO.getDeviceTypeVersions(deviceType.getId(), typeName);
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while getting versions of device type: " + typeName;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while opening a connection to the data source";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return versions;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateDeviceTypeVersion(DeviceTypeVersion deviceTypeVersion) throws DeviceManagementException {
|
||||||
|
boolean success;
|
||||||
|
try {
|
||||||
|
DeviceType deviceType = getDeviceType(deviceTypeVersion.getDeviceTypeName());
|
||||||
|
DeviceManagementDAOFactory.beginTransaction();
|
||||||
|
deviceTypeVersion.setDeviceTypeId(deviceType.getId());
|
||||||
|
success = deviceTypeDAO.updateDeviceTypeVersion(deviceTypeVersion);
|
||||||
|
DeviceManagementDAOFactory.commitTransaction();
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
DeviceManagementDAOFactory.rollbackTransaction();
|
||||||
|
String msg = "Error occurred while updating versions to device type: "
|
||||||
|
+ deviceTypeVersion.getDeviceTypeName();
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} catch (TransactionManagementException e) {
|
||||||
|
String msg = "Error occurred while initiating transaction";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDeviceTypeVersionChangeAuthorized(String deviceTypeName, String version) throws
|
||||||
|
DeviceManagementException {
|
||||||
|
boolean success = false;
|
||||||
|
try {
|
||||||
|
// Get the device type details of the deviceTypeName provided in current tenant.
|
||||||
|
DeviceType deviceType = getDeviceType(deviceTypeName);
|
||||||
|
DeviceManagementDAOFactory.openConnection();
|
||||||
|
if (deviceType != null) {
|
||||||
|
success = deviceTypeDAO.isDeviceTypeVersionModifiable(deviceType.getId(), version, this.getTenantId());
|
||||||
|
}
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while getting authorization details of device type : " + deviceTypeName;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while getting db connection to authorize details of device type : " +
|
||||||
|
deviceTypeName;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceTypeVersion getDeviceTypeVersion(String deviceTypeName, String version) throws
|
||||||
|
DeviceManagementException {
|
||||||
|
DeviceTypeVersion versions = null;
|
||||||
|
DeviceType deviceType = getDeviceType(deviceTypeName);
|
||||||
|
if (deviceType != null) {
|
||||||
|
try {
|
||||||
|
DeviceManagementDAOFactory.openConnection();
|
||||||
|
versions = deviceTypeDAO.getDeviceTypeVersion(deviceType.getId(), version);
|
||||||
|
} catch (DeviceManagementDAOException e) {
|
||||||
|
String msg = "Error occurred while getting versions of device type: " + deviceTypeName + " ,version: "
|
||||||
|
+ version;
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
String msg = "Error occurred while opening a connection to the data source";
|
||||||
|
log.error(msg, e);
|
||||||
|
throw new DeviceManagementException(msg, e);
|
||||||
|
} finally {
|
||||||
|
DeviceManagementDAOFactory.closeConnection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return versions;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
|||||||
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -115,4 +116,9 @@ public class TestDeviceManagementService implements DeviceManagementService {
|
|||||||
public GeneralConfig getGeneralConfig() {
|
public GeneralConfig getGeneralConfig() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,6 +35,7 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
|||||||
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.ConfigProperties;
|
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.ConfigProperties;
|
||||||
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceStatusTaskConfiguration;
|
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceStatusTaskConfiguration;
|
||||||
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration;
|
import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration;
|
||||||
@ -72,6 +73,7 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
private InitialOperationConfig initialOperationConfig;
|
private InitialOperationConfig initialOperationConfig;
|
||||||
private PullNotificationSubscriber pullNotificationSubscriber;
|
private PullNotificationSubscriber pullNotificationSubscriber;
|
||||||
private DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig;
|
private DeviceStatusTaskPluginConfig deviceStatusTaskPluginConfig;
|
||||||
|
private DeviceTypePlatformDetails deviceTypePlatformDetails;
|
||||||
private GeneralConfig generalConfig;
|
private GeneralConfig generalConfig;
|
||||||
private boolean isRegistryBasedConfigs = false;
|
private boolean isRegistryBasedConfigs = false;
|
||||||
private boolean isScheduled = false;
|
private boolean isScheduled = false;
|
||||||
@ -88,6 +90,8 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
this.initialOperationConfig = new InitialOperationConfig();
|
this.initialOperationConfig = new InitialOperationConfig();
|
||||||
this.setInitialOperationConfig(deviceTypeConfiguration);
|
this.setInitialOperationConfig(deviceTypeConfiguration);
|
||||||
this.deviceStatusTaskPluginConfig = new DeviceStatusTaskPluginConfig();
|
this.deviceStatusTaskPluginConfig = new DeviceStatusTaskPluginConfig();
|
||||||
|
this.deviceTypePlatformDetails = new DeviceTypePlatformDetails();
|
||||||
|
this.setDeviceTypePlatformDetails(deviceTypeConfiguration);
|
||||||
this.setDeviceStatusTaskPluginConfig(deviceTypeConfiguration.getDeviceStatusTaskConfiguration());
|
this.setDeviceStatusTaskPluginConfig(deviceTypeConfiguration.getDeviceStatusTaskConfiguration());
|
||||||
this.setPolicyMonitoringManager(deviceTypeConfiguration.getPolicyMonitoring());
|
this.setPolicyMonitoringManager(deviceTypeConfiguration.getPolicyMonitoring());
|
||||||
this.setPullNotificationSubscriber(deviceTypeConfiguration.getPullNotificationSubscriberConfig());
|
this.setPullNotificationSubscriber(deviceTypeConfiguration.getPullNotificationSubscriberConfig());
|
||||||
@ -219,6 +223,11 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
return deviceStatusTaskPluginConfig;
|
return deviceStatusTaskPluginConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
||||||
|
return deviceTypePlatformDetails;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public GeneralConfig getGeneralConfig() {
|
public GeneralConfig getGeneralConfig() {
|
||||||
return generalConfig;
|
return generalConfig;
|
||||||
@ -303,4 +312,11 @@ public class DeviceTypeManagerService implements DeviceManagementService {
|
|||||||
this.generalConfig.setPolicyMonitoringEnabled(deviceTypeConfiguration.getPolicyMonitoring().isEnabled());
|
this.generalConfig.setPolicyMonitoringEnabled(deviceTypeConfiguration.getPolicyMonitoring().isEnabled());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setDeviceTypePlatformDetails(DeviceTypeConfiguration deviceTypeConfiguration) {
|
||||||
|
DeviceTypePlatformDetails deviceTypeVersions = deviceTypeConfiguration.getDeviceTypePlatformDetails();
|
||||||
|
if (deviceTypeVersions != null) {
|
||||||
|
deviceTypePlatformDetails.setDeviceTypePlatformVersion(deviceTypeVersions.getDeviceTypePlatformVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.wso2.carbon.device.mgt.extensions.device.type.template.config;
|
package org.wso2.carbon.device.mgt.extensions.device.type.template.config;
|
||||||
|
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import javax.xml.bind.annotation.XmlElement;
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
import javax.xml.bind.annotation.XmlRootElement;
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
import javax.xml.bind.annotation.XmlAccessorType;
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
@ -86,6 +88,16 @@ public class DeviceTypeConfiguration {
|
|||||||
@XmlElementWrapper(name = "InitialOperationConfig")
|
@XmlElementWrapper(name = "InitialOperationConfig")
|
||||||
@XmlElement(name = "Operation", required = true)
|
@XmlElement(name = "Operation", required = true)
|
||||||
protected List<String> operations;
|
protected List<String> operations;
|
||||||
|
@XmlElement(name = "DeviceTypePlatformDetails", required = true)
|
||||||
|
protected DeviceTypePlatformDetails deviceTypePlatformDetails;
|
||||||
|
|
||||||
|
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
||||||
|
return deviceTypePlatformDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceTypePlatformDetails(DeviceTypePlatformDetails deviceTypePlatformDetails) {
|
||||||
|
this.deviceTypePlatformDetails = deviceTypePlatformDetails;
|
||||||
|
}
|
||||||
|
|
||||||
public List<String> getOperations() {
|
public List<String> getOperations() {
|
||||||
return operations;
|
return operations;
|
||||||
|
|||||||
@ -41,4 +41,13 @@
|
|||||||
<Text>This is license text</Text>
|
<Text>This is license text</Text>
|
||||||
</License>
|
</License>
|
||||||
|
|
||||||
|
<DeviceTypePlatformDetails>
|
||||||
|
<DeviceTypePlatformVersion>
|
||||||
|
<VersionName>32bit</VersionName>
|
||||||
|
</DeviceTypePlatformVersion>
|
||||||
|
<DeviceTypePlatformVersion>
|
||||||
|
<VersionName>64bit</VersionName>
|
||||||
|
</DeviceTypePlatformVersion>
|
||||||
|
</DeviceTypePlatformDetails>
|
||||||
|
|
||||||
</DeviceTypeConfiguration>
|
</DeviceTypeConfiguration>
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import org.wso2.carbon.device.mgt.common.policy.mgt.PolicyMonitoringManager;
|
|||||||
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationSubscriber;
|
||||||
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig;
|
||||||
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypePlatformDetails;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@ -102,4 +103,9 @@ public class TypeXDeviceManagementService implements DeviceManagementService {
|
|||||||
public GeneralConfig getGeneralConfig() {
|
public GeneralConfig getGeneralConfig() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeviceTypePlatformDetails getDeviceTypePlatformDetails() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -508,6 +508,23 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY (
|
|||||||
);
|
);
|
||||||
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
-- END OF POLICY AND DEVICE GROUP MAPPING --
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_PLATFORM(
|
||||||
|
ID int NOT NULL AUTO_INCREMENT,
|
||||||
|
DEVICE_TYPE_ID int NULL DEFAULT 0,
|
||||||
|
VERSION_NAME varchar(100) NULL,
|
||||||
|
VERSION_STATUS varchar(100) NULL DEFAULT 'ACTIVE',
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING
|
||||||
|
FOREIGN KEY (DEVICE_TYPE_ID)
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT device_type_version_uk
|
||||||
|
UNIQUE (
|
||||||
|
DEVICE_TYPE_ID,
|
||||||
|
VERSION_NAME
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
-- DASHBOARD RELATED VIEWS --
|
-- DASHBOARD RELATED VIEWS --
|
||||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||||
SELECT
|
SELECT
|
||||||
|
|||||||
@ -540,6 +540,23 @@ CREATE TABLE DM_DEVICE_DETAIL (
|
|||||||
ON UPDATE NO ACTION
|
ON UPDATE NO ACTION
|
||||||
);
|
);
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[DM_DEVICE_TYPE_PLATFORM]') AND TYPE IN (N'U'))
|
||||||
|
CREATE TABLE DM_DEVICE_TYPE_PLATFORM(
|
||||||
|
ID int IDENTITY(1, 1) NOT NULL,
|
||||||
|
DEVICE_TYPE_ID int NULL DEFAULT 0,
|
||||||
|
VERSION_NAME varchar(100) NULL,
|
||||||
|
VERSION_STATUS varchar(100) NULL DEFAULT 'ACTIVE',
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING
|
||||||
|
FOREIGN KEY (DEVICE_TYPE_ID)
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT device_type_version_uk
|
||||||
|
UNIQUE (
|
||||||
|
DEVICE_TYPE_ID,
|
||||||
|
VERSION_NAME
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
-- DASHBOARD RELATED VIEWS --
|
-- DASHBOARD RELATED VIEWS --
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM SYS.VIEWS WHERE NAME = 'POLICY_COMPLIANCE_INFO')
|
IF NOT EXISTS (SELECT * FROM SYS.VIEWS WHERE NAME = 'POLICY_COMPLIANCE_INFO')
|
||||||
|
|||||||
@ -556,6 +556,24 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
|||||||
)
|
)
|
||||||
ENGINE = InnoDB;
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
|
-- -----------------------------------------------------
|
||||||
|
-- Table `DM_DEVICE_TYPE_PLATFORM`
|
||||||
|
-- -----------------------------------------------------
|
||||||
|
CREATE TABLE IF NOT EXISTS `DM_DEVICE_TYPE_PLATFORM` (
|
||||||
|
`ID` INT NOT NULL AUTO_INCREMENT,
|
||||||
|
`DEVICE_TYPE_ID` INT DEFAULT 0,
|
||||||
|
`VERSION_NAME` VARCHAR(100) NULL,
|
||||||
|
`VERSION_STATUS` VARCHAR(100) DEFAULT 'ACTIVE',
|
||||||
|
PRIMARY KEY (`ID`),
|
||||||
|
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING FOREIGN KEY (DEVICE_TYPE_ID)
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE CASCADE,
|
||||||
|
UNIQUE KEY `device_type_version_uk` (`DEVICE_TYPE_ID`, `VERSION_NAME`)
|
||||||
|
)
|
||||||
|
ENGINE = InnoDB;
|
||||||
|
|
||||||
|
|
||||||
-- DASHBOARD RELATED VIEWS --
|
-- DASHBOARD RELATED VIEWS --
|
||||||
|
|
||||||
CREATE VIEW DEVICE_INFO_VIEW AS
|
CREATE VIEW DEVICE_INFO_VIEW AS
|
||||||
|
|||||||
@ -891,6 +891,31 @@ WHEN (NEW.ID IS NULL)
|
|||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `DM_DEVICE_TYPE_PLATFORM` (
|
||||||
|
ID INT NOT NULL,
|
||||||
|
DEVICE_TYPE_ID INT DEFAULT 0,
|
||||||
|
VERSION_NAME VARCHAR(100) NULL,
|
||||||
|
VERSION_STATUS VARCHAR(100) DEFAULT 'ACTIVE',
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING FOREIGN KEY (DEVICE_TYPE_ID)
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT device_type_version_uk UNIQUE (DEVICE_TYPE_ID, VERSION_NAME)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Generate ID using sequence and trigger
|
||||||
|
CREATE SEQUENCE `DM_DEVICE_TYPE_PLATFORM_seq` START WITH 1 INCREMENT BY 1;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TRIGGER `DM_DEVICE_TYPE_PLATFORM_seq_tr`
|
||||||
|
BEFORE INSERT ON `DM_DEVICE_TYPE_PLATFORM` FOR EACH ROW
|
||||||
|
WHEN (NEW.ID IS NULL)
|
||||||
|
BEGIN
|
||||||
|
SELECT `DM_DEVICE_TYPE_PLATFORM_seq`.NEXTVAL INTO :NEW.ID FROM DUAL;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
-- DASHBOARD RELATED VIEWS --
|
-- DASHBOARD RELATED VIEWS --
|
||||||
|
|
||||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||||
|
|||||||
@ -491,6 +491,21 @@ CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL (
|
|||||||
ON UPDATE NO ACTION
|
ON UPDATE NO ACTION
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE SEQUENCE `DM_DEVICE_TYPE_PLATFORM`_seq;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `DM_DEVICE_TYPE_PLATFORM` (
|
||||||
|
ID INT NOT NULL DEFAULT NEXTVAL ('`DM_DEVICE_TYPE_PLATFORM`_seq'),
|
||||||
|
DEVICE_TYPE_ID INT DEFAULT 0,
|
||||||
|
VERSION_NAME VARCHAR(100) NULL,
|
||||||
|
VERSION_STATUS VARCHAR(100) DEFAULT 'ACTIVE',
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT DM_DEVICE_TYPE_DM_DEVICE_TYPE_PLATFORM_MAPPING FOREIGN KEY (DEVICE_TYPE_ID)
|
||||||
|
REFERENCES DM_DEVICE_TYPE (ID)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE CASCADE,
|
||||||
|
CONSTRAINT device_type_version_uk UNIQUE (DEVICE_TYPE_ID, VERSION_NAME)
|
||||||
|
)
|
||||||
|
|
||||||
-- DASHBOARD RELATED VIEWS --
|
-- DASHBOARD RELATED VIEWS --
|
||||||
|
|
||||||
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
CREATE VIEW POLICY_COMPLIANCE_INFO AS
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user