@Override
public ManagementOperationNotification create(ManagementOperationNotificationCreator creator) throws KapuaException {
ArgumentValidator.notNull(creator, "managementOperationNotificationCreator");
ArgumentValidator.notNull(creator.getScopeId(), "managementOperationNotificationCreator.scopeId");
ArgumentValidator.notNull(creator.getOperationId(), "managementOperationNotificationCreator.operationId");
ArgumentValidator.notNull(creator.getSentOn(), "managementOperationNotificationCreator.sentOn");
ArgumentValidator.notNull(creator.getStatus(), "managementOperationNotificationCreator.status");
ArgumentValidator.notNull(creator.getProgress(), "managementOperationNotificationCreator.progress");
ArgumentValidator.notNegative(creator.getProgress(), "managementOperationNotificationCreator.progress");
authorizationService.checkPermission(permissionFactory.newPermission(DeviceManagementRegistryDomains.DEVICE_MANAGEMENT_REGISTRY_DOMAIN, Actions.write, null));
if (KapuaSecurityUtils.doPrivileged(() -> deviceManagementOperationRegistryService.find(creator.getScopeId(), creator.getOperationId()) == null)) {
throw new KapuaEntityNotFoundException(DeviceManagementOperation.TYPE, creator.getOperationId());
}
return entityManagerSession.onTransactedInsert(em -> ManagementOperationNotificationDAO.create(em, creator));
}