From 235e9797d44cb2cceb073649ea56a50aa107e5b9 Mon Sep 17 00:00:00 2001 From: Megala Date: Mon, 10 Oct 2016 11:36:25 +0530 Subject: [PATCH 1/2] Fixing EMM-1717 --- .../dao/impl/OracleNotificationDAOImpl.java | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java index 1ced4b898f9..45460021884 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java @@ -24,10 +24,7 @@ import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagement import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory; import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.*; import java.util.ArrayList; import java.util.List; @@ -35,6 +32,36 @@ import java.util.List; * This class holds the Oracle implementation of NotificationDAO which can be used to support Oracle db syntax. */ public class OracleNotificationDAOImpl extends AbstractNotificationDAOImpl { + @Override + public int addNotification(int deviceId, int tenantId, Notification notification) throws + NotificationManagementException { + Connection conn; + PreparedStatement stmt = null; + ResultSet rs; + int notificationId = -1; + try { + conn = NotificationManagementDAOFactory.getConnection(); + String sql = "INSERT INTO DM_NOTIFICATION(DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION, TENANT_ID) " + + "VALUES (?, ?, ?, ?, ?)"; + stmt = conn.prepareStatement(sql, new int[] { 1 }); + stmt.setInt(1, deviceId); + stmt.setInt(2, notification.getOperationId()); + stmt.setString(3, notification.getStatus().toString()); + stmt.setString(4, notification.getDescription()); + stmt.setInt(5, tenantId); + stmt.execute(); + rs = stmt.getGeneratedKeys(); + if (rs.next()) { + notificationId = rs.getInt(1); + } + } catch (Exception e) { + throw new NotificationManagementException( + "Error occurred while adding the " + "Notification for device id : " + deviceId, e); + } finally { + NotificationDAOUtil.cleanupResources(stmt, null); + } + return notificationId; + } @Override public List getAllNotifications(PaginationRequest request, int tenantId) throws From 3223e29df928d60a5b93caeda92db58f9a68ca91 Mon Sep 17 00:00:00 2001 From: kamidu Date: Mon, 10 Oct 2016 14:15:52 +0530 Subject: [PATCH 2/2] Fix for EMM-1185 , EMM- 1619 --- .../modules/business-controllers/device.js | 9 +- .../public/js/policy-list.js | 13 +-- .../cdmf.page.roles/public/js/role-listing.js | 15 ++-- .../cdmf.page.users/public/js/listing.js | 33 ++++--- .../dataTables.extended.serversidepaging.js | 87 +++++++++++-------- .../public/js/notification-listing.js | 7 +- 6 files changed, 99 insertions(+), 65 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/device.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/device.js index f38e2b69fa4..26233a32d81 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/device.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/modules/business-controllers/device.js @@ -226,13 +226,14 @@ deviceModule = function () { publicMethods.getDevices = function (userName) { var url = devicemgtProps["httpsURL"] + - devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/devices/user/" + userName; + devicemgtProps["backendRestEndpoints"]["deviceMgt"] + "/devices"; return serviceInvokers.XMLHttp.get( url, function (responsePayload) { - for (var i = 0; i < responsePayload.length; i++) { - responsePayload[i].thumb = utility.getDeviceThumb(responsePayload[i].type); + var devices = JSON.parse(responsePayload.responseText).devices; + for (var i = 0; i < devices.length; i++) { + devices[i].thumb = utility.getDeviceThumb(devices[i].type); } - return responsePayload; + return devices; }, function (responsePayload) { log.error(responsePayload); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.policies/public/js/policy-list.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.policies/public/js/policy-list.js index f9d8c14c2cf..65445b3929a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.policies/public/js/policy-list.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.policies/public/js/policy-list.js @@ -20,7 +20,10 @@ var sortUpdateBtn = "#sortUpdateBtn"; var sortedIDs; var dataTableSelection = '.DTTT_selected'; -$('#policy-grid').datatables_extended(); +var settings = { + "sorting": false +}; +$('#policy-grid').datatables_extended(settings); $(".icon .text").res_text(0.2); var saveNewPrioritiesButton = "#save-new-priorities-button"; @@ -90,7 +93,7 @@ function showPopup() { function hidePopup() { $(modalPopupContent).html(''); $(modalPopup).modal('hide'); - $('body').removeClass('modal-open').css('padding-right','0px'); + $('body').removeClass('modal-open').css('padding-right', '0px'); $('.modal-backdrop').remove(); } @@ -208,7 +211,7 @@ $(document).ready(function () { }, function () { $("#save-policy-priorities-error-content").find(".message-from-server").html( - "Message From Server : " + data["statusText"]); + "Message From Server : " + data["statusText"]); $(modalPopupContent).html($('#save-policy-priorities-error-content').html()); showPopup(); $("a#save-policy-priorities-error-link").click(function () { @@ -222,7 +225,7 @@ $(document).ready(function () { $(".policy-unpublish-link").click(function () { var policyList = getSelectedPolicies(); var statusList = getSelectedPolicyStates(); - if ( ($.inArray( 'Inactive/Updated', statusList ) > -1) || ($.inArray( 'Inactive', statusList ) > -1) ) { + if (($.inArray('Inactive/Updated', statusList) > -1) || ($.inArray('Inactive', statusList) > -1)) { $(modalPopupContent).html($("#errorPolicyUnPublishSelection").html()); showPopup(); } else { @@ -266,7 +269,7 @@ $(document).ready(function () { $(".policy-publish-link").click(function () { var policyList = getSelectedPolicies(); var statusList = getSelectedPolicyStates(); - if ( ($.inArray( 'Active/Updated', statusList ) > -1) || ($.inArray( 'Active', statusList ) > -1) ) { + if (($.inArray('Active/Updated', statusList) > -1) || ($.inArray('Active', statusList) > -1)) { $(modalPopupContent).html($("#errorPolicyPublishSelection").html()); showPopup(); } else { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js index b27dfbe6983..d5cb812ce26 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.roles/public/js/role-listing.js @@ -45,9 +45,9 @@ var isInit = true; * the font icons change the size to respective screen resolution. * */ -$(document).on( 'draw.dt', function () { +$(document).on('draw.dt', function () { $(".icon .text").res_text(0.2); -} ); +}); /* @@ -72,7 +72,7 @@ function showPopup() { function hidePopup() { $(modalPopupContent).html(''); $(modalPopup).modal('hide'); - $('body').removeClass('modal-open').css('padding-right','0px'); + $('body').removeClass('modal-open').css('padding-right', '0px'); $('.modal-backdrop').remove(); } @@ -95,7 +95,7 @@ function loadRoles() { var objects = []; - $(data.roles).each(function( index ) { + $(data.roles).each(function (index) { objects.push( { name: data.roles[index], @@ -182,10 +182,13 @@ function loadRoles() { var options = { "placeholder": "Search By Role Name", - "searchKey" : "filter" + "searchKey": "filter" + }; + var settings = { + "sorting": false }; - $('#role-grid').datatables_extended_serverside_paging(null, '/api/device-mgt/v1.0/roles', dataFilter, columns, fnCreatedRow, null, options); + $('#role-grid').datatables_extended_serverside_paging(settings, '/api/device-mgt/v1.0/roles', dataFilter, columns, fnCreatedRow, null, options); loadingContent.hide(); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js index 4a69e766722..43d6de1a83d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/pages/cdmf.page.users/public/js/listing.js @@ -50,9 +50,9 @@ var body = "body"; * the font icons change the size to respective screen resolution. * */ -$(document).on( 'draw.dt', function () { +$(document).on('draw.dt', function () { $(".icon .text").res_text(0.2); -} ); +}); /* * set popup maximum height function. @@ -75,7 +75,7 @@ function showPopup() { function hidePopup() { $(modalPopupContent).html(''); $(modalPopup).modal('hide'); - $('body').removeClass('modal-open').css('padding-right','0px'); + $('body').removeClass('modal-open').css('padding-right', '0px'); $('.modal-backdrop').remove(); } @@ -270,13 +270,14 @@ function loadUsers() { var objects = []; - $(data.users).each( function (index) { + $(data.users).each(function (index) { objects.push({ filter: data.users[index].username, - firstname: data.users[index].firstname ? data.users[index].firstname : "" , + firstname: data.users[index].firstname ? data.users[index].firstname : "", lastname: data.users[index].lastname ? data.users[index].lastname : "", - emailAddress : data.users[index].emailAddress ? data.users[index].emailAddress : "", - DT_RowId : "user-" + data.users[index].username}) + emailAddress: data.users[index].emailAddress ? data.users[index].emailAddress : "", + DT_RowId: "user-" + data.users[index].username + }) }); var json = { @@ -300,7 +301,7 @@ function loadUsers() { class: "remove-padding icon-only content-fill", data: null, render: function (data, type, row, meta) { - return '
' + + return '
' + '' + '
'; } @@ -338,7 +339,7 @@ function loadUsers() { class: "text-right content-fill text-left-on-grid-view no-wrap", data: null, render: function (data, type, row, meta) { - var editbtn= '  ' + ' ' + @@ -377,13 +378,13 @@ function loadUsers() { ''; var returnbtnSet = ''; - if($("#can-edit").length > 0) { + if ($("#can-edit").length > 0) { returnbtnSet = returnbtnSet + editbtn; } - if($("#can-reset-password").length > 0) { + if ($("#can-reset-password").length > 0) { returnbtnSet = returnbtnSet + resetPasswordbtn; } - if($("#can-remove").length > 0) { + if ($("#can-remove").length > 0) { returnbtnSet = returnbtnSet + removebtn; } @@ -395,10 +396,14 @@ function loadUsers() { var options = { "placeholder": "Search By Username", - "searchKey" : "filter" + "searchKey": "filter" + }; + + var settings = { + "sorting": false }; - $('#user-grid').datatables_extended_serverside_paging(null, '/api/device-mgt/v1.0/users', dataFilter, columns, fnCreatedRow, null, options); + $('#user-grid').datatables_extended_serverside_paging(settings, '/api/device-mgt/v1.0/users', dataFilter, columns, fnCreatedRow, null, options); $(loadingContentView).hide(); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.serversidepaging.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.serversidepaging.js index ddd23500558..243df02a4d9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.serversidepaging.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.data-tables-extended/public/js/dataTables.extended.serversidepaging.js @@ -29,21 +29,22 @@ * For ex: $(this) means jQuery(this) and S.fn.x means jQuery.fn.x */ -$.fn.datatables_extended_serverside_paging = function (settings , url, dataFilter, +$.fn.datatables_extended_serverside_paging = function (settings, url, dataFilter, columns, fnCreatedRow, fnDrawCallback, options) { var elem = $(this); // EMM related function if (InitiateViewOption) { - $(document).on('click','.viewEnabledIcon',InitiateViewOption); + $(document).on('click', '.viewEnabledIcon', InitiateViewOption); } + //--- End of EMM related codes /* * Work around for accessing settings params inside datatable functions */ - if(settings != null && settings.sorting != null && settings.sorting != undefined && settings.sorting){ + if (settings != null && settings.sorting != null && settings.sorting != undefined && settings.sorting) { elem.addClass('sorting-enabled'); - }else{ + } else { elem.addClass('sorting-disabled'); } @@ -53,22 +54,22 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte //--- End of EMM related codes $(elem).DataTable( - $.extend({},{ + $.extend({}, { serverSide: true, processing: false, searching: true, - ordering: false, + ordering: false, filter: false, bSortCellsTop: true, - ajax : { + ajax: { url: context + "/api/data-tables/invoker", - data : function (params) { + data: function (params) { var i; var searchParams = {}; for (i = 0; i < params.columns.length; i++) { searchParams[params.columns[i].data] = encodeURIComponent(params.columns[i].search.value); } - if(options) { + if (options) { searchParams[options.searchKey] = encodeURIComponent(params.search.value); } params.filter = JSON.stringify(searchParams); @@ -87,14 +88,14 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte columns: columns, responsive: false, autoWidth: false, - dom:'<"dataTablesTop"' + - 'f' + - '<"dataTables_toolbar">' + - '>' + - 'rt' + - '<"dataTablesBottom"' + - 'lip' + - '>', + dom: '<"dataTablesTop"' + + 'f' + + '<"dataTables_toolbar">' + + '>' + + 'rt' + + '<"dataTablesBottom"' + + 'lip' + + '>', language: { searchPlaceholder: options.placeholder, search: '' @@ -119,7 +120,7 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte ); column - //.search(val ? '^' + val + '$' : '', true, false) + //.search(val ? '^' + val + '$' : '', true, false) .search(val ? val : '', true, false) .draw(); @@ -193,24 +194,42 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte /** * create sorting dropdown menu for list table advance operations */ - var dropdownmenu = $(''); - $('.sort-row th', elem).each(function () { - if (!$(this).hasClass('no-sort')) { - dropdownmenu.append('
  • ' + $(this).html() + '
  • '); + var table = this; + if (table.hasClass('sorting-enabled')) { + var dropdownmenu = $(''); + $('.sort-row th', elem).each(function () { + if (!$(this).hasClass('no-sort')) { + dropdownmenu.append('
  • ' + $(this).html() + '
  • '); + } + }); + } + + function getAdvanceToolBar() { + if (table.hasClass('sorting-enabled')) { + return '' + } else { + return '' } - }); + ; + } + /** * append advance operations to list table toolbar */ - $('.dataTable.list-table').closest('.dataTables_wrapper').find('.dataTablesTop .dataTables_toolbar').html('' + - '' + $('.dataTable.list-table').closest('.dataTables_wrapper').find('.dataTablesTop .dataTables_toolbar').html( + getAdvanceToolBar() ); /** @@ -248,14 +267,14 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte $(button).addClass("active").html('Cancel'); $(button).parent().next().children("button").removeClass("disabled"); // EMM related code - $(document).off('click','.viewEnabledIcon'); + $(document).off('click', '.viewEnabledIcon'); //--- End of EMM related codes } else if ($(button).html() == 'Cancel') { thisTable.removeClass("table-selectable"); $(button).addClass("active").html('Select'); $(button).parent().next().children().addClass("disabled"); // EMM related function - $(document).on('click','.viewEnabledIcon',InitiateViewOption); + $(document).on('click', '.viewEnabledIcon', InitiateViewOption); //--- End of EMM related codes } }); @@ -314,6 +333,6 @@ $.fn.datatables_extended_serverside_paging = function (settings , url, dataFilte } }) } - },settings) + }, settings) ); }; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js index 9c4182dcbb7..f77c0f5a3f0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/src/main/resources/jaggeryapps/devicemgt/app/units/cdmf.unit.notification.listing/public/js/notification-listing.js @@ -47,8 +47,11 @@ function loadNotifications() { viewModel["appContext"] = context; var content = template(viewModel); $("#ast-container").html(content); - $("#unread-notifications").datatables_extended(); - $("#all-notifications").datatables_extended(); + var settings = { + "sorting" : false + }; + $("#unread-notifications").datatables_extended(settings); + $("#all-notifications").datatables_extended(settings); } } },