Merge pull request #747 from sinthuja/master

Fixing some issues reported for product-iots.
4.x.x
Megala Uthayakumar 8 years ago committed by GitHub
commit 8830d627e9

@ -173,7 +173,10 @@ public class GroupManagementServiceImpl implements GroupManagementService {
.manageGroupSharing(groupId, userRoles); .manageGroupSharing(groupId, userRoles);
return Response.status(Response.Status.OK).build(); return Response.status(Response.Status.OK).build();
} catch (GroupManagementException e) { } catch (GroupManagementException e) {
String msg = "Error occurred while managing group share."; String msg = "Error occurred while managing group share. ";
if (e.getErrorMessage() != null){
msg += e.getErrorMessage();
}
log.error(msg, e); log.error(msg, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build(); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(msg).build();
} catch (RoleDoesNotExistException e) { } catch (RoleDoesNotExistException e) {

@ -367,39 +367,43 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
@Override @Override
public void manageGroupSharing(int groupId, List<String> newRoles) public void manageGroupSharing(int groupId, List<String> newRoles)
throws GroupManagementException, RoleDoesNotExistException { throws GroupManagementException, RoleDoesNotExistException {
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); if (newRoles != null) {
UserStoreManager userStoreManager; int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
try { UserStoreManager userStoreManager;
userStoreManager = try {
DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm( userStoreManager =
tenantId).getUserStoreManager(); DeviceManagementDataHolder.getInstance().getRealmService().getTenantUserRealm(
List<String> currentUserRoles = getRoles(groupId); tenantId).getUserStoreManager();
GroupManagementDAOFactory.beginTransaction(); List<String> currentUserRoles = getRoles(groupId);
for (String role : newRoles) { GroupManagementDAOFactory.beginTransaction();
if (!userStoreManager.isExistingRole(role)) { for (String role : newRoles) {
throw new RoleDoesNotExistException("Role '" + role + "' does not exists in the user store."); if (!userStoreManager.isExistingRole(role)) {
throw new RoleDoesNotExistException("Role '" + role + "' does not exists in the user store.");
}
// Removing role from current user roles of the group will return true if role exist.
// So we don't need to add it to the db again.
if (!currentUserRoles.remove(role)) {
// If group doesn't have the role, it is adding to the db.
groupDAO.addRole(groupId, role, tenantId);
}
} }
// Removing role from current user roles of the group will return true if role exist. for (String role : currentUserRoles) {
// So we don't need to add it to the db again. // Removing old roles from db which are not available in the new roles list.
if (!currentUserRoles.remove(role)) { groupDAO.removeRole(groupId, role, tenantId);
// If group doesn't have the role, it is adding to the db.
groupDAO.addRole(groupId, role, tenantId);
} }
GroupManagementDAOFactory.commitTransaction();
} catch (GroupManagementDAOException e) {
GroupManagementDAOFactory.rollbackTransaction();
throw new GroupManagementException(e);
} catch (UserStoreException e) {
throw new GroupManagementException("User store error in updating sharing roles.", e);
} catch (TransactionManagementException e) {
throw new GroupManagementException(e);
} finally {
GroupManagementDAOFactory.closeConnection();
} }
for (String role : currentUserRoles) { } else {
// Removing old roles from db which are not available in the new roles list. throw new GroupManagementException("No roles provided to complete the operation.");
groupDAO.removeRole(groupId, role, tenantId);
}
GroupManagementDAOFactory.commitTransaction();
} catch (GroupManagementDAOException e) {
GroupManagementDAOFactory.rollbackTransaction();
throw new GroupManagementException(e);
} catch (UserStoreException e) {
throw new GroupManagementException("User store error in updating sharing roles.", e);
} catch (TransactionManagementException e) {
throw new GroupManagementException(e);
} finally {
GroupManagementDAOFactory.closeConnection();
} }
} }
@ -469,12 +473,12 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
try { try {
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
GroupManagementDAOFactory.beginTransaction(); GroupManagementDAOFactory.beginTransaction();
for (DeviceIdentifier deviceIdentifier : deviceIdentifiers){ for (DeviceIdentifier deviceIdentifier : deviceIdentifiers) {
device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier); device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier);
if (device == null) { if (device == null) {
throw new DeviceNotFoundException("Device not found for id '" + deviceIdentifier.getId() + "'"); throw new DeviceNotFoundException("Device not found for id '" + deviceIdentifier.getId() + "'");
} }
if (!this.groupDAO.isDeviceMappedToGroup(groupId, device.getId(), tenantId)){ if (!this.groupDAO.isDeviceMappedToGroup(groupId, device.getId(), tenantId)) {
this.groupDAO.addDevice(groupId, device.getId(), tenantId); this.groupDAO.addDevice(groupId, device.getId(), tenantId);
} }
} }
@ -501,7 +505,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
try { try {
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
GroupManagementDAOFactory.beginTransaction(); GroupManagementDAOFactory.beginTransaction();
for (DeviceIdentifier deviceIdentifier : deviceIdentifiers){ for (DeviceIdentifier deviceIdentifier : deviceIdentifiers) {
device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier); device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier);
if (device == null) { if (device == null) {
throw new DeviceNotFoundException("Device not found for id '" + deviceIdentifier.getId() + "'"); throw new DeviceNotFoundException("Device not found for id '" + deviceIdentifier.getId() + "'");
@ -554,7 +558,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
Device device = managementProviderService.getDevice(deviceIdentifier); Device device = managementProviderService.getDevice(deviceIdentifier);
GroupManagementDAOFactory.openConnection(); GroupManagementDAOFactory.openConnection();
return groupDAO.getGroups(device.getId(), return groupDAO.getGroups(device.getId(),
PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId()); PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId());
} catch (DeviceManagementException e) { } catch (DeviceManagementException e) {
throw new GroupManagementException("Error occurred while retrieving the device details.", e); throw new GroupManagementException("Error occurred while retrieving the device details.", e);
} catch (GroupManagementDAOException e) { } catch (GroupManagementDAOException e) {

@ -2,7 +2,7 @@
"appContext": "/devicemgt/", "appContext": "/devicemgt/",
"isCloud": false, "isCloud": false,
"httpsURL": "https://%iot.gateway.host%:%iot.gateway.https.port%", "httpsURL": "https://%iot.gateway.host%:%iot.gateway.https.port%",
"httpURL": "http://%iot.gateway.host%:%iot.gateway.http.port", "httpURL": "http://%iot.gateway.host%:%iot.gateway.http.port%",
"wssURL": "https://%iot.analytics.host%:%iot.analytics.https.port%", "wssURL": "https://%iot.analytics.host%:%iot.analytics.https.port%",
"portalURL": "https://%iot.analytics.host%:%iot.analytics.https.port%", "portalURL": "https://%iot.analytics.host%:%iot.analytics.https.port%",
"dashboardServerURL": "%https.ip%", "dashboardServerURL": "%https.ip%",

@ -381,7 +381,7 @@
<div class="content"> <div class="content">
<div class="row"> <div class="row">
<div class="col-lg-5 col-md-6 col-centered"> <div class="col-lg-5 col-md-6 col-centered">
<h3>Unexpected error occurred!</h3> <h3 id="unexp-error-msg">Unexpected error occurred!</h3>
<div class="buttons"> <div class="buttons">
<a href="#" id="group-unexpected-error-link" class="btn-operations"> <a href="#" id="group-unexpected-error-link" class="btn-operations">

@ -112,7 +112,7 @@ function toTitleCase(str) {
}); });
} }
function htmlspecialchars(text){ function htmlspecialchars(text) {
return jQuery('<div/>').text(text).html(); return jQuery('<div/>').text(text).html();
} }
@ -138,11 +138,11 @@ function loadGroups() {
var objects = []; var objects = [];
$(data.deviceGroups).each(function (index) { $(data.deviceGroups).each(function (index) {
objects.push({ objects.push({
groupId: htmlspecialchars(data.deviceGroups[index].id), groupId: htmlspecialchars(data.deviceGroups[index].id),
name: htmlspecialchars(data.deviceGroups[index].name), name: htmlspecialchars(data.deviceGroups[index].name),
description: htmlspecialchars(data.deviceGroups[index].description), description: htmlspecialchars(data.deviceGroups[index].description),
owner: htmlspecialchars(data.deviceGroups[index].owner) owner: htmlspecialchars(data.deviceGroups[index].owner)
}) })
}); });
var json = { var json = {
"recordsTotal": data.count, "recordsTotal": data.count,
@ -159,7 +159,7 @@ function loadGroups() {
class: 'remove-padding icon-only content-fill viewEnabledIcon', class: 'remove-padding icon-only content-fill viewEnabledIcon',
render: function (data, type, row, meta) { render: function (data, type, row, meta) {
return '<div class="thumbnail icon"><img class="square-element text fw " ' + return '<div class="thumbnail icon"><img class="square-element text fw " ' +
'src="public/cdmf.page.groups/images/group-icon.png"/></div>'; 'src="public/cdmf.page.groups/images/group-icon.png"/></div>';
} }
}, },
{ {
@ -185,38 +185,38 @@ function loadGroups() {
var html = ''; var html = '';
if ($.hasPermission("VIEW_GROUP_DEVICES")) { if ($.hasPermission("VIEW_GROUP_DEVICES")) {
/*html += '<a href="group/' + row.groupId /*html += '<a href="group/' + row.groupId
+ '/analytics" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' + + '/analytics" data-click-event="remove-form" class="btn padding-reduce-on-grid-view">' +
'<span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>' '<span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-statistics fw-stack-1x"></i></span>'
+ +
'<span class="hidden-xs hidden-on-grid-view">Analytics</span></a>';*/ '<span class="hidden-xs hidden-on-grid-view">Analytics</span></a>';*/
} }
if (row.owner != "wso2.system.user") { if (row.owner != "wso2.system.user") {
if ($.hasPermission("SHARE_GROUP")) { if ($.hasPermission("SHARE_GROUP")) {
html += html +=
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view share-group-link" data-group-id="' '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view share-group-link" data-group-id="'
+ row.groupId + '" ' + + row.groupId + '" ' +
'data-group-owner="' + row.owner 'data-group-owner="' + row.owner
+ '" data-placement="top" data-toggle="tooltip" data-original-title="Share"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-share fw-stack-1x"></i></span>' + '" data-placement="top" data-toggle="tooltip" data-original-title="Share"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-share fw-stack-1x"></i></span>'
+ +
'<span class="hidden-xs hidden-on-grid-view">Share</span></a>'; '<span class="hidden-xs hidden-on-grid-view">Share</span></a>';
} }
if ($.hasPermission("UPDATE_GROUP")) { if ($.hasPermission("UPDATE_GROUP")) {
html += html +=
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-group-link" data-group-name="' '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view edit-group-link" data-group-name="'
+ row.name + '" ' + + row.name + '" ' +
'data-group-owner="' + row.owner + '" data-group-description="' + row.description 'data-group-owner="' + row.owner + '" data-group-description="' + row.description
+ '" data-group-id="' + row.groupId + '" data-group-id="' + row.groupId
+ '" data-placement="top" data-toggle="tooltip" data-original-title="Edit"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i>' + + '" data-placement="top" data-toggle="tooltip" data-original-title="Edit"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i>' +
'<i class="fw fw-edit fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">Edit</span></a>'; '<i class="fw fw-edit fw-stack-1x"></i></span><span class="hidden-xs hidden-on-grid-view">Edit</span></a>';
} }
if ($.hasPermission("REMOVE_GROUP")) { if ($.hasPermission("REMOVE_GROUP")) {
html += html +=
'<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-group-link" data-group-id="' '<a href="#" data-click-event="remove-form" class="btn padding-reduce-on-grid-view remove-group-link" data-group-id="'
+ row.groupId + '" ' + + row.groupId + '" ' +
'data-group-owner="' + row.owner 'data-group-owner="' + row.owner
+ '" data-placement="top" data-toggle="tooltip" data-original-title="Delete"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-delete fw-stack-1x"></i>' + '" data-placement="top" data-toggle="tooltip" data-original-title="Delete"><span class="fw-stack"><i class="fw fw-circle-outline fw-stack-2x"></i><i class="fw fw-delete fw-stack-1x"></i>'
+ +
'</span><span class="hidden-xs hidden-on-grid-view">Delete</span></a>'; '</span><span class="hidden-xs hidden-on-grid-view">Delete</span></a>';
} }
} }
return html; return html;
@ -251,21 +251,21 @@ function loadGroups() {
}; };
$('#group-grid').datatables_extended_serverside_paging( $('#group-grid').datatables_extended_serverside_paging(
null, null,
serviceURL, serviceURL,
dataFilter, dataFilter,
columns, columns,
fnCreatedRow, fnCreatedRow,
function (oSettings) { function (oSettings) {
$(".icon .text").res_text(0.2); $(".icon .text").res_text(0.2);
attachEvents(); attachEvents();
var thisTable = $(this).closest('.dataTables_wrapper').find('.dataTable').dataTable(); var thisTable = $(this).closest('.dataTables_wrapper').find('.dataTable').dataTable();
thisTable.removeClass("table-selectable"); thisTable.removeClass("table-selectable");
}, },
{ {
"placeholder": "Search By Group Name", "placeholder": "Search By Group Name",
"searchKey": "name" "searchKey": "name"
} }
); );
$(groupCheckbox).click(function () { $(groupCheckbox).click(function () {
addGroupSelectedClass(this); addGroupSelectedClass(this);
@ -442,7 +442,7 @@ function attachEvents() {
}; };
invokerUtil.delete("/api/device-mgt/v1.0/groups/id/" + groupId, invokerUtil.delete("/api/device-mgt/v1.0/groups/id/" + groupId,
successCallback, function (message) { successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
}); });
@ -487,7 +487,7 @@ function attachEvents() {
}; };
invokerUtil.put("/api/device-mgt/v1.0/groups/id/" + groupId, group, invokerUtil.put("/api/device-mgt/v1.0/groups/id/" + groupId, group,
successCallback, function (message) { successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
}); });
@ -517,7 +517,7 @@ function markAlreadySavedUsersRoles(groupId) {
}; };
invokerUtil.get("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles", invokerUtil.get("/api/device-mgt/v1.0/groups/id/" + groupId + "/roles",
successCallback, function (message) { successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
} }
@ -535,8 +535,8 @@ function listAllRoles(groupId) {
$("#rolesListing").html(html); $("#rolesListing").html(html);
markAlreadySavedUsersRoles(groupId); markAlreadySavedUsersRoles(groupId);
$("select.select2[multiple=multiple]").select2({ $("select.select2[multiple=multiple]").select2({
tags: false tags: false
}); });
} else { } else {
$("#rolesListing").html("No roles available"); $("#rolesListing").html("No roles available");
} }
@ -546,7 +546,7 @@ function listAllRoles(groupId) {
}; };
invokerUtil.get("/api/device-mgt/v1.0/roles?offset=0&limit=100&user-store=all", invokerUtil.get("/api/device-mgt/v1.0/roles?offset=0&limit=100&user-store=all",
successCallback, function (message) { successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
} }
@ -589,7 +589,7 @@ function updateGroupShare(groupId, roles) {
}; };
invokerUtil.post("/api/device-mgt/v1.0/groups/id/" + groupId + "/share", invokerUtil.post("/api/device-mgt/v1.0/groups/id/" + groupId + "/share",
roles, successCallback, function (message) { roles, successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
} }
@ -600,7 +600,7 @@ function createNewCombinedRole(roleName, roleList) {
showPopup(); showPopup();
}; };
invokerUtil.post("/api/device-mgt/v1.0/roles/create-combined-role/" + roleName, roleList, invokerUtil.post("/api/device-mgt/v1.0/roles/create-combined-role/" + roleName, roleList,
successCallback, function (message) { successCallback, function (message) {
displayErrors(message); displayErrors(message);
}); });
} }
@ -633,6 +633,9 @@ function displayErrors(jqXHR) {
}); });
} else { } else {
$(modalPopupContent).html($('#group-unexpected-error-content').html()); $(modalPopupContent).html($('#group-unexpected-error-content').html());
if (jqXHR.responseText) {
$('#unexp-error-msg').html(jqXHR.responseText.replace(new RegExp("\"", 'g'), ""));
}
$("a#group-unexpected-error-link").click(function () { $("a#group-unexpected-error-link").click(function () {
hidePopup(); hidePopup();
}); });

Loading…
Cancel
Save