mirror of
https://repository.entgra.net/community/device-mgt-core.git
synced 2025-10-06 02:01:45 +00:00
Add missing parts and test to group management.
This commit is contained in:
parent
d1ee1fd578
commit
3fd141acdf
@ -19,15 +19,11 @@
|
||||
package org.wso2.carbon.device.mgt.core.group.mgt.dao;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
|
||||
import org.wso2.carbon.device.mgt.core.group.mgt.DeviceGroupBuilder;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* This interface represents the key operations associated with persisting group related information.
|
||||
@ -151,10 +147,10 @@ public interface GroupDAO {
|
||||
* Get all devices of a given tenant and device group.
|
||||
*
|
||||
* @param groupId of the group.
|
||||
* @param tenantId of user's tenant.
|
||||
* @param request for pagination.
|
||||
* @param tenantId of user's tenant.
|
||||
* @return list of device in group
|
||||
* @throws GroupManagementDAOException
|
||||
*/
|
||||
PaginationResult getDevices(int groupId, PaginationRequest request, int tenantId) throws GroupManagementDAOException;
|
||||
List<Device> getDevices(int groupId, PaginationRequest request, int tenantId) throws GroupManagementDAOException;
|
||||
}
|
||||
|
||||
@ -20,8 +20,8 @@ package org.wso2.carbon.device.mgt.core.group.mgt.dao;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.core.dao.util.DeviceManagementDAOUtil;
|
||||
import org.wso2.carbon.device.mgt.core.group.mgt.DeviceGroupBuilder;
|
||||
|
||||
import java.sql.Connection;
|
||||
@ -304,13 +304,79 @@ public class GroupDAOImpl implements GroupDAO {
|
||||
|
||||
@Override
|
||||
public List<Device> getDevices(int groupId, int tenantId) throws GroupManagementDAOException {
|
||||
return null;
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Device> devices = null;
|
||||
try {
|
||||
conn = GroupManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT d1.DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
|
||||
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
|
||||
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT gd.DEVICE_ID, " +
|
||||
"gd.DESCRIPTION, gd.NAME, gd.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE " +
|
||||
"FROM (SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, " +
|
||||
"d.DEVICE_TYPE_ID FROM DM_DEVICE d, DM_DEVICE_GROUP_MAP dgm WHERE dgm.GROUP_ID = ? " +
|
||||
"AND d.ID = dgm.DEVICE_ID AND d.TENANT_ID = ?) gd, DM_DEVICE_TYPE t " +
|
||||
"WHERE gd.DEVICE_TYPE_ID = t.ID) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ?";
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, groupId);
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, tenantId);
|
||||
rs = stmt.executeQuery();
|
||||
devices = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
Device device = DeviceManagementDAOUtil.loadDevice(rs);
|
||||
devices.add(device);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GroupManagementDAOException("Error occurred while retrieving information of all " +
|
||||
"registered devices", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
|
||||
@SuppressWarnings("JpaQueryApiInspection")
|
||||
@Override
|
||||
public PaginationResult getDevices(int groupId, PaginationRequest request, int tenantId)
|
||||
public List<Device> getDevices(int groupId, PaginationRequest request, int tenantId)
|
||||
throws GroupManagementDAOException {
|
||||
return null;
|
||||
Connection conn;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet rs = null;
|
||||
List<Device> devices = null;
|
||||
try {
|
||||
conn = GroupManagementDAOFactory.getConnection();
|
||||
String sql = "SELECT d1.DEVICE_ID, d1.DESCRIPTION, d1.NAME AS DEVICE_NAME, d1.DEVICE_TYPE, " +
|
||||
"d1.DEVICE_IDENTIFICATION, e.OWNER, e.OWNERSHIP, e.STATUS, e.DATE_OF_LAST_UPDATE, " +
|
||||
"e.DATE_OF_ENROLMENT, e.ID AS ENROLMENT_ID FROM DM_ENROLMENT e, (SELECT gd.DEVICE_ID, " +
|
||||
"gd.DESCRIPTION, gd.NAME, gd.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE " +
|
||||
"FROM (SELECT d.ID AS DEVICE_ID, d.DESCRIPTION, d.NAME, d.DEVICE_IDENTIFICATION, " +
|
||||
"d.DEVICE_TYPE_ID FROM DM_DEVICE d, DM_DEVICE_GROUP_MAP dgm WHERE dgm.GROUP_ID = ? " +
|
||||
"AND d.ID = dgm.DEVICE_ID AND d.TENANT_ID = ?) gd, DM_DEVICE_TYPE t " +
|
||||
"WHERE gd.DEVICE_TYPE_ID = t.ID) d1 WHERE d1.DEVICE_ID = e.DEVICE_ID AND TENANT_ID = ? " +
|
||||
"LIMIT ?, ?";
|
||||
|
||||
stmt = conn.prepareStatement(sql);
|
||||
stmt.setInt(1, groupId);
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setInt(3, tenantId);
|
||||
//noinspection JpaQueryApiInspection
|
||||
stmt.setInt(4, request.getStartIndex());
|
||||
stmt.setInt(5, request.getRowCount());
|
||||
rs = stmt.executeQuery();
|
||||
devices = new ArrayList<>();
|
||||
while (rs.next()) {
|
||||
Device device = DeviceManagementDAOUtil.loadDevice(rs);
|
||||
devices.add(device);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new GroupManagementDAOException("Error occurred while retrieving information of all " +
|
||||
"registered devices", e);
|
||||
} finally {
|
||||
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -14,14 +14,12 @@
|
||||
* 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.service;
|
||||
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupUser;
|
||||
@ -190,7 +188,7 @@ public interface GroupManagementProviderService {
|
||||
* @return list of group devices
|
||||
* @throws GroupManagementException
|
||||
*/
|
||||
PaginationResult getDevices(int groupId, PaginationRequest request) throws GroupManagementException;
|
||||
List<Device> getDevices(int groupId, PaginationRequest request) throws GroupManagementException;
|
||||
|
||||
/**
|
||||
* This method is used to retrieve the device count of a given group.
|
||||
|
||||
@ -14,7 +14,6 @@
|
||||
* 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.service;
|
||||
|
||||
@ -26,7 +25,6 @@ import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
|
||||
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationRequest;
|
||||
import org.wso2.carbon.device.mgt.common.PaginationResult;
|
||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException;
|
||||
@ -427,7 +425,7 @@ public class GroupManagementProviderServiceImpl implements GroupManagementProvid
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public PaginationResult getDevices(int groupId, PaginationRequest request)
|
||||
public List<Device> getDevices(int groupId, PaginationRequest request)
|
||||
throws GroupManagementException {
|
||||
int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
|
||||
try {
|
||||
|
||||
@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.BeforeClass;
|
||||
import org.testng.annotations.Test;
|
||||
import org.wso2.carbon.device.mgt.common.Device;
|
||||
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
|
||||
import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup;
|
||||
import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest;
|
||||
@ -39,19 +40,14 @@ import java.util.List;
|
||||
public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
|
||||
private static final Log log = LogFactory.getLog(GroupPersistTests.class);
|
||||
GroupDAO groupDAO = GroupManagementDAOFactory.getGroupDAO();
|
||||
int groupId = -1;
|
||||
private GroupDAO groupDAO;
|
||||
|
||||
@BeforeClass
|
||||
@Override
|
||||
public void init() {
|
||||
try {
|
||||
public void init() throws Exception {
|
||||
initDataSource();
|
||||
} catch (Exception e) {
|
||||
String msg = "Error occurred while initializing data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
}
|
||||
groupDAO = GroupManagementDAOFactory.getGroupDAO();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -176,6 +172,68 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = {"updateGroupTest"})
|
||||
public void addDeviceToGroupTest() {
|
||||
Device initialTestDevice = TestDataHolder.initialTestDevice;
|
||||
try {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.addDevice(groupId, initialTestDevice.getId(), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
log.debug("Device added to group.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
String msg = "Error occurred while adding device '" + initialTestDevice.getName() + "'.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
|
||||
try {
|
||||
GroupManagementDAOFactory.openConnection();
|
||||
List<Device> groupedDevices = groupDAO.getDevices(groupId, TestDataHolder.SUPER_TENANT_ID);
|
||||
Assert.assertNotEquals(groupedDevices.size(), 0, "No device found");
|
||||
Assert.assertNotNull(groupedDevices.get(0), "Device is null");
|
||||
Assert.assertEquals(groupedDevices.get(0).getId(), initialTestDevice.getId(), "Device ids not matched");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
String msg = "Error occurred while retrieving group details.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred while opening a connection to the data source.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = {"addDeviceToGroupTest"})
|
||||
public void removeDeviceFromGroupTest() {
|
||||
Device initialTestDevice = TestDataHolder.initialTestDevice;
|
||||
try {
|
||||
GroupManagementDAOFactory.beginTransaction();
|
||||
groupDAO.removeDevice(groupId, initialTestDevice.getId(), TestDataHolder.SUPER_TENANT_ID);
|
||||
GroupManagementDAOFactory.commitTransaction();
|
||||
log.debug("Group added to database.");
|
||||
} catch (GroupManagementDAOException e) {
|
||||
GroupManagementDAOFactory.rollbackTransaction();
|
||||
String msg = "Error occurred while adding device '" + initialTestDevice.getName() + "'.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while initiating transaction.";
|
||||
log.error(msg, e);
|
||||
Assert.fail(msg, e);
|
||||
} finally {
|
||||
GroupManagementDAOFactory.closeConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dependsOnMethods = {"removeDeviceFromGroupTest"})
|
||||
public void deleteGroupTest() {
|
||||
DeviceGroup group = getGroupById(groupId);
|
||||
int groupId = 0;
|
||||
@ -201,4 +259,5 @@ public class GroupPersistTests extends BaseDeviceManagementTest {
|
||||
group = getGroupById(groupId);
|
||||
Assert.assertNull(group, "Group not deleted");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,29 +1,31 @@
|
||||
#
|
||||
# Copyright 2009 WSO2, Inc. (http://wso2.com)
|
||||
# Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# WSO2 Inc. 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.
|
||||
# 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.
|
||||
#
|
||||
|
||||
#
|
||||
# This is the log4j configuration file used by WSO2 Carbon
|
||||
#
|
||||
# IMPORTANT : Please do not remove or change the names of any
|
||||
# of the Appenders defined here. The layout pattern & log file
|
||||
# of the Appender defined here. The layout pattern & log file
|
||||
# can be changed using the WSO2 Carbon Management Console, and those
|
||||
# settings will override the settings in this file.
|
||||
#
|
||||
|
||||
log4j.rootLogger=INFO, STD_OUT
|
||||
log4j.rootLogger=DEBUG, STD_OUT
|
||||
|
||||
# Redirect log messages to console
|
||||
log4j.appender.STD_OUT=org.apache.log4j.ConsoleAppender
|
||||
|
||||
Loading…
Reference in New Issue
Block a user