From f4d0050270bb1f9b1545e8d8e0d38465c9738440 Mon Sep 17 00:00:00 2001 From: Rushdi Date: Fri, 27 May 2022 01:15:53 +0530 Subject: [PATCH] fix removing permission and organizing the code --- .../impl/DeviceManagementServiceImpl.java | 102 ++++++++++- .../wso2/carbon/device/mgt/common/Device.java | 4 + .../device/mgt/common/TrackerDeviceInfo.java | 8 +- .../device/mgt/common/TrackerGroupInfo.java | 8 +- .../mgt/common/TrackerPermissionInfo.java | 8 +- .../device/mgt/common/TrackerUserInfo.java | 8 +- .../TrackerAlreadyExistException.java | 24 +-- .../carbon/device/mgt/core/dao/DeviceDAO.java | 34 ++-- .../device/mgt/core/dao/TrackerDAO.java | 60 +++++-- .../dao/TrackerManagementDAOException.java | 24 +-- .../core/dao/TrackerManagementDAOFactory.java | 24 +-- .../dao/impl/device/GenericDeviceDAOImpl.java | 78 ++++++++- .../dao/impl/device/OracleDeviceDAOImpl.java | 77 ++++++++- .../impl/device/PostgreSQLDeviceDAOImpl.java | 77 ++++++++- .../impl/device/SQLServerDeviceDAOImpl.java | 75 +++++++++ .../core/dao/impl/tracker/TrackerDAOImpl.java | 153 +++++++++++------ .../dao/util/DeviceManagementDAOUtil.java | 16 ++ .../dao/util/TrackerManagementDAOUtil.java | 73 ++++++-- .../impl/DeviceInformationManagerImpl.java | 2 + .../DeviceManagementProviderService.java | 21 ++- .../DeviceManagementProviderServiceImpl.java | 49 +++++- .../traccar/api/service/TraccarClient.java | 24 ++- .../api/service/addons/TraccarClientImpl.java | 158 +++++++++++++----- .../impl/DeviceAPIClientServiceImpl.java | 45 ++++- .../common/TraccarHandlerConstants.java | 10 +- .../traccar/common/beans/TraccarUser.java | 1 + .../config/TraccarConfigurationException.java | 13 +- .../core/traccar/common/util/TraccarUtil.java | 19 +++ 28 files changed, 967 insertions(+), 228 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java index 572cdcf884..9fea7b108c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/java/org/wso2/carbon/device/mgt/jaxrs/service/impl/DeviceManagementServiceImpl.java @@ -42,6 +42,7 @@ import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.json.JSONException; import org.json.JSONObject; import org.wso2.carbon.context.CarbonContext; import org.wso2.carbon.context.PrivilegedCarbonContext; @@ -61,6 +62,8 @@ 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.TrackerDeviceInfo; +import org.wso2.carbon.device.mgt.common.TrackerPermissionInfo; import org.wso2.carbon.device.mgt.common.app.mgt.Application; import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; @@ -88,6 +91,7 @@ import org.wso2.carbon.device.mgt.common.search.PropertyMap; import org.wso2.carbon.device.mgt.common.search.SearchContext; import org.wso2.carbon.device.mgt.common.type.mgt.DeviceStatus; import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService; +import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOException; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException; import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager; import org.wso2.carbon.device.mgt.core.dto.DeviceType; @@ -99,6 +103,7 @@ import org.wso2.carbon.device.mgt.core.search.mgt.SearchMgtException; 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.traccar.api.service.impl.DeviceAPIClientServiceImpl; +import org.wso2.carbon.device.mgt.core.traccar.common.TraccarHandlerConstants; import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; import org.wso2.carbon.device.mgt.core.util.HttpReportingUtil; import org.wso2.carbon.device.mgt.jaxrs.beans.DeviceList; @@ -133,6 +138,11 @@ import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.ArrayList; +import java.util.Properties; +import java.util.concurrent.ExecutionException; @Path("/devices") public class DeviceManagementServiceImpl implements DeviceManagementService { @@ -475,12 +485,98 @@ public class DeviceManagementServiceImpl implements DeviceManagementService { String currentUser = CarbonContext.getThreadLocalCarbonContext().getUsername(); JSONObject obj = new JSONObject(DeviceAPIClientServiceImpl.returnUser(currentUser)); - log.info("================="); - log.info(obj.toString()); - log.info("=================="); if(obj.has("error")){ return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(obj.getString("error")).build(); }else{ + int userId = obj.getInt("id"); + List traccarValidIdList = new ArrayList<>(); + /*Get Device Id List*/ + try { + DeviceManagementProviderService dms = DeviceMgtAPIUtils.getDeviceManagementService(); + DeviceAccessAuthorizationService deviceAccessAuthorizationService = + DeviceMgtAPIUtils.getDeviceAccessAuthorizationService(); + PaginationRequest request = new PaginationRequest(0, 0); + PaginationResult result; + DeviceList devices = new DeviceList(); + List status = new ArrayList<>(); + status.add("ACTIVE"); + status.add("INACTIVE"); + status.add("CREATED"); + status.add("UNREACHABLE"); + boolean isStatusEmpty = true; + for (String statusString : status){ + if (StringUtils.isNotBlank(statusString)){ + isStatusEmpty = false; + break; + } + } + if (!isStatusEmpty) { + RequestValidationUtil.validateStatus(status); + request.setStatusList(status); + } + // this is the user who initiates the request + String authorizedUser = MultitenantUtils.getTenantAwareUsername(currentUser); + // check whether the user is device-mgt admin + if (!deviceAccessAuthorizationService.isDeviceAdminUser()) { + request.setOwner(authorizedUser); + } + + result = dms.getAllDevicesIds(request); + if (result == null || result.getData() == null || result.getData().isEmpty()) { + devices.setList(new ArrayList()); + devices.setCount(0); + }else{ + devices.setList((List) result.getData()); + devices.setCount(result.getRecordsTotal()); + } + + int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); + for(int i=0; i getAllUserDevices = + DeviceAPIClientServiceImpl.getUserIdofPermissionByUserIdNIdList(userId, traccarValidIdList); + for (TrackerPermissionInfo getAllUserDevice : getAllUserDevices) { + DeviceAPIClientServiceImpl.removeTrackerUserDevicePermission( + getAllUserDevice.getTraccarUserId(), + getAllUserDevice.getTraccarDeviceId(), + TraccarHandlerConstants.Types.REMOVE_TYPE_SINGLE); + } + + } catch (JSONException e){ + String msg = "not a JSONObject, "; + log.error(msg); + } catch (DeviceManagementException e) { + String msg = "Error occurred while fetching all enrolled devices"; + log.error(msg, e); + } catch (DeviceAccessAuthorizationException e) { + String msg = "Error occurred while checking device access authorization"; + log.error(msg, e); + } catch (TrackerManagementDAOException e) { + String msg = "Error occurred while mapping with deviceId ."; + log.error(msg, e); + } catch (ExecutionException e) { + log.error("ExecutionException : " + e); + } catch (InterruptedException e) { + log.error("InterruptedException : " + e); + } + /*Get Device Id List*/ + return Response.status(Response.Status.OK).entity(obj.getString("token")).build(); } }else{ diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Device.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Device.java index 840d155d44..cc35a55c9d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Device.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/Device.java @@ -129,6 +129,10 @@ public class Device implements Serializable { this.deviceStatusInfo = deviceStatusInfo; } + public Device(String deviceId) { + this.deviceIdentifier = deviceId; + } + public int getId() { return id; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerDeviceInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerDeviceInfo.java index 2dafe7a596..ad55f92429 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerDeviceInfo.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerDeviceInfo.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,11 +11,11 @@ * 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 + * 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; import java.io.Serializable; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerGroupInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerGroupInfo.java index 8c72251685..9f7e6b63de 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerGroupInfo.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerGroupInfo.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,11 +11,11 @@ * 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 + * 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; import java.io.Serializable; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerPermissionInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerPermissionInfo.java index cb91e44bcf..c8509efa29 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerPermissionInfo.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerPermissionInfo.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,11 +11,11 @@ * 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 + * 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; import java.io.Serializable; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerUserInfo.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerUserInfo.java index 96d5c5137e..4985c601fd 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerUserInfo.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/TrackerUserInfo.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,11 +11,11 @@ * 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 + * 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; import io.swagger.annotations.ApiModel; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/exceptions/TrackerAlreadyExistException.java b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/exceptions/TrackerAlreadyExistException.java index bf27865da9..bc7a92684f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/exceptions/TrackerAlreadyExistException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/src/main/java/org/wso2/carbon/device/mgt/common/exceptions/TrackerAlreadyExistException.java @@ -1,19 +1,19 @@ /* - * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * 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 + * 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 + * 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. */ package org.wso2.carbon.device.mgt.common.exceptions; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java index 8f23228bef..fcf414ff08 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/DeviceDAO.java @@ -16,21 +16,21 @@ * under the License. */ /* - * Copyright (c) 2020, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://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 + * 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 + * 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. */ package org.wso2.carbon.device.mgt.core.dao; @@ -301,6 +301,16 @@ public interface DeviceDAO { */ List getDeviceListWithoutPagination(int tenantId) throws DeviceManagementDAOException; + /** + * This method is used to retrieve the devices of a given tenant as a paginated result. + * + * @param request PaginationRequest object holding the data for pagination + * @param tenantId tenant id. + * @return returns paginated list of devices. + * @throws DeviceManagementDAOException + */ + List getDevicesIds(PaginationRequest request, int tenantId) throws DeviceManagementDAOException; + /** * This method is used to retrieve the devices of a given tenant as a paginated result, along the lines of * activeServerCount and serverIndex diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerDAO.java index e7a0d63594..3175b3018e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerDAO.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,17 +11,19 @@ * 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 + * 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.dao; import org.wso2.carbon.device.mgt.common.TrackerDeviceInfo; import org.wso2.carbon.device.mgt.common.TrackerGroupInfo; import org.wso2.carbon.device.mgt.common.TrackerPermissionInfo; +import java.util.List; + public interface TrackerDAO { /** @@ -36,12 +38,12 @@ public interface TrackerDAO { /** * get trackerDevice info. - * @param groupId of the device. + * @param deviceId of the device. * @param tenantId of the group. * @return Tracker Device Info. * @throws TrackerManagementDAOException */ - TrackerDeviceInfo getTrackerDevice(int groupId, int tenantId) throws TrackerManagementDAOException; + TrackerDeviceInfo getTrackerDevice(int deviceId, int tenantId) throws TrackerManagementDAOException; /** * update trackerDevice status and traccarDeviceId. @@ -49,7 +51,7 @@ public interface TrackerDAO { * @param deviceId of the device. * @param tenantId of the group. * @param status of the device. - * @return Tracker Device Info. + * @return boolean value. * @throws TrackerManagementDAOException */ Boolean updateTrackerDeviceIdANDStatus(int traccarDeviceId, int deviceId, int tenantId, int status) throws TrackerManagementDAOException; @@ -86,35 +88,61 @@ public interface TrackerDAO { /** * Remove a Group. - * @param id mapping table. + * @param id of groups. + * @return boolean value. * @throws TrackerManagementDAOException */ int removeTrackerGroup(int id) throws TrackerManagementDAOException; + /** + * get trackerGroup info. + * @param groupId of the device. + * @param tenantId of the group. + * @return Tracker Device Info. + * @throws TrackerManagementDAOException + */ + TrackerGroupInfo getTrackerGroup(int groupId, int tenantId) throws TrackerManagementDAOException; + /** * give permission to a user to view traccar device. * @param traccarUserId mapping table. * @param deviceId mapping table. + * @return boolean value. * @throws TrackerManagementDAOException */ Boolean addTrackerUserDevicePermission(int traccarUserId, int deviceId) throws TrackerManagementDAOException; /** * Remove a permission on viewing a device. - * @param deviceId mapping table. + * @param deviceId of permissions. + * @return boolean value. * @throws TrackerManagementDAOException */ - Boolean removeTrackerUserDevicePermission(int deviceId) throws TrackerManagementDAOException; + Boolean removeTrackerUserDevicePermission(int deviceId, int userId, int removeType) throws TrackerManagementDAOException; - TrackerPermissionInfo getUserIdofPermissionByDeviceId(int deviceId) throws TrackerManagementDAOException; + /** + * get list of userDevicePermissions by. + * @param deviceId of permissions. + * @return Tracker Permission Info. + * @throws TrackerManagementDAOException + */ + List getUserIdofPermissionByDeviceId(int deviceId) throws TrackerManagementDAOException; + /** + * get list of userDevicePermissions by. + * @param userId of permissions. + * @param NotInDeviceIdList list of permissions. + * @return Tracker Permission Info. + * @throws TrackerManagementDAOException + */ + List getUserIdofPermissionByUserIdNIdList(int userId, List NotInDeviceIdList) throws TrackerManagementDAOException; /** - * get trackerGroup info. - * @param groupId of the device. - * @param tenantId of the group. - * @return Tracker Device Info. + * get list of userDevicePermissions by. + * @param deviceId of permissions. + * @param userId of permissions. + * @return Tracker Permission Info. * @throws TrackerManagementDAOException */ - TrackerGroupInfo getTrackerGroup(int groupId, int tenantId) throws TrackerManagementDAOException; + Boolean getUserIdofPermissionByDeviceIdNUserId(int deviceId, int userId) throws TrackerManagementDAOException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOException.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOException.java index 96d81dedbf..bb0f3cc2a2 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOException.java @@ -1,19 +1,19 @@ /* - * Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * 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 + * 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 + * 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. */ package org.wso2.carbon.device.mgt.core.dao; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOFactory.java index 0c0a44f20c..1839425b25 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOFactory.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/TrackerManagementDAOFactory.java @@ -1,19 +1,19 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * 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 + * 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 + * 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. */ package org.wso2.carbon.device.mgt.core.dao; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java index 9e9da57149..542a7a2a07 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/GenericDeviceDAOImpl.java @@ -188,6 +188,7 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl { } } + //Return only not removed id list @Override public List getDeviceListWithoutPagination(int tenantId) throws DeviceManagementDAOException { @@ -217,7 +218,82 @@ public class GenericDeviceDAOImpl extends AbstractDeviceDAOImpl { } @Override - public List getAllocatedDevices(PaginationRequest request, int tenantId, int activeServerCount, int serverIndex) + public List getDevicesIds(PaginationRequest request, int tenantId) + throws DeviceManagementDAOException { + Connection conn; + List devices = null; + String owner = request.getOwner(); + boolean isOwnerProvided = false; + String ownership = request.getOwnership(); + boolean isOwnershipProvided = false; + List statusList = request.getStatusList(); + boolean isStatusProvided = false; + + try { + conn = getConnection(); + String sql = "SELECT " + + "d1.ID AS DEVICE_ID, " + + "d1.DEVICE_IDENTIFICATION, " + + "e.STATUS, " + + "e.OWNER, " + + "e.IS_TRANSFERRED, " + + "e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, " + + "(SELECT d.ID, " + + "d.DEVICE_IDENTIFICATION " + + "FROM DM_DEVICE d WHERE d.TENANT_ID = ?) d1 " + + "WHERE d1.ID = e.DEVICE_ID AND e.TENANT_ID = ? "; + //Add the query for ownership + if (ownership != null && !ownership.isEmpty()) { + sql = sql + " AND e.OWNERSHIP = ?"; + isOwnershipProvided = true; + } + //Add the query for owner + if (owner != null && !owner.isEmpty()) { + sql = sql + " AND e.OWNER = ?"; + isOwnerProvided = true; + } + if (statusList != null && !statusList.isEmpty()) { + sql += buildStatusQuery(statusList); + isStatusProvided = true; + } + + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + stmt.setInt(paramIdx++, tenantId); + if (isOwnershipProvided) { + stmt.setString(paramIdx++, ownership); + } + if (isOwnerProvided) { + stmt.setString(paramIdx++, owner); + } + if (isStatusProvided) { + for (String status : statusList) { + stmt.setString(paramIdx++, status); + } + } + + try (ResultSet rs = stmt.executeQuery()) { + devices = new ArrayList<>(); + while (rs.next()) { + Device device = DeviceManagementDAOUtil.loadDeviceIds(rs); + devices.add(device); + } + return devices; + } + } + } catch (SQLException e) { + String msg = "Error occurred while retrieving information of all " + + "registered devices"; + log.error(msg, e); + throw new DeviceManagementDAOException(msg, e); + } + } + + @Override + public List getAllocatedDevices(PaginationRequest request, int tenantId, + int activeServerCount, int serverIndex) throws DeviceManagementDAOException { List devices; String deviceType = request.getDeviceType(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java index beef6f1542..49b4f88c2a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/OracleDeviceDAOImpl.java @@ -188,6 +188,81 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl { } } + //Return only not removed id list + @Override + public List getDevicesIds(PaginationRequest request, int tenantId) + throws DeviceManagementDAOException { + Connection conn; + List devices = null; + String owner = request.getOwner(); + boolean isOwnerProvided = false; + String ownership = request.getOwnership(); + boolean isOwnershipProvided = false; + List statusList = request.getStatusList(); + boolean isStatusProvided = false; + + try { + conn = getConnection(); + String sql = "SELECT " + + "d1.ID AS DEVICE_ID, " + + "d1.DEVICE_IDENTIFICATION, " + + "e.STATUS, " + + "e.OWNER, " + + "e.IS_TRANSFERRED, " + + "e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, " + + "(SELECT d.ID, " + + "d.DEVICE_IDENTIFICATION " + + "FROM DM_DEVICE d WHERE d.TENANT_ID = ?) d1 " + + "WHERE d1.ID = e.DEVICE_ID AND e.TENANT_ID = ? "; + //Add the query for ownership + if (ownership != null && !ownership.isEmpty()) { + sql = sql + " AND e.OWNERSHIP = ?"; + isOwnershipProvided = true; + } + //Add the query for owner + if (owner != null && !owner.isEmpty()) { + sql = sql + " AND e.OWNER = ?"; + isOwnerProvided = true; + } + if (statusList != null && !statusList.isEmpty()) { + sql += buildStatusQuery(statusList); + isStatusProvided = true; + } + + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + stmt.setInt(paramIdx++, tenantId); + if (isOwnershipProvided) { + stmt.setString(paramIdx++, ownership); + } + if (isOwnerProvided) { + stmt.setString(paramIdx++, owner); + } + if (isStatusProvided) { + for (String status : statusList) { + stmt.setString(paramIdx++, status); + } + } + + try (ResultSet rs = stmt.executeQuery()) { + devices = new ArrayList<>(); + while (rs.next()) { + Device device = DeviceManagementDAOUtil.loadDeviceIds(rs); + devices.add(device); + } + return devices; + } + } + } catch (SQLException e) { + String msg = "Error occurred while retrieving information of all " + + "registered devices"; + log.error(msg, e); + throw new DeviceManagementDAOException(msg, e); + } + } + @Override public List getDeviceListWithoutPagination(int tenantId) throws DeviceManagementDAOException { return null; @@ -195,7 +270,7 @@ public class OracleDeviceDAOImpl extends AbstractDeviceDAOImpl { @Override public List getAllocatedDevices(PaginationRequest request, int tenantId, - int activeServerCount, int serverIndex) + int activeServerCount, int serverIndex) throws DeviceManagementDAOException { Connection conn; List devices = null; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java index eb358004ab..133464a633 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/PostgreSQLDeviceDAOImpl.java @@ -179,6 +179,81 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl { } } + //Return only not removed id list + @Override + public List getDevicesIds(PaginationRequest request, int tenantId) + throws DeviceManagementDAOException { + Connection conn; + List devices = null; + String owner = request.getOwner(); + boolean isOwnerProvided = false; + String ownership = request.getOwnership(); + boolean isOwnershipProvided = false; + List statusList = request.getStatusList(); + boolean isStatusProvided = false; + + try { + conn = getConnection(); + String sql = "SELECT " + + "d1.ID AS DEVICE_ID, " + + "d1.DEVICE_IDENTIFICATION, " + + "e.STATUS, " + + "e.OWNER, " + + "e.IS_TRANSFERRED, " + + "e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, " + + "(SELECT d.ID, " + + "d.DEVICE_IDENTIFICATION " + + "FROM DM_DEVICE d WHERE d.TENANT_ID = ?) d1 " + + "WHERE d1.ID = e.DEVICE_ID AND e.TENANT_ID = ? "; + //Add the query for ownership + if (ownership != null && !ownership.isEmpty()) { + sql = sql + " AND e.OWNERSHIP = ?"; + isOwnershipProvided = true; + } + //Add the query for owner + if (owner != null && !owner.isEmpty()) { + sql = sql + " AND e.OWNER = ?"; + isOwnerProvided = true; + } + if (statusList != null && !statusList.isEmpty()) { + sql += buildStatusQuery(statusList); + isStatusProvided = true; + } + + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + stmt.setInt(paramIdx++, tenantId); + if (isOwnershipProvided) { + stmt.setString(paramIdx++, ownership); + } + if (isOwnerProvided) { + stmt.setString(paramIdx++, owner); + } + if (isStatusProvided) { + for (String status : statusList) { + stmt.setString(paramIdx++, status); + } + } + + try (ResultSet rs = stmt.executeQuery()) { + devices = new ArrayList<>(); + while (rs.next()) { + Device device = DeviceManagementDAOUtil.loadDeviceIds(rs); + devices.add(device); + } + return devices; + } + } + } catch (SQLException e) { + String msg = "Error occurred while retrieving information of all " + + "registered devices"; + log.error(msg, e); + throw new DeviceManagementDAOException(msg, e); + } + } + @Override public List getDeviceListWithoutPagination(int tenantId) throws DeviceManagementDAOException { return null; @@ -186,7 +261,7 @@ public class PostgreSQLDeviceDAOImpl extends AbstractDeviceDAOImpl { @Override public List getAllocatedDevices(PaginationRequest request, int tenantId, - int activeServerCount, int serverIndex) + int activeServerCount, int serverIndex) throws DeviceManagementDAOException { Connection conn; List devices = null; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java index f9e087e64e..7686ada7ea 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/device/SQLServerDeviceDAOImpl.java @@ -189,6 +189,81 @@ public class SQLServerDeviceDAOImpl extends AbstractDeviceDAOImpl { } } + //Return only not removed id list + @Override + public List getDevicesIds(PaginationRequest request, int tenantId) + throws DeviceManagementDAOException { + Connection conn; + List devices = null; + String owner = request.getOwner(); + boolean isOwnerProvided = false; + String ownership = request.getOwnership(); + boolean isOwnershipProvided = false; + List statusList = request.getStatusList(); + boolean isStatusProvided = false; + + try { + conn = getConnection(); + String sql = "SELECT " + + "d1.ID AS DEVICE_ID, " + + "d1.DEVICE_IDENTIFICATION, " + + "e.STATUS, " + + "e.OWNER, " + + "e.IS_TRANSFERRED, " + + "e.ID AS ENROLMENT_ID " + + "FROM DM_ENROLMENT e, " + + "(SELECT d.ID, " + + "d.DEVICE_IDENTIFICATION " + + "FROM DM_DEVICE d WHERE d.TENANT_ID = ?) d1 " + + "WHERE d1.ID = e.DEVICE_ID AND e.TENANT_ID = ? "; + //Add the query for ownership + if (ownership != null && !ownership.isEmpty()) { + sql = sql + " AND e.OWNERSHIP = ?"; + isOwnershipProvided = true; + } + //Add the query for owner + if (owner != null && !owner.isEmpty()) { + sql = sql + " AND e.OWNER = ?"; + isOwnerProvided = true; + } + if (statusList != null && !statusList.isEmpty()) { + sql += buildStatusQuery(statusList); + isStatusProvided = true; + } + + try (PreparedStatement stmt = conn.prepareStatement(sql)) { + int paramIdx = 1; + stmt.setInt(paramIdx++, tenantId); + stmt.setInt(paramIdx++, tenantId); + if (isOwnershipProvided) { + stmt.setString(paramIdx++, ownership); + } + if (isOwnerProvided) { + stmt.setString(paramIdx++, owner); + } + if (isStatusProvided) { + for (String status : statusList) { + stmt.setString(paramIdx++, status); + } + } + + try (ResultSet rs = stmt.executeQuery()) { + devices = new ArrayList<>(); + while (rs.next()) { + Device device = DeviceManagementDAOUtil.loadDeviceIds(rs); + devices.add(device); + } + return devices; + } + } + } catch (SQLException e) { + String msg = "Error occurred while retrieving information of all " + + "registered devices"; + log.error(msg, e); + throw new DeviceManagementDAOException(msg, e); + } + } + @Override public List getDeviceListWithoutPagination(int tenantId) throws DeviceManagementDAOException { return null; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/tracker/TrackerDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/tracker/TrackerDAOImpl.java index 01b533a240..0be2d2a798 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/tracker/TrackerDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/impl/tracker/TrackerDAOImpl.java @@ -1,7 +1,7 @@ /* - * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * WSO2 Inc. licenses this file to you under the Apache License, + * 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 @@ -11,11 +11,11 @@ * 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 + * 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.dao.impl.tracker; import org.wso2.carbon.device.mgt.common.TrackerDeviceInfo; @@ -25,16 +25,20 @@ import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.TrackerDAO; import org.wso2.carbon.device.mgt.core.dao.util.TrackerManagementDAOUtil; +import org.wso2.carbon.device.mgt.core.traccar.common.TraccarHandlerConstants; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; public class TrackerDAOImpl implements TrackerDAO { @Override - public Boolean addTrackerDevice(int traccarDeviceId, int deviceId, int tenantId) throws TrackerManagementDAOException { + public Boolean addTrackerDevice(int traccarDeviceId, int deviceId, int tenantId) + throws TrackerManagementDAOException { PreparedStatement stmt = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); @@ -47,14 +51,15 @@ public class TrackerDAOImpl implements TrackerDAO { return true; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while adding traccar device mapping", e); + throw new TrackerManagementDAOException("Error occurred while adding on trackerDevice mapping table", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); } } @Override - public Boolean updateTrackerDeviceIdANDStatus(int traccarDeviceId, int deviceId, int tenantId, int status) throws TrackerManagementDAOException { + public Boolean updateTrackerDeviceIdANDStatus(int traccarDeviceId, int deviceId, int tenantId, int status) + throws TrackerManagementDAOException { PreparedStatement stmt = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); @@ -68,7 +73,7 @@ public class TrackerDAOImpl implements TrackerDAO { return true; } catch (SQLException e) { - String msg = "Error occurred while updating trackerDevice mapping table"; + String msg = "Error occurred while updating status on trackerDevice mapping table"; throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); @@ -93,7 +98,7 @@ public class TrackerDAOImpl implements TrackerDAO { } return status; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while removing trackerDevice", e); + throw new TrackerManagementDAOException("Error occurred while removing on trackerDevice table", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); } @@ -113,18 +118,19 @@ public class TrackerDAOImpl implements TrackerDAO { stmt.setInt(2, tenantId); rs = stmt.executeQuery(); if (rs.next()) { - trackerDeviceInfo = this.loadTrackerDevice(rs); + trackerDeviceInfo = TrackerManagementDAOUtil.loadTrackerDevice(rs); } return trackerDeviceInfo; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while retrieving the trackerDevice information ", e); + throw new TrackerManagementDAOException("Error occurred while retrieving data from the trackerDevice table ", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, rs); } } @Override - public Boolean addTrackerGroup(int traccarGroupId, int groupId, int tenantId) throws TrackerManagementDAOException { + public Boolean addTrackerGroup(int traccarGroupId, int groupId, int tenantId) + throws TrackerManagementDAOException { PreparedStatement stmt = null; int status = 1 ; try { @@ -139,7 +145,7 @@ public class TrackerDAOImpl implements TrackerDAO { return true; } catch (SQLException e) { - String msg = "Error occurred while adding traccar group mapping"; + String msg = "Error occurred while adding on traccarGroup mapping table"; throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); @@ -147,7 +153,8 @@ public class TrackerDAOImpl implements TrackerDAO { } @Override - public Boolean updateTrackerGroupIdANDStatus(int traccarGroupId, int groupId, int tenantId, int status) throws TrackerManagementDAOException { + public Boolean updateTrackerGroupIdANDStatus(int traccarGroupId, int groupId, int tenantId, int status) + throws TrackerManagementDAOException { PreparedStatement stmt = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); @@ -161,7 +168,7 @@ public class TrackerDAOImpl implements TrackerDAO { return true; } catch (SQLException e) { - String msg = "Error occurred while updating traccar group mapping table"; + String msg = "Error occurred while updating status on traccarGroup mapping table"; throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); @@ -185,7 +192,7 @@ public class TrackerDAOImpl implements TrackerDAO { } return status; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while removing traccar group", e); + throw new TrackerManagementDAOException("Error occurred while removing from traccarGroup mapping table", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); } @@ -205,18 +212,19 @@ public class TrackerDAOImpl implements TrackerDAO { stmt.setInt(2, tenantId); rs = stmt.executeQuery(); if (rs.next()) { - trackerGroupInfo = this.loadTrackerGroup(rs); + trackerGroupInfo = TrackerManagementDAOUtil.loadTrackerGroup(rs); } return trackerGroupInfo; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while retrieving the traccar group information ", e); + throw new TrackerManagementDAOException("Error occurred while retrieving data from the traccarGroup mapping table ", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, rs); } } @Override - public Boolean addTrackerUserDevicePermission(int traccarUserId, int deviceId) throws TrackerManagementDAOException { + public Boolean addTrackerUserDevicePermission(int traccarUserId, int deviceId) + throws TrackerManagementDAOException { PreparedStatement stmt = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); @@ -228,78 +236,121 @@ public class TrackerDAOImpl implements TrackerDAO { return true; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while adding traccar user device mapping", e); + throw new TrackerManagementDAOException("Error occurred while adding permission on permissions mapping table", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); } } @Override - public Boolean removeTrackerUserDevicePermission(int deviceId) throws TrackerManagementDAOException { + public Boolean removeTrackerUserDevicePermission(int deviceId, int userId, int removeType) + throws TrackerManagementDAOException { PreparedStatement stmt = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); - String sql = "DELETE FROM DM_EXT_PERMISSION_MAPPING WHERE TRACCAR_DEVICE_ID=?"; + String sql = "DELETE FROM DM_EXT_PERMISSION_MAPPING WHERE TRACCAR_DEVICE_ID = ?"; + if(removeType != TraccarHandlerConstants.Types.REMOVE_TYPE_MULTIPLE){ + sql = sql + " AND TRACCAR_USER_ID = ? "; + } stmt = conn.prepareStatement(sql); stmt.setInt(1, deviceId); + if(removeType != TraccarHandlerConstants.Types.REMOVE_TYPE_MULTIPLE){ + stmt.setInt(2, userId); + } stmt.execute(); return true; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while removing traccar user device permission mapping", e); + throw new TrackerManagementDAOException("Error occurred while removing permission from permissions mapping table", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, null); } } @Override - public TrackerPermissionInfo getUserIdofPermissionByDeviceId(int deviceId) throws TrackerManagementDAOException { + public List getUserIdofPermissionByDeviceId(int deviceId) + throws TrackerManagementDAOException { PreparedStatement stmt = null; ResultSet rs = null; - TrackerPermissionInfo trackerPermissionInfo = null; + List trackerPermissionInfo = null; try { Connection conn = TrackerManagementDAOFactory.getConnection(); String sql = "SELECT TRACCAR_DEVICE_ID, TRACCAR_USER_ID FROM DM_EXT_PERMISSION_MAPPING WHERE " + - "TRACCAR_DEVICE_ID = ? ORDER BY TRACCAR_DEVICE_ID DESC LIMIT 1"; + "TRACCAR_DEVICE_ID = ? ORDER BY TRACCAR_DEVICE_ID ASC"; stmt = conn.prepareStatement(sql); stmt.setInt(1, deviceId); rs = stmt.executeQuery(); - if (rs.next()) { - trackerPermissionInfo = this.loadPermission(rs); + trackerPermissionInfo = new ArrayList<>(); + while (rs.next()) { + TrackerPermissionInfo loadPermission = TrackerManagementDAOUtil.loadPermission(rs); + trackerPermissionInfo.add(loadPermission); } return trackerPermissionInfo; } catch (SQLException e) { - throw new TrackerManagementDAOException("Error occurred while retrieving the traccar group information ", e); + throw new TrackerManagementDAOException("Error occurred while retrieving permissions data from permissions mapping table ", e); } finally { TrackerManagementDAOUtil.cleanupResources(stmt, rs); } } + @Override + public List getUserIdofPermissionByUserIdNIdList(int userId, List NotInDeviceIdList) + throws TrackerManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + List trackerPermissionInfo = null; + try { + Connection conn = TrackerManagementDAOFactory.getConnection(); + String sql = "SELECT TRACCAR_DEVICE_ID, TRACCAR_USER_ID FROM DM_EXT_PERMISSION_MAPPING WHERE " + + "TRACCAR_USER_ID = ? "; + if(NotInDeviceIdList!=null && (!NotInDeviceIdList.isEmpty())){ + sql += TrackerManagementDAOUtil.buildDeviceIdNotInQuery(NotInDeviceIdList); + } + sql += " ORDER BY TRACCAR_USER_ID ASC"; - private TrackerGroupInfo loadTrackerGroup(ResultSet rs) throws SQLException { - TrackerGroupInfo trackerGroupInfo = new TrackerGroupInfo(); - trackerGroupInfo.setId(rs.getInt("ID")); - trackerGroupInfo.setTraccarGroupId(rs.getInt("TRACCAR_GROUP_ID")); - trackerGroupInfo.setGroupId(rs.getInt("GROUP_ID")); - trackerGroupInfo.setTenantId(rs.getInt("TENANT_ID")); - trackerGroupInfo.setStatus(rs.getInt("STATUS")); - return trackerGroupInfo; + stmt = conn.prepareStatement(sql); + int paramIdx = 1; + stmt.setInt(paramIdx++, userId); + if(NotInDeviceIdList!=null && (!NotInDeviceIdList.isEmpty())){ + for (int id : NotInDeviceIdList) { + stmt.setInt(paramIdx++, id); + } + } + rs = stmt.executeQuery(); + trackerPermissionInfo = new ArrayList<>(); + while (rs.next()) { + TrackerPermissionInfo loadPermission = TrackerManagementDAOUtil.loadPermission(rs); + trackerPermissionInfo.add(loadPermission); + } + return trackerPermissionInfo; + } catch (SQLException e) { + String msg = "Error occurred while retrieving data from the permissions mapping table "; + throw new TrackerManagementDAOException(msg, e); + } finally { + TrackerManagementDAOUtil.cleanupResources(stmt, rs); + } } - private TrackerDeviceInfo loadTrackerDevice(ResultSet rs) throws SQLException { - TrackerDeviceInfo trackerDeviceInfo = new TrackerDeviceInfo(); - trackerDeviceInfo.setId(rs.getInt("ID")); - trackerDeviceInfo.setTraccarDeviceId(rs.getInt("TRACCAR_DEVICE_ID")); - trackerDeviceInfo.setDeviceId(rs.getInt("DEVICE_ID")); - trackerDeviceInfo.setTenantId(rs.getInt("TENANT_ID")); - trackerDeviceInfo.setStatus(rs.getInt("STATUS")); - return trackerDeviceInfo; - } + @Override + public Boolean getUserIdofPermissionByDeviceIdNUserId(int deviceId, int userId) throws TrackerManagementDAOException { + PreparedStatement stmt = null; + ResultSet rs = null; + TrackerPermissionInfo trackerPermissionInfo = null; + try { + Connection conn = TrackerManagementDAOFactory.getConnection(); + String sql = "SELECT TRACCAR_DEVICE_ID, TRACCAR_USER_ID FROM DM_EXT_PERMISSION_MAPPING WHERE " + + "TRACCAR_DEVICE_ID = ? AND TRACCAR_USER_ID = ? ORDER BY TRACCAR_DEVICE_ID DESC"; + stmt = conn.prepareStatement(sql); + stmt.setInt(1, deviceId); + stmt.setInt(2, userId); - private TrackerPermissionInfo loadPermission(ResultSet rs) throws SQLException { - TrackerPermissionInfo trackerPermissionInfo = new TrackerPermissionInfo(); - trackerPermissionInfo.setTraccarUserId(rs.getInt("TRACCAR_USER_ID")); - trackerPermissionInfo.setTraccarDeviceId(rs.getInt("TRACCAR_DEVICE_ID")); - return trackerPermissionInfo; + rs = stmt.executeQuery(); + return rs.next(); + } catch (SQLException e) { + throw new TrackerManagementDAOException("Error occurred while retrieving permissions data from permissions mapping table ", e); + } finally { + TrackerManagementDAOUtil.cleanupResources(stmt, rs); + } } + } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java index 1f031e7c4e..91b549d9e6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/DeviceManagementDAOUtil.java @@ -173,6 +173,14 @@ public final class DeviceManagementDAOUtil { return enrolmentInfo; } + public static EnrolmentInfo loadEnrolmentStatus(ResultSet rs) throws SQLException { + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); + enrolmentInfo.setId(rs.getInt("ENROLMENT_ID")); + enrolmentInfo.setTransferred(rs.getBoolean("IS_TRANSFERRED")); + enrolmentInfo.setStatus(EnrolmentInfo.Status.valueOf(rs.getString("STATUS"))); + return enrolmentInfo; + } + public static EnrolmentInfo loadMatchingEnrolment(ResultSet rs) throws SQLException { Map enrolmentInfos = new HashMap<>(); EnrolmentInfo enrolmentInfo = loadEnrolment(rs); @@ -218,6 +226,14 @@ public final class DeviceManagementDAOUtil { return device; } + public static Device loadDeviceIds(ResultSet rs) throws SQLException { + Device device = new Device(); + device.setId(rs.getInt("DEVICE_ID")); + device.setDeviceIdentifier(rs.getString("DEVICE_IDENTIFICATION")); + device.setEnrolmentInfo(loadEnrolmentStatus(rs)); + return device; + } + public static DeviceBilling loadDeviceBilling(ResultSet rs) throws SQLException { DeviceBilling device = new DeviceBilling(); device.setId(rs.getInt("ID")); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/TrackerManagementDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/TrackerManagementDAOUtil.java index 7aab01a40a..117b994762 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/TrackerManagementDAOUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/dao/util/TrackerManagementDAOUtil.java @@ -14,28 +14,32 @@ * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. + */ +/* Copyright (c) 2022, Entgra (pvt) Ltd. (http://entgra.io) All Rights Reserved. * - * Copyright (c) 2021, Entgra (pvt) Ltd. (https://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 + * 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 + * 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. */ package org.wso2.carbon.device.mgt.core.dao.util; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.device.mgt.common.TrackerDeviceInfo; +import org.wso2.carbon.device.mgt.common.TrackerGroupInfo; +import org.wso2.carbon.device.mgt.common.TrackerPermissionInfo; +import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOException; import javax.naming.InitialContext; import javax.sql.DataSource; @@ -43,6 +47,8 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Hashtable; +import java.util.List; +import java.util.StringJoiner; /** * This class represents utilities required to work with group management data @@ -81,8 +87,7 @@ public final class TrackerManagementDAOUtil { * @param jndiProperties Hash table of JNDI Properties * @return datasource looked */ - public static DataSource lookupDataSource(String dataSourceName, - final Hashtable jndiProperties) { + public static DataSource lookupDataSource(String dataSourceName, final Hashtable jndiProperties) { try { if (jndiProperties == null || jndiProperties.isEmpty()) { return (DataSource) InitialContext.doLookup(dataSourceName); @@ -93,4 +98,42 @@ public final class TrackerManagementDAOUtil { throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e); } } + + public static TrackerGroupInfo loadTrackerGroup(ResultSet rs) throws SQLException { + TrackerGroupInfo trackerGroupInfo = new TrackerGroupInfo(); + trackerGroupInfo.setId(rs.getInt("ID")); + trackerGroupInfo.setTraccarGroupId(rs.getInt("TRACCAR_GROUP_ID")); + trackerGroupInfo.setGroupId(rs.getInt("GROUP_ID")); + trackerGroupInfo.setTenantId(rs.getInt("TENANT_ID")); + trackerGroupInfo.setStatus(rs.getInt("STATUS")); + return trackerGroupInfo; + } + + public static TrackerDeviceInfo loadTrackerDevice(ResultSet rs) throws SQLException { + TrackerDeviceInfo trackerDeviceInfo = new TrackerDeviceInfo(); + trackerDeviceInfo.setId(rs.getInt("ID")); + trackerDeviceInfo.setTraccarDeviceId(rs.getInt("TRACCAR_DEVICE_ID")); + trackerDeviceInfo.setDeviceId(rs.getInt("DEVICE_ID")); + trackerDeviceInfo.setTenantId(rs.getInt("TENANT_ID")); + trackerDeviceInfo.setStatus(rs.getInt("STATUS")); + return trackerDeviceInfo; + } + + public static TrackerPermissionInfo loadPermission(ResultSet rs) throws SQLException { + TrackerPermissionInfo trackerPermissionInfo = new TrackerPermissionInfo(); + trackerPermissionInfo.setTraccarUserId(rs.getInt("TRACCAR_USER_ID")); + trackerPermissionInfo.setTraccarDeviceId(rs.getInt("TRACCAR_DEVICE_ID")); + return trackerPermissionInfo; + } + + public static String buildDeviceIdNotInQuery(List DeviceIdList) throws TrackerManagementDAOException { + if (DeviceIdList == null || DeviceIdList.isEmpty()) { + String msg = "SQL query build for Device Id list failed. Device Id list cannot be empty or null"; + throw new TrackerManagementDAOException(msg); + } + StringJoiner joiner = new StringJoiner(",", " AND TRACCAR_DEVICE_ID NOT IN(", ")"); + DeviceIdList.stream().map(status -> "?").forEach(joiner::add); + + return joiner.toString(); + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java index 438f118b2d..a5bc8b4096 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/device/details/mgt/impl/DeviceInformationManagerImpl.java @@ -399,6 +399,8 @@ public class DeviceInformationManagerImpl implements DeviceInformationManager { log.error("InterruptedException : " + e); //throw new RuntimeException(e); } + }else{ + log.info("location publishing is disabled and traccan disabled"); } //Tracker update GPS Location diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java index 851bb3050c..a84deb8894 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java @@ -67,7 +67,6 @@ import org.wso2.carbon.device.mgt.core.dto.DeviceType; import org.wso2.carbon.device.mgt.core.dto.DeviceTypeVersion; import org.wso2.carbon.device.mgt.common.geo.service.GeoCluster; -import java.io.IOException; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Collection; @@ -187,6 +186,16 @@ public interface DeviceManagementProviderService { */ PaginationResult getAllDevices(PaginationRequest request) throws DeviceManagementException; + /** + * Method to retrieve all the devices with pagination support. + * + * @param request PaginationRequest object holding the data for pagination + * @return PaginationResult - Result including the required parameters necessary to do pagination. + * @throws DeviceManagementException If some unusual behaviour is observed while fetching the + * devices. + */ + PaginationResult getAllDevicesIds(PaginationRequest request) throws DeviceManagementException; + /** * Method to retrieve all the devices with pagination support. * @@ -220,6 +229,16 @@ public interface DeviceManagementProviderService { + /** + * Method to retrieve all the devices with pagination support. + * + * @param request PaginationRequest object holding the data for pagination + * @return PaginationResult - Result including the required parameters necessary to do pagination. + * @throws DeviceManagementException If some unusual behaviour is observed while fetching the + * devices. + */ + PaginationResult getAllDevicesIdList(PaginationRequest request) throws DeviceManagementException; + /** * Returns the device of specified id. * diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java index 4488f4da3a..53cab62fc0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java @@ -32,6 +32,7 @@ * specific language governing permissions and limitations * under the License. */ + package org.wso2.carbon.device.mgt.core.service; import com.google.common.reflect.TypeToken; @@ -173,7 +174,6 @@ import java.util.Properties; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; - public class DeviceManagementProviderServiceImpl implements DeviceManagementProviderService, PluginInitializationListener { @@ -1226,6 +1226,11 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv return paginationResult; } + @Override + public PaginationResult getAllDevicesIds(PaginationRequest request) throws DeviceManagementException { + return this.getAllDevicesIdList(request); + } + @Override public PaginationResult getAllDevices(PaginationRequest request, boolean requireDeviceInfo) throws DeviceManagementException { if (request == null) { @@ -1286,6 +1291,48 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv return paginationResult; } + @Override + public PaginationResult getAllDevicesIdList(PaginationRequest request) throws DeviceManagementException { + if (request == null) { + String msg = "Received incomplete pagination request for method getAllDevicesIdList"; + log.error(msg); + throw new DeviceManagementException(msg); + } + if (log.isDebugEnabled()) { + log.debug("Get devices with pagination " + request.toString()); + } + PaginationResult paginationResult = new PaginationResult(); + List allDevices; + int count = 0; + int tenantId = this.getTenantId(); + DeviceManagerUtil.validateDeviceListPageSize(request); + + try { + DeviceManagementDAOFactory.openConnection(); + allDevices = deviceDAO.getDevicesIds(request, tenantId); + count = deviceDAO.getDeviceCount(request, tenantId); + } catch (DeviceManagementDAOException e) { + String msg = "Error occurred while retrieving device list pertaining to the current tenant"; + 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); + } catch (Exception e) { + String msg = "Error occurred in getAllDevices"; + log.error(msg, e); + throw new DeviceManagementException(msg, e); + } finally { + DeviceManagementDAOFactory.closeConnection(); + } + paginationResult.setData(allDevices); + + paginationResult.setRecordsFiltered(count); + paginationResult.setRecordsTotal(count); + return paginationResult; + } + @Override public Device getDevice(DeviceIdentifier deviceId, boolean requireDeviceInfo) throws DeviceManagementException { if (deviceId == null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/TraccarClient.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/TraccarClient.java index c44162a30a..c74db398ac 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/TraccarClient.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/TraccarClient.java @@ -19,25 +19,29 @@ package org.wso2.carbon.device.mgt.core.traccar.api.service; -import org.json.JSONObject; +import org.wso2.carbon.device.mgt.common.TrackerDeviceInfo; +import org.wso2.carbon.device.mgt.common.TrackerPermissionInfo; import org.wso2.carbon.device.mgt.common.exceptions.TrackerAlreadyExistException; +import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOException; import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarDevice; import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarGroups; import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarPosition; import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarUser; import org.wso2.carbon.device.mgt.core.traccar.common.config.TraccarConfigurationException; +import java.sql.SQLException; +import java.util.List; import java.util.concurrent.ExecutionException; public interface TraccarClient { - String fetchAllDevices() throws TraccarConfigurationException, ExecutionException, InterruptedException; + //String fetchDevicesByUniqueId(String uniqueId) throws ExecutionException, InterruptedException; void addDevice(TraccarDevice deviceInfo, int tenantId) throws - TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException; + TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException, TrackerManagementDAOException; void updateLocation(TraccarDevice device, TraccarPosition deviceInfo, int tenantId) throws - TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException; + TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException, TrackerManagementDAOException; void disEnrollDevice(int traccarDeviceId, int tenantId) throws TraccarConfigurationException; @@ -49,9 +53,15 @@ public interface TraccarClient { void deleteGroup(int traccarGroupId, int tenantId) throws TraccarConfigurationException, ExecutionException, InterruptedException; - void setPermission(int userId, int deviceId) throws TraccarConfigurationException, ExecutionException, InterruptedException; + void setPermission(int userId, int deviceId) throws TrackerManagementDAOException, ExecutionException, InterruptedException; + + void removePermission(int userId, int deviceId, int removeType) throws ExecutionException, InterruptedException; + + List getUserIdofPermissionByUserIdNIdList(int userId, List NotInDeviceIdList) throws TrackerManagementDAOException; + + boolean getUserIdofPermissionByDeviceIdNUserId(int deviceId, int userId) throws TraccarConfigurationException, SQLException, TrackerManagementDAOException; - void removePermission(int userId, int deviceId) throws TraccarConfigurationException, ExecutionException, InterruptedException; + TrackerDeviceInfo getTrackerDevice(int deviceId, int tenantId) throws TraccarConfigurationException, SQLException, TrackerManagementDAOException; String fetchAllUsers() throws TraccarConfigurationException, ExecutionException, InterruptedException; @@ -61,5 +71,5 @@ public interface TraccarClient { String updateUser(TraccarUser traccarUser, int userId) throws ExecutionException, InterruptedException; - String returnUser(String userName) throws TraccarConfigurationException; + String returnUser(String userName) throws TraccarConfigurationException, TrackerManagementDAOException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/addons/TraccarClientImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/addons/TraccarClientImpl.java index 7b3458bbcf..09c9f4c69d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/addons/TraccarClientImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/addons/TraccarClientImpl.java @@ -55,6 +55,7 @@ import java.sql.SQLException; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; +import java.util.List; import java.util.Objects; import java.util.Random; import java.util.concurrent.Callable; @@ -114,7 +115,13 @@ public class TraccarClientImpl implements TraccarClient { requestBody = RequestBody.create(payload.toString(), MediaType.parse("application/json; charset=utf-8")); builder = builder.put(requestBody); }else if(Objects.equals(method, TraccarHandlerConstants.Methods.DELETE)){ - builder = builder.delete(); + log.info("publisherUrlWithContext - " + publisherUrlWithContext); + if(publisherUrlWithContext.indexOf("permission") !=-1){ + requestBody = RequestBody.create(payload.toString(), MediaType.parse("application/json; charset=utf-8")); + builder = builder.delete(requestBody); + }else{ + builder = builder.delete(); + } } request = builder.url(endpoint+publisherUrlWithContext).addHeader(authorization, authorizationKey).build(); @@ -150,7 +157,7 @@ public class TraccarClientImpl implements TraccarClient { return TraccarHandlerConstants.Types.USER_NOT_FOUND; } - public String returnUser(String userName) throws TraccarConfigurationException{ + public String returnUser(String userName) throws TrackerManagementDAOException{ try{ String result = DeviceAPIClientServiceImpl.fetchUserInfo(userName); Date today = new Date(); @@ -227,7 +234,7 @@ public class TraccarClientImpl implements TraccarClient { return result; } - public void setPermission(int userId, int deviceId) throws TraccarConfigurationException, ExecutionException, InterruptedException { + public void setPermission(int userId, int deviceId) throws ExecutionException, InterruptedException, TrackerManagementDAOException { JSONObject payload = new JSONObject(); payload.put("userId", userId); payload.put("deviceId", deviceId); @@ -247,12 +254,12 @@ public class TraccarClientImpl implements TraccarClient { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred while mapping with deviceId ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } catch (TransactionManagementException e) { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred establishing the DB connection ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOFactory.closeConnection(); } @@ -261,7 +268,7 @@ public class TraccarClientImpl implements TraccarClient { } } - public void removePermission(int userId, int deviceId) throws TraccarConfigurationException, ExecutionException, InterruptedException { + public void removePermission(int userId, int deviceId, int removeType) throws ExecutionException, InterruptedException { JSONObject payload = new JSONObject(); payload.put("userId", userId); payload.put("deviceId", deviceId); @@ -276,32 +283,76 @@ public class TraccarClientImpl implements TraccarClient { if(result!=null){ try { TrackerManagementDAOFactory.beginTransaction(); - trackerDAO.removeTrackerUserDevicePermission(deviceId); + trackerDAO.removeTrackerUserDevicePermission(deviceId, userId, removeType); TrackerManagementDAOFactory.commitTransaction(); } catch (TrackerManagementDAOException e) { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred while mapping with deviceId ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + //throw new TraccarConfigurationException(msg, e); } catch (TransactionManagementException e) { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred establishing the DB connection ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + //throw new TraccarConfigurationException(msg, e); } finally { TrackerManagementDAOFactory.closeConnection(); } } } - public String fetchAllDevices() throws ExecutionException, InterruptedException { - String method = TraccarHandlerConstants.Methods.GET; - String url = defaultPort+"/api/devices"; + public List getUserIdofPermissionByUserIdNIdList(int userId, List NotInDeviceIdList) throws TrackerManagementDAOException { + try { + TrackerManagementDAOFactory.openConnection(); + return trackerDAO.getUserIdofPermissionByUserIdNIdList(userId, NotInDeviceIdList); + } catch (TrackerManagementDAOException e) { + TrackerManagementDAOFactory.rollbackTransaction(); + String msg = "Error occurred while mapping with deviceId ."; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } catch (SQLException e) { + String msg = "Error occurred establishing the DB connection ."; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } finally { + TrackerManagementDAOFactory.closeConnection(); + } + } - Future result = executor.submit(new OkHttpClientThreadPool(url, null, method)); - String res = result.get(); - //executor.shutdown(); - return res; + public TrackerDeviceInfo getTrackerDevice(int deviceId, int tenantId) throws TrackerManagementDAOException { + try { + TrackerManagementDAOFactory.openConnection(); + return trackerDAO.getTrackerDevice(deviceId, tenantId); + } catch (SQLException e) { + String msg = "Error occurred establishing the DB connection ."; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } catch (TrackerManagementDAOException e) { + String msg="Could not add new device location"; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } finally{ + TrackerManagementDAOFactory.closeConnection(); + } + } + + public boolean getUserIdofPermissionByDeviceIdNUserId(int deviceId, int userId) throws TrackerManagementDAOException { + Boolean result = false; + try { + TrackerManagementDAOFactory.openConnection(); + result = trackerDAO.getUserIdofPermissionByDeviceIdNUserId(deviceId, userId); + } catch (TrackerManagementDAOException e) { + String msg = "Error occurred while mapping with deviceId ."; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } catch (SQLException e) { + String msg = "Error occurred establishing the DB connection ."; + log.error(msg, e); + throw new TrackerManagementDAOException(msg, e); + } finally { + TrackerManagementDAOFactory.closeConnection(); + } + return result; } /** @@ -311,7 +362,7 @@ public class TraccarClientImpl implements TraccarClient { * @throws TraccarConfigurationException Failed while add Traccar Device the operation */ public void addDevice(TraccarDevice traccarDevice, int tenantId) throws - TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException { + TrackerAlreadyExistException, ExecutionException, InterruptedException, TrackerManagementDAOException { TrackerDeviceInfo trackerDeviceInfo = null; try { TrackerManagementDAOFactory.openConnection(); @@ -324,11 +375,11 @@ public class TraccarClientImpl implements TraccarClient { } catch (TrackerManagementDAOException e) { String msg = "Error occurred while mapping with deviceId ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } catch (SQLException e) { String msg = "Error occurred establishing the DB connection ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOFactory.closeConnection(); } @@ -341,11 +392,14 @@ public class TraccarClientImpl implements TraccarClient { Future res = executor.submit(new OkHttpClientThreadPool(url, payload, method)); String result = res.get(); + log.info("---------res--------" + result); if(result.charAt(0)=='{'){ JSONObject obj = new JSONObject(result); if (obj.has("id")){ int traccarDeviceId = obj.getInt("id"); int deviceId = traccarDevice.getId(); + log.info("TraccarDeviceId - " + traccarDeviceId); + log.info("DeviceId - " + deviceId); try { TrackerManagementDAOFactory.beginTransaction(); trackerDAO.addTrackerDevice(traccarDeviceId, deviceId, tenantId); @@ -358,12 +412,12 @@ public class TraccarClientImpl implements TraccarClient { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred while mapping with deviceId ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } catch (TransactionManagementException e) { TrackerManagementDAOFactory.rollbackTransaction(); String msg = "Error occurred establishing the DB connection ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } finally { TrackerManagementDAOFactory.closeConnection(); } @@ -380,7 +434,7 @@ public class TraccarClientImpl implements TraccarClient { * Add Device GPS Location operation. * @param deviceInfo with DeviceIdentifier, Timestamp, Lat, Lon, Bearing, Speed, ignition */ - public void updateLocation(TraccarDevice device, TraccarPosition deviceInfo, int tenantId) throws TraccarConfigurationException, TrackerAlreadyExistException, ExecutionException, InterruptedException { + public void updateLocation(TraccarDevice device, TraccarPosition deviceInfo, int tenantId) throws TrackerManagementDAOException, TrackerAlreadyExistException, ExecutionException, InterruptedException { TrackerDeviceInfo trackerDeviceInfo = null; try { TrackerManagementDAOFactory.openConnection(); @@ -388,11 +442,11 @@ public class TraccarClientImpl implements TraccarClient { } catch (SQLException e) { String msg = "Error occurred establishing the DB connection ."; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } catch (TrackerManagementDAOException e) { String msg="Could not add new device location"; log.error(msg, e); - throw new TraccarConfigurationException(msg, e); + throw new TrackerManagementDAOException(msg, e); } finally{ TrackerManagementDAOFactory.closeConnection(); } @@ -421,21 +475,25 @@ public class TraccarClientImpl implements TraccarClient { */ public void disEnrollDevice(int deviceId, int tenantId) throws TraccarConfigurationException { TrackerDeviceInfo trackerDeviceInfo = null; - TrackerPermissionInfo trackerPermissionInfo = null; - JSONObject trackerDevice = null; - + List trackerPermissionInfo = null; + //JSONObject trackerDevice = null; + try { TrackerManagementDAOFactory.beginTransaction(); trackerDeviceInfo = trackerDAO.getTrackerDevice(deviceId, tenantId); + + log.info("------deviceId-----" + deviceId); + log.info(trackerDeviceInfo); + log.info(new Gson().toJson(trackerDeviceInfo)); + log.info(trackerDeviceInfo.getDeviceId()); + log.info(trackerDeviceInfo.getTraccarDeviceId()); if(trackerDeviceInfo!=null){ - trackerDevice = new JSONObject(trackerDeviceInfo); - trackerDAO.removeTrackerDevice(deviceId, tenantId); + //trackerDevice = new JSONObject(trackerDeviceInfo); + int status = trackerDAO.removeTrackerDevice(deviceId, tenantId); + log.info("Status" + status); TrackerManagementDAOFactory.commitTransaction(); - log.error(trackerDevice.getInt("traccarDeviceId")); - trackerPermissionInfo = trackerDAO.getUserIdofPermissionByDeviceId(trackerDevice.getInt("traccarDeviceId")); - log.error(trackerPermissionInfo); - log.error(new Gson().toJson(trackerPermissionInfo)); + trackerPermissionInfo = trackerDAO.getUserIdofPermissionByDeviceId(trackerDeviceInfo.getTraccarDeviceId()); } } catch (TransactionManagementException e) { TrackerManagementDAOFactory.rollbackTransaction(); @@ -451,24 +509,32 @@ public class TraccarClientImpl implements TraccarClient { TrackerManagementDAOFactory.closeConnection(); } + log.info("__________________"); + log.info(new Gson().toJson(trackerPermissionInfo)); + log.info(trackerPermissionInfo.get(0)); + log.info(new Gson().toJson(trackerPermissionInfo.get(0))); + log.info("__________________"); //Delete from traccar - if(trackerDevice!=null){ + if(trackerDeviceInfo!=null){ String method = TraccarHandlerConstants.Methods.DELETE; - String url = defaultPort+"/api/devices/"+trackerDevice.getInt("traccarDeviceId"); + String url = defaultPort+"/api/devices/"+trackerPermissionInfo.get(0).getTraccarDeviceId(); + //executor.submit(new OkHttpClientThreadPool(url, null, method)); + executor.submit(new OkHttpClientThreadPool(url, null, method)); //executor.shutdown(); - //remove permissions - if(trackerPermissionInfo!=null){ - try { - removePermission(trackerPermissionInfo.getTraccarUserId(),trackerDevice.getInt("traccarDeviceId")); - } catch (ExecutionException e) { - log.error("ExecutionException : " + e); - //throw new RuntimeException(e); - } catch (InterruptedException e) { - log.error("InterruptedException : " + e); - //throw new RuntimeException(e); - } + //remove permissions + try { + removePermission( + trackerPermissionInfo.get(0).getTraccarUserId(), + trackerPermissionInfo.get(0).getTraccarDeviceId(), + TraccarHandlerConstants.Types.REMOVE_TYPE_MULTIPLE); + } catch (ExecutionException e) { + log.error("ExecutionException : " + e); + //throw new RuntimeException(e); + } catch (InterruptedException e) { + log.error("InterruptedException : " + e); + //throw new RuntimeException(e); } } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/impl/DeviceAPIClientServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/impl/DeviceAPIClientServiceImpl.java index 9b41a1f8b4..a8d4ee85ce 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/impl/DeviceAPIClientServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/api/service/impl/DeviceAPIClientServiceImpl.java @@ -23,9 +23,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.json.JSONObject; import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.TrackerDeviceInfo; +import org.wso2.carbon.device.mgt.common.TrackerPermissionInfo; import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation; import org.wso2.carbon.device.mgt.common.group.mgt.DeviceGroup; import org.wso2.carbon.device.mgt.common.exceptions.TrackerAlreadyExistException; +import org.wso2.carbon.device.mgt.core.dao.TrackerManagementDAOException; import org.wso2.carbon.device.mgt.core.traccar.api.service.DeviceAPIClientService; import org.wso2.carbon.device.mgt.core.traccar.api.service.addons.TraccarClientImpl; import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarDevice; @@ -35,6 +38,7 @@ import org.wso2.carbon.device.mgt.core.traccar.common.beans.TraccarUser; import org.wso2.carbon.device.mgt.core.traccar.common.config.TraccarConfigurationException; import java.util.Date; +import java.util.List; import java.util.concurrent.ExecutionException; public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { @@ -49,7 +53,7 @@ public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { "", ""); try { client.addDevice(traccarDevice, tenantId); - } catch (TraccarConfigurationException e) { + } catch (TrackerManagementDAOException e) { String msg = "Error occurred while mapping with deviceId"; log.error(msg, e); } catch (TrackerAlreadyExistException e) { @@ -71,7 +75,7 @@ public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { "", ""); try { client.updateLocation(traccarDevice, traccarPosition, tenantId); - } catch (TraccarConfigurationException e) { + } catch (TrackerManagementDAOException e) { String msg = "Error occurred while mapping with deviceId"; log.error(msg, e); }catch (TrackerAlreadyExistException e) { @@ -109,20 +113,31 @@ public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { client.deleteGroup(groupId, tenantId); } - public static String fetchUserInfo(String userName) throws - TraccarConfigurationException, ExecutionException, InterruptedException { + public static String fetchUserInfo(String userName) throws ExecutionException, InterruptedException { TraccarClientImpl client = new TraccarClientImpl(); return client.fetchUserInfo(userName); } + public static TrackerDeviceInfo getTrackerDevice(int deviceId, int tenantId) throws + TrackerManagementDAOException { + TraccarClientImpl client = new TraccarClientImpl(); + return client.getTrackerDevice(deviceId, tenantId); + } + + public static boolean getUserIdofPermissionByDeviceIdNUserId(int deviceId, int userId) throws + TrackerManagementDAOException { + TraccarClientImpl client = new TraccarClientImpl(); + return client.getUserIdofPermissionByDeviceIdNUserId(deviceId, userId); + } + public static String createUser(TraccarUser traccarUser) throws - TraccarConfigurationException, ExecutionException, InterruptedException { + TrackerManagementDAOException, ExecutionException, InterruptedException { TraccarClientImpl client = new TraccarClientImpl(); return client.createUser(traccarUser); } public static String updateUser(TraccarUser traccarUser, int userId) throws - TraccarConfigurationException, ExecutionException, InterruptedException { + TrackerManagementDAOException, ExecutionException, InterruptedException { TraccarClientImpl client = new TraccarClientImpl(); return client.updateUser(traccarUser, userId); } @@ -131,7 +146,7 @@ public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { TraccarClientImpl client = new TraccarClientImpl(); try { return client.returnUser(userName); - } catch (TraccarConfigurationException e) { + } catch (TrackerManagementDAOException e) { JSONObject obj = new JSONObject(); String msg = "Error occurred while creating a user: "+ e; obj.put("error", msg); @@ -139,6 +154,22 @@ public class DeviceAPIClientServiceImpl implements DeviceAPIClientService { } } + public static void addTrackerUserDevicePermission(int userId, int deviceId) throws + TrackerManagementDAOException, ExecutionException, InterruptedException { + TraccarClientImpl client = new TraccarClientImpl(); + client.setPermission(userId, deviceId); + } + + public static void removeTrackerUserDevicePermission(int userId, int deviceId, int removeType) throws TrackerManagementDAOException, ExecutionException, InterruptedException { + TraccarClientImpl client = new TraccarClientImpl(); + client.removePermission(userId, deviceId, removeType); + } + + public static List getUserIdofPermissionByUserIdNIdList(int userId, List NotInDeviceIdList) throws TrackerManagementDAOException { + TraccarClientImpl client = new TraccarClientImpl(); + return client.getUserIdofPermissionByUserIdNIdList(userId, NotInDeviceIdList); + } + public static String generateRandomString(int len) { TraccarClientImpl client = new TraccarClientImpl(); return client.generateRandomString(len); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/TraccarHandlerConstants.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/TraccarHandlerConstants.java index 7b40c63007..453fb5290f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/TraccarHandlerConstants.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/TraccarHandlerConstants.java @@ -44,18 +44,12 @@ public class TraccarHandlerConstants { public static final String USER = "USER"; public static final String PERMISSION = "PERMISSION"; - public static final String USER_CREATE = "USER_CREATE"; - public static final String USER_CREATE_WITH_INSERT_DEVICE = "USER_CREATE_WITH_INSERT_DEVICE"; - public static final String USER_UPDATE = "USER_UPDATE"; - public static final String USER_UPDATE_WITH_INSERT_DEVICE = "USER_UPDATE_WITH_INSERT_DEVICE"; - public static final String USER_SEARCH = "USER_SEARCH"; - public static final String FETCH_ALL_USERS = "FETCH_ALL_USERS"; - public static final String FETCH_ALL_DEVICES = "FETCH_ALL_DEVICES"; - public static final String USER_NOT_FOUND = "USER_NOT_FOUND"; public static final int DEFAULT_RANDOM = 10; public static final int TRACCAR_TOKEN = 32; + public static final int REMOVE_TYPE_MULTIPLE = -1; + public static final int REMOVE_TYPE_SINGLE = 1; } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/beans/TraccarUser.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/beans/TraccarUser.java index 551658be72..37557ef094 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/beans/TraccarUser.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/beans/TraccarUser.java @@ -16,6 +16,7 @@ * under the License. * */ + package org.wso2.carbon.device.mgt.core.traccar.common.beans; import java.io.Serializable; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/config/TraccarConfigurationException.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/config/TraccarConfigurationException.java index 748f6e0f79..ba60114041 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/config/TraccarConfigurationException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/config/TraccarConfigurationException.java @@ -1,17 +1,18 @@ /* - * Copyright (c) 2020, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved. + * Copyright (C) 2018 - 2022 Entgra (Pvt) Ltd, Inc - 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. + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.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 + * https://entgra.io/licenses/entgra-commercial/1.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 + * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/util/TraccarUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/util/TraccarUtil.java index 9147ccc106..95aea15585 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/util/TraccarUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/traccar/common/util/TraccarUtil.java @@ -1,3 +1,22 @@ +/* + * Copyright (C) 2018 - 2022 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.traccar.common.util; import org.json.JSONObject;