diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml
index 6439eab85e..050e9089cf 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/src/main/webapp/META-INF/permissions.xml
@@ -30,379 +30,385 @@
-
- Device Management
- /device-mgt
- /
- GET
-
-
-
- Device Management Admin
- /device-mgt/admin
- /
- GET
-
-
- Devices
- /device-mgt/admin/devices
- /
- GET
-
-
-
- List devices
- /device-mgt/admin/devices/List
- /devices
- GET
-
-
- Search devices
- /device-mgt/admin/devices/Search
- /devices/search-devices
- POST
-
-
- View device
- /device-mgt/admin/devices/View
- /devices/*/*
- GET
-
-
- View device applications
- /device-mgt/admin/devices/View-Applications
- /devices/*/*/applications
- GET
-
-
- View device effective-policy
- /device-mgt/admin/devices/View-Active-Policy
- /devices/*/*/effective-policy
- GET
-
-
- View devices feature
- /device-mgt/admin/devices/View-Features
- /devices/*/*/features
- GET
-
-
- View device operations
- /device-mgt/admin/devices/View-Operations
- /devices/*/*/operations
- GET
-
-
- View Compliance Data
- /device-mgt/admin/devices/View-Compliance-Data
- /devices/*/*/compliance-data
- GET
-
-
- List all devices
- /device-mgt/admin/devices/Admin-View
- /admin/devices
- GET
-
-
- View device types
- /device-mgt/admin/devices/Admin-DeviceType-View
- /admin/device-types
- GET
-
-
-
- Policies
- /device-mgt/admin/policies
- /
- GET
-
-
-
- List policies
- /device-mgt/admin/policies/List
- /policies
- GET
-
-
- Add Policy
- /device-mgt/admin/policies/Add
- /policies
- POST
-
-
- Activate policy
- /device-mgt/admin/policies/Activate-Policy
- /policies/activate-policy
- PUT
-
-
- Deactivate Policy
- /device-mgt/admin/policies/Deactivate-Policy
- /policies/deactivate-policy
- PUT
-
-
- Remove Policy
- /device-mgt/admin/policies/Remove
- /policies/remove-policy
- POST
-
-
- View Policy
- /device-mgt/admin/policies/View
- /policies/*
- GET
-
-
- Update Policy
- /device-mgt/admin/policies/Update
- /policies/*
- PUT
-
-
- Update Policy
- /device-mgt/admin/policies/Update
- /policies/apply-changes
- PUT
-
-
- Update Policy
- /device-mgt/admin/policies/Change-Priority
- /policies/priorities
- PUT
-
-
-
- Notifications
- /device-mgt/admin/notifications
- /
- GET
-
-
-
- View notifications
- /device-mgt/admin/notifications/View
- /notifications
- GET
-
-
- Mark checked notifications
- /device-mgt/admin/notifications/View
- /notifications/*/mark-checked
- PUT
-
-
-
- Users
- /device-mgt/admin/users
- /
- GET
-
-
-
- List users
- /device-mgt/admin/users/List
- /users
- GET
-
-
- Add user
- /device-mgt/admin/users/Add
- /users
- POST
-
-
- List users
- /device-mgt/admin/users/Search
- /users/search/usernames
- GET
-
-
- Remove user
- /device-mgt/admin/users/Remove
- /users/*
- DELETE
-
-
- View user
- /device-mgt/admin/users/View
- /users/*
- GET
-
-
- Update user
- /device-mgt/admin/users/Update
- /users/*
- PUT
-
-
- Update user credentials
- /device-mgt/admin/users/Change-Password
- /users/*/credentials
- PUT
-
-
- View assigned role
- /device-mgt/admin/roles/Assigned-Roles
- /users/*/roles
- GET
-
-
- Change any user credentials
- /device-mgt/admin/users/Change-Password-Any
- /admin/users/*/credentials
- POST
-
-
- Send invitation mail
- /device-mgt/admin/users/Send-invitations
- /users/send-invitation
- POST
-
-
-
- Roles
- /device-mgt/admin/roles
- /
- GET
-
-
-
- List roles
- /device-mgt/admin/roles/List
- /roles
- GET
-
-
- Add role
- /device-mgt/admin/roles/Add
- /roles
- POST
-
-
- Remove role
- /device-mgt/admin/roles/Remove
- /roles/*
- DELETE
-
-
- View role
- /device-mgt/admin/roles/View
- /roles/*
- GET
-
-
- Update role
- /device-mgt/admin/roles/Update
- /roles/*
- PUT
-
-
- View role permissions
- /device-mgt/admin/roles/View-Permission
- /roles/*/permissions
- GET
-
-
- Add Users to role
- /device-mgt/admin/roles/Add-Users
- /roles/*/users
- PUT
-
-
-
- Configurations
- /device-mgt/admin/general-configs
- /
- GET
-
-
-
- View configuration
- /device-mgt/admin/general-configuration/View
- /configuration
- GET
-
-
- Update configuration
- /device-mgt/admin/general-configuration/Update
- /configuration
- PUT
-
-
-
- Activities
- /device-mgt/admin/activities
- /
- GET
-
-
-
- View Activities
- /device-mgt/admin/activities/View
- /activities
- GET
-
-
- View Activity Details
- /device-mgt/admin/activities/View
- /activities/*
- GET
-
-
-
- Applications
- /device-mgt/admin/applications
- /
- GET
-
-
-
- Install Applications
- /device-mgt/admin/application/Install
- /admin/applications/install-application
- POST
-
-
- Uninstall-Applications
- /device-mgt/admin/application/Uninstall
- /admin/applications/uninstall-application
- POST
-
-
-
-
-
- Device Management User
- /device-mgt/user
- /
- GET
-
-
- User Devices
- /device-mgt/user/devices
- /
- GET
-
-
- User Policies
- /device-mgt/user/policies
- /
- GET
-
-
- User Notifications
- /device-mgt/user/notifications
- /
- GET
-
-
- User Operations
- /device-mgt/user/operations
- /
- GET
-
-
+
+ Device Management
+ /device-mgt
+ /
+ GET
+
+
+
+ Device Management Admin
+ /device-mgt/admin
+ /
+ GET
+
+
+ Devices
+ /device-mgt/admin/devices
+ /
+ GET
+
+
+
+ List devices
+ /device-mgt/admin/devices/List
+ /devices
+ GET
+
+
+ Search devices
+ /device-mgt/admin/devices/Search
+ /devices/search-devices
+ POST
+
+
+ View device
+ /device-mgt/admin/devices/View
+ /devices/*/*
+ GET
+
+
+ View device info
+ /device-mgt/admin/devices/View
+ /devices/*/*/info
+ GET
+
+
+ View device applications
+ /device-mgt/admin/devices/View-Applications
+ /devices/*/*/applications
+ GET
+
+
+ View device effective-policy
+ /device-mgt/admin/devices/View-Active-Policy
+ /devices/*/*/effective-policy
+ GET
+
+
+ View devices feature
+ /device-mgt/admin/devices/View-Features
+ /devices/*/*/features
+ GET
+
+
+ View device operations
+ /device-mgt/admin/devices/View-Operations
+ /devices/*/*/operations
+ GET
+
+
+ View Compliance Data
+ /device-mgt/admin/devices/View-Compliance-Data
+ /devices/*/*/compliance-data
+ GET
+
+
+ List all devices
+ /device-mgt/admin/devices/Admin-View
+ /admin/devices
+ GET
+
+
+ View device types
+ /device-mgt/admin/devices/Admin-DeviceType-View
+ /admin/device-types
+ GET
+
+
+
+ Policies
+ /device-mgt/admin/policies
+ /
+ GET
+
+
+
+ List policies
+ /device-mgt/admin/policies/List
+ /policies
+ GET
+
+
+ Add Policy
+ /device-mgt/admin/policies/Add
+ /policies
+ POST
+
+
+ Activate policy
+ /device-mgt/admin/policies/Activate-Policy
+ /policies/activate-policy
+ PUT
+
+
+ Deactivate Policy
+ /device-mgt/admin/policies/Deactivate-Policy
+ /policies/deactivate-policy
+ PUT
+
+
+ Remove Policy
+ /device-mgt/admin/policies/Remove
+ /policies/remove-policy
+ POST
+
+
+ View Policy
+ /device-mgt/admin/policies/View
+ /policies/*
+ GET
+
+
+ Update Policy
+ /device-mgt/admin/policies/Update
+ /policies/*
+ PUT
+
+
+ Update Policy
+ /device-mgt/admin/policies/Update
+ /policies/apply-changes
+ PUT
+
+
+ Update Policy
+ /device-mgt/admin/policies/Change-Priority
+ /policies/priorities
+ PUT
+
+
+
+ Notifications
+ /device-mgt/admin/notifications
+ /
+ GET
+
+
+
+ View notifications
+ /device-mgt/admin/notifications/View
+ /notifications
+ GET
+
+
+ Mark checked notifications
+ /device-mgt/admin/notifications/View
+ /notifications/*/mark-checked
+ PUT
+
+
+
+ Users
+ /device-mgt/admin/users
+ /
+ GET
+
+
+
+ List users
+ /device-mgt/admin/users/List
+ /users
+ GET
+
+
+ Add user
+ /device-mgt/admin/users/Add
+ /users
+ POST
+
+
+ List users
+ /device-mgt/admin/users/Search
+ /users/search/usernames
+ GET
+
+
+ Remove user
+ /device-mgt/admin/users/Remove
+ /users/*
+ DELETE
+
+
+ View user
+ /device-mgt/admin/users/View
+ /users/*
+ GET
+
+
+ Update user
+ /device-mgt/admin/users/Update
+ /users/*
+ PUT
+
+
+ Update user credentials
+ /device-mgt/admin/users/Change-Password
+ /users/*/credentials
+ PUT
+
+
+ View assigned role
+ /device-mgt/admin/roles/Assigned-Roles
+ /users/*/roles
+ GET
+
+
+ Change any user credentials
+ /device-mgt/admin/users/Change-Password-Any
+ /admin/users/*/credentials
+ POST
+
+
+ Send invitation mail
+ /device-mgt/admin/users/Send-invitations
+ /users/send-invitation
+ POST
+
+
+
+ Roles
+ /device-mgt/admin/roles
+ /
+ GET
+
+
+
+ List roles
+ /device-mgt/admin/roles/List
+ /roles
+ GET
+
+
+ Add role
+ /device-mgt/admin/roles/Add
+ /roles
+ POST
+
+
+ Remove role
+ /device-mgt/admin/roles/Remove
+ /roles/*
+ DELETE
+
+
+ View role
+ /device-mgt/admin/roles/View
+ /roles/*
+ GET
+
+
+ Update role
+ /device-mgt/admin/roles/Update
+ /roles/*
+ PUT
+
+
+ View role permissions
+ /device-mgt/admin/roles/View-Permission
+ /roles/*/permissions
+ GET
+
+
+ Add Users to role
+ /device-mgt/admin/roles/Add-Users
+ /roles/*/users
+ PUT
+
+
+
+ Configurations
+ /device-mgt/admin/general-configs
+ /
+ GET
+
+
+
+ View configuration
+ /device-mgt/admin/general-configuration/View
+ /configuration
+ GET
+
+
+ Update configuration
+ /device-mgt/admin/general-configuration/Update
+ /configuration
+ PUT
+
+
+
+ Activities
+ /device-mgt/admin/activities
+ /
+ GET
+
+
+
+ View Activities
+ /device-mgt/admin/activities/View
+ /activities
+ GET
+
+
+ View Activity Details
+ /device-mgt/admin/activities/View
+ /activities/*
+ GET
+
+
+
+ Applications
+ /device-mgt/admin/applications
+ /
+ GET
+
+
+
+ Install Applications
+ /device-mgt/admin/application/Install
+ /admin/applications/install-application
+ POST
+
+
+ Uninstall-Applications
+ /device-mgt/admin/application/Uninstall
+ /admin/applications/uninstall-application
+ POST
+
+
+
+
+
+ Device Management User
+ /device-mgt/user
+ /
+ GET
+
+
+ User Devices
+ /device-mgt/user/devices
+ /
+ GET
+
+
+ User Policies
+ /device-mgt/user/policies
+ /
+ GET
+
+
+ User Notifications
+ /device-mgt/user/notifications
+ /
+ GET
+
+
+ User Operations
+ /device-mgt/user/operations
+ /
+ GET
+
+
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationManagementDAOFactory.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationManagementDAOFactory.java
index 20e8543cb4..d280dd643e 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationManagementDAOFactory.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/NotificationManagementDAOFactory.java
@@ -20,11 +20,13 @@ package org.wso2.carbon.device.mgt.core.notification.mgt.dao;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
import org.wso2.carbon.device.mgt.common.IllegalTransactionStateException;
import org.wso2.carbon.device.mgt.common.TransactionManagementException;
+import org.wso2.carbon.device.mgt.common.UnsupportedDatabaseEngineException;
import org.wso2.carbon.device.mgt.core.config.datasource.DataSourceConfig;
import org.wso2.carbon.device.mgt.core.config.datasource.JNDILookupDefinition;
-import org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl.NotificationDAOImpl;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl.*;
import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
import javax.sql.DataSource;
@@ -39,21 +41,48 @@ import java.util.List;
public class NotificationManagementDAOFactory {
private static DataSource dataSource;
+ private static String databaseEngine;
private static final Log log = LogFactory.getLog(NotificationManagementDAOFactory.class);
private static ThreadLocal currentConnection = new ThreadLocal();
public static NotificationDAO getNotificationDAO() {
- return new NotificationDAOImpl();
+ if (databaseEngine != null) {
+ switch (databaseEngine) {
+ case DeviceManagementConstants.DataBaseTypes.DB_TYPE_ORACLE:
+ return new OracleNotificationDAOImpl();
+ case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MSSQL:
+ return new SQLServerNotificationDAOImpl();
+ case DeviceManagementConstants.DataBaseTypes.DB_TYPE_POSTGRESQL:
+ return new PostgreSQLNotificationDAOImpl();
+ case DeviceManagementConstants.DataBaseTypes.DB_TYPE_H2:
+ case DeviceManagementConstants.DataBaseTypes.DB_TYPE_MYSQL:
+ return new GenericNotificationDAOImpl();
+ default:
+ throw new UnsupportedDatabaseEngineException("Unsupported database engine : " + databaseEngine);
+ }
+ }
+ throw new IllegalStateException("Database engine has not initialized properly.");
}
public static void init(DataSourceConfig config) {
dataSource = resolveDataSource(config);
+ try {
+ databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
+ } catch (SQLException e) {
+ log.error("Error occurred while retrieving config.datasource connection", e);
+ }
}
public static void init(DataSource dtSource) {
dataSource = dtSource;
+ try {
+ databaseEngine = dataSource.getConnection().getMetaData().getDatabaseProductName();
+ } catch (SQLException e) {
+ log.error("Error occurred while retrieving config.datasource connection", e);
+ }
}
+
public static void beginTransaction() throws TransactionManagementException {
Connection conn = currentConnection.get();
if (conn != null) {
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java
index 0f16103c6d..96c47cf0d2 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/AbstractNotificationDAOImpl.java
@@ -35,7 +35,7 @@ import java.util.List;
/**
* Implementation of NotificationDAO which includes the methods to do CRUD operations on notification.
*/
-public abstract class NotificationDAOImpl implements NotificationDAO {
+public abstract class AbstractNotificationDAOImpl implements NotificationDAO {
@Override
public int addNotification(int deviceId, int tenantId,
@@ -87,7 +87,7 @@ public abstract class NotificationDAOImpl implements NotificationDAO {
rs = stmt.executeQuery();
while (rs.next()) {
- notification = this.getNotification(rs);
+ notification = NotificationDAOUtil.getNotification(rs);
}
} catch (SQLException e) {
throw new NotificationManagementException(
@@ -165,7 +165,7 @@ public abstract class NotificationDAOImpl implements NotificationDAO {
rs = stmt.executeQuery();
notifications = new ArrayList<>();
while (rs.next()) {
- notifications.add(this.getNotification(rs));
+ notifications.add(NotificationDAOUtil.getNotification(rs));
}
} catch (SQLException e) {
throw new NotificationManagementException(
@@ -238,7 +238,7 @@ public abstract class NotificationDAOImpl implements NotificationDAO {
rs = stmt.executeQuery();
notifications = new ArrayList<>();
while (rs.next()) {
- notifications.add(this.getNotification(rs));
+ notifications.add(NotificationDAOUtil.getNotification(rs));
}
} catch (SQLException e) {
throw new NotificationManagementException(
@@ -283,59 +283,4 @@ public abstract class NotificationDAOImpl implements NotificationDAO {
}
return notificationCountByStatus;
}
-
- @Override
- public List getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
- NotificationManagementException{
- Connection conn;
- PreparedStatement stmt = null;
- ResultSet rs = null;
- List notifications = null;
- try {
- conn = NotificationManagementDAOFactory.getConnection();
- String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
- " n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
- "DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
- "OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
- "TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
- "AND TENANT_ID = ?";
-
- sql = sql + " LIMIT ?,?";
-
- stmt = conn.prepareStatement(sql);
- stmt.setInt(1, tenantId);
- stmt.setString(2, status.toString());
- stmt.setInt(3, tenantId);
-
- int paramIdx = 4;
-
- stmt.setInt(paramIdx++, request.getStartIndex());
- stmt.setInt(paramIdx, request.getRowCount());
-
-
- rs = stmt.executeQuery();
- notifications = new ArrayList<>();
- while (rs.next()) {
- notifications.add(this.getNotification(rs));
- }
- } catch (SQLException e) {
- throw new NotificationManagementException(
- "Error occurred while retrieving information of all " +
- "notifications by status : " + status, e);
- } finally {
- NotificationDAOUtil.cleanupResources(stmt, rs);
- }
- return notifications;
-
- }
-
- private Notification getNotification(ResultSet rs) throws SQLException {
- Notification notification = new Notification();
- notification.setNotificationId(rs.getInt("NOTIFICATION_ID"));
- notification.setOperationId(rs.getInt("OPERATION_ID"));
- notification.setDescription(rs.getString("DESCRIPTION"));
- notification.setStatus(rs.getString("STATUS"));
- return notification;
- }
-
}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/GenericNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/GenericNotificationDAOImpl.java
new file mode 100644
index 0000000000..0653ec3029
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/GenericNotificationDAOImpl.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) 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
+ *
+ * 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.
+ */
+
+package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
+
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class holds the generic implementation of NotificationDAO which can be used to support ANSI db syntax.
+ */
+public class GenericNotificationDAOImpl extends AbstractNotificationDAOImpl {
+
+ @Override
+ public List getAllNotifications(PaginationRequest request, int tenantId) throws
+ NotificationManagementException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql =
+ "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
+ " d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
+ "NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
+
+ sql = sql + " LIMIT ?,?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setInt(2, tenantId);
+ int paramIdx = 3;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all notifications", e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+
+
+ @Override
+ public List getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
+ NotificationManagementException{
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
+ " n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
+ "DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
+ "OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
+ "AND TENANT_ID = ?";
+
+ sql = sql + " LIMIT ?,?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setString(2, status.toString());
+ stmt.setInt(3, tenantId);
+
+ int paramIdx = 4;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all " +
+ "notifications by status : " + status, e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java
new file mode 100644
index 0000000000..829e586d79
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/OracleNotificationDAOImpl.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) 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
+ *
+ * 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.
+ */
+
+package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
+
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class holds the Oracle implementation of NotificationDAO which can be used to support Oracle db syntax.
+ */
+public class OracleNotificationDAOImpl extends AbstractNotificationDAOImpl {
+
+ @Override
+ public List getAllNotifications(PaginationRequest request, int tenantId) throws
+ NotificationManagementException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql =
+ "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
+ " d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
+ "NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
+
+ sql = sql + " WHERE OFFSET >= ? AND ROWNUM <= ?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setInt(2, tenantId);
+ int paramIdx = 3;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all notifications", e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+
+
+ @Override
+ public List getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
+ NotificationManagementException{
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
+ " n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
+ "DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
+ "OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
+ "AND TENANT_ID = ?";
+
+ sql = sql + " OFFSET >= ? AND ROWNUM <= ?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setString(2, status.toString());
+ stmt.setInt(3, tenantId);
+
+ int paramIdx = 4;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all " +
+ "notifications by status : " + status, e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+}
\ No newline at end of file
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/PostgreSQLNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/PostgreSQLNotificationDAOImpl.java
new file mode 100644
index 0000000000..2039c04cbc
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/PostgreSQLNotificationDAOImpl.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) 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
+ *
+ * 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.
+ */
+
+package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
+
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class holds the implementation of NotificationDAO which can be used to support PostgreSQL db syntax.
+ */
+public class PostgreSQLNotificationDAOImpl extends AbstractNotificationDAOImpl {
+
+ @Override
+ public List getAllNotifications(PaginationRequest request, int tenantId) throws
+ NotificationManagementException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql =
+ "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
+ " d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
+ "NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
+
+ sql = sql + " LIMIT ? OFFSET ?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setInt(2, tenantId);
+ int paramIdx = 3;
+
+ stmt.setInt(paramIdx++, request.getRowCount());
+ stmt.setInt(paramIdx, request.getStartIndex());
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all notifications", e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+
+
+ @Override
+ public List getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
+ NotificationManagementException{
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
+ " n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
+ "DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
+ "OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
+ "AND TENANT_ID = ?";
+
+ sql = sql + " LIMIT ? OFFSET ?";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setString(2, status.toString());
+ stmt.setInt(3, tenantId);
+
+ int paramIdx = 4;
+
+ stmt.setInt(paramIdx++, request.getRowCount());
+ stmt.setInt(paramIdx, request.getStartIndex());
+
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all " +
+ "notifications by status : " + status, e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/SQLServerNotificationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/SQLServerNotificationDAOImpl.java
new file mode 100644
index 0000000000..e03a220ed1
--- /dev/null
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/impl/SQLServerNotificationDAOImpl.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) 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
+ *
+ * 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.
+ */
+
+package org.wso2.carbon.device.mgt.core.notification.mgt.dao.impl;
+
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.NotificationManagementDAOFactory;
+import org.wso2.carbon.device.mgt.core.notification.mgt.dao.util.NotificationDAOUtil;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class holds the implementation of NotificationDAO which can be used to support SQLServer db syntax.
+ */
+public class SQLServerNotificationDAOImpl extends AbstractNotificationDAOImpl {
+
+ @Override
+ public List getAllNotifications(PaginationRequest request, int tenantId) throws
+ NotificationManagementException {
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql =
+ "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS, n1.DESCRIPTION," +
+ " d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT " +
+ "NOTIFICATION_ID, DEVICE_ID, OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID AND TENANT_ID = ?";
+
+ sql = sql + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setInt(2, tenantId);
+ int paramIdx = 3;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all notifications", e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+
+
+ @Override
+ public List getNotificationsByStatus(PaginationRequest request, Notification.Status status, int tenantId) throws
+ NotificationManagementException{
+ Connection conn;
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ List notifications = null;
+ try {
+ conn = NotificationManagementDAOFactory.getConnection();
+ String sql = "SELECT n1.NOTIFICATION_ID, n1.DEVICE_ID, n1.OPERATION_ID, n1.STATUS," +
+ " n1.DESCRIPTION, d.DEVICE_IDENTIFICATION, t.NAME AS DEVICE_TYPE FROM " +
+ "DM_DEVICE d, DM_DEVICE_TYPE t, (SELECT NOTIFICATION_ID, DEVICE_ID, " +
+ "OPERATION_ID, STATUS, DESCRIPTION FROM DM_NOTIFICATION WHERE " +
+ "TENANT_ID = ? AND STATUS = ?) n1 WHERE n1.DEVICE_ID = d.ID AND d.DEVICE_TYPE_ID=t.ID " +
+ "AND TENANT_ID = ?";
+
+ sql = sql + " OFFSET ? ROWS FETCH NEXT ? ROWS ONLY";
+
+ stmt = conn.prepareStatement(sql);
+ stmt.setInt(1, tenantId);
+ stmt.setString(2, status.toString());
+ stmt.setInt(3, tenantId);
+
+ int paramIdx = 4;
+
+ stmt.setInt(paramIdx++, request.getStartIndex());
+ stmt.setInt(paramIdx, request.getRowCount());
+
+
+ rs = stmt.executeQuery();
+ notifications = new ArrayList<>();
+ while (rs.next()) {
+ notifications.add(NotificationDAOUtil.getNotification(rs));
+ }
+ } catch (SQLException e) {
+ throw new NotificationManagementException(
+ "Error occurred while retrieving information of all " +
+ "notifications by status : " + status, e);
+ } finally {
+ NotificationDAOUtil.cleanupResources(stmt, rs);
+ }
+ return notifications;
+ }
+}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/util/NotificationDAOUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/util/NotificationDAOUtil.java
index 5c87e1b311..36f7df6be0 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/util/NotificationDAOUtil.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/notification/mgt/dao/util/NotificationDAOUtil.java
@@ -21,6 +21,7 @@ package org.wso2.carbon.device.mgt.core.notification.mgt.dao.util;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.context.CarbonContext;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
import org.wso2.carbon.user.api.UserStoreException;
@@ -123,4 +124,13 @@ public class NotificationDAOUtil {
throw new RuntimeException("Error in looking up data source: " + e.getMessage(), e);
}
}
+
+ public static Notification getNotification(ResultSet rs) throws SQLException {
+ Notification notification = new Notification();
+ notification.setNotificationId(rs.getInt("NOTIFICATION_ID"));
+ notification.setOperationId(rs.getInt("OPERATION_ID"));
+ notification.setDescription(rs.getString("DESCRIPTION"));
+ notification.setStatus(rs.getString("STATUS"));
+ return notification;
+ }
}
diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/operation/PostgreSQLOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/operation/PostgreSQLOperationDAOImpl.java
index 0d107ead1d..c9ddcb3d91 100644
--- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/operation/PostgreSQLOperationDAOImpl.java
+++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/operation/PostgreSQLOperationDAOImpl.java
@@ -46,8 +46,8 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
List operations = new ArrayList();
try {
Connection conn = OperationManagementDAOFactory.getConnection();
- String sql = "SELECT o.ID, TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, " +
- "OPERATION_CODE, om.STATUS FROM DM_OPERATION o " +
+ String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, " +
+ "o.OPERATION_CODE, om.STATUS FROM DM_OPERATION o " +
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
"WHERE dm.ENROLMENT_ID = ?) om ON o.ID = om.OPERATION_ID ORDER BY o.CREATED_TIMESTAMP DESC LIMIT ? OFFSET ?";
stmt = conn.prepareStatement(sql);
@@ -72,7 +72,7 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
}
} catch (SQLException e) {
throw new OperationManagementDAOException("SQL error occurred while retrieving the operation " +
- "available for the device'" + enrolmentId + "' with status '", e);
+ "available for the device'" + enrolmentId, e);
} finally {
OperationManagementDAOUtil.cleanupResources(stmt, rs);
}
@@ -89,7 +89,7 @@ public class PostgreSQLOperationDAOImpl extends GenericOperationDAOImpl {
List operations = new ArrayList();
try {
Connection conn = OperationManagementDAOFactory.getConnection();
- String sql = "SELECT o.ID, TYPE, CREATED_TIMESTAMP, RECEIVED_TIMESTAMP, OPERATION_CODE " +
+ String sql = "SELECT o.ID, o.TYPE, o.CREATED_TIMESTAMP, o.RECEIVED_TIMESTAMP, o.OPERATION_CODE " +
"FROM DM_OPERATION o " +
"INNER JOIN (SELECT * FROM DM_ENROLMENT_OP_MAPPING dm " +
"WHERE dm.ENROLMENT_ID = ? AND dm.STATUS = ?) om ON o.ID = om.OPERATION_ID ORDER BY " +