[PORTAL-7] Rebase
[portal.git] / ecomp-portal-BE-common / src / main / java / org / openecomp / portalapp / portal / service / UserNotificationServiceImpl.java
diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/UserNotificationServiceImpl.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/service/UserNotificationServiceImpl.java
new file mode 100644 (file)
index 0000000..4017b2f
--- /dev/null
@@ -0,0 +1,211 @@
+/*-\r
+ * ================================================================================\r
+ * ECOMP Portal\r
+ * ================================================================================\r
+ * Copyright (C) 2017 AT&T Intellectual Property\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *      http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ================================================================================\r
+ */\r
+package org.openecomp.portalapp.portal.service;\r
+\r
+import java.util.Date;\r
+import java.util.HashMap;\r
+import java.util.HashSet;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
+import org.hibernate.SessionFactory;\r
+import org.openecomp.portalapp.portal.domain.EPUser;\r
+import org.openecomp.portalapp.portal.domain.EPUserNotification;\r
+import org.openecomp.portalapp.portal.domain.EcompAppRole;\r
+import org.openecomp.portalapp.portal.logging.aop.EPMetricsLog;\r
+import org.openecomp.portalapp.portal.transport.EpNotificationItem;\r
+import org.openecomp.portalapp.portal.transport.EpNotificationItemVO;\r
+import org.openecomp.portalapp.portal.transport.EpRoleNotificationItem;\r
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;\r
+import org.openecomp.portalsdk.core.service.DataAccessService;\r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.context.annotation.EnableAspectJAutoProxy;\r
+import org.springframework.stereotype.Service;\r
+\r
+@Service("userNotificationService")\r
+@org.springframework.context.annotation.Configuration\r
+@EnableAspectJAutoProxy\r
+@EPMetricsLog\r
+public class UserNotificationServiceImpl implements UserNotificationService {\r
+       EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(FunctionalMenuServiceImpl.class);\r
+\r
+       @Autowired\r
+       private DataAccessService dataAccessService;\r
+       @Autowired\r
+       private SessionFactory sessionFactory;\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#getNotifications(java.lang.Long)\r
+        */\r
+       @Override\r
+       public List<EpNotificationItem> getNotifications(Long userId) {\r
+               Map<String, String> params = new HashMap<String, String>();\r
+               params.put("user_id", userId.toString());\r
+               @SuppressWarnings("unchecked")\r
+               List<EpNotificationItem> notificationList = dataAccessService.executeNamedQuery("getNotifications", params,\r
+                               null);\r
+               // set the roles to null for pure retrieval of all notifications\r
+               for (EpNotificationItem item : notificationList) {\r
+                       item.setRoles(null);\r
+               }\r
+               return notificationList;\r
+       }\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#getNotificationHistoryVO(java.lang.Long)\r
+        */\r
+       @Override\r
+       public List<EpNotificationItemVO> getNotificationHistoryVO(Long userId) {\r
+               Map<String, String> params = new HashMap<String, String>();\r
+               params.put("user_id", userId.toString());\r
+               @SuppressWarnings("unchecked")\r
+               List<EpNotificationItemVO> notificationList = dataAccessService.executeNamedQuery("getNotificationHistoryVO",\r
+                               params, null);\r
+               return notificationList;\r
+       }\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#getAdminNotificationVOS()\r
+        */\r
+       @Override\r
+       public List<EpNotificationItemVO> getAdminNotificationVOS() {\r
+               Map<String, String> params = new HashMap<String, String>();\r
+               @SuppressWarnings("unchecked")\r
+               List<EpNotificationItemVO> notificationList = dataAccessService\r
+                               .executeNamedQuery("getAdminNotificationHistoryVO", params, null);\r
+               return notificationList;\r
+       }\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#getNotificationRoles(java.lang.Long)\r
+        */\r
+       @Override\r
+       public List<EpRoleNotificationItem> getNotificationRoles(Long notificationId) {\r
+               Map<String, String> params = new HashMap<String, String>();\r
+               params.put("notificationId", Long.toString(notificationId));\r
+               @SuppressWarnings("unchecked")\r
+               List<EpRoleNotificationItem> roleNotifList = dataAccessService.executeNamedQuery("getNotificationRoles", params,\r
+                               null);\r
+               return roleNotifList;\r
+       }\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#getAppRoleList()\r
+        */\r
+       @SuppressWarnings("unchecked")\r
+       @Override\r
+       public List<EcompAppRole> getAppRoleList() {\r
+               List<EcompAppRole> appRoleList = (List<EcompAppRole>) dataAccessService.executeNamedQuery("getEpNotificationAppRoles", null, null);             \r
+               return appRoleList;             \r
+       }       \r
+       \r
+       /*\r
+        * (non-Javadoc)\r
+        * \r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#\r
+        * setNotificationsRead(java.lang.Long, int)\r
+        */\r
+       @Override\r
+       public void setNotificationRead(Long notificationId, int userId) {\r
+               EPUserNotification userNotification = new EPUserNotification();\r
+               userNotification.setNotificationId(notificationId);\r
+               userNotification.setUpdateTime(new Date());\r
+               userNotification.setViewed("Y");\r
+               userNotification.setUserId((long) userId);\r
+               getDataAccessService().saveDomainObject(userNotification, null);\r
+       }\r
+\r
+       /*\r
+        * (non-Javadoc)\r
+        * @see org.openecomp.portalapp.portal.service.UserNotificationService#saveNotification(org.openecomp.portalapp.portal.transport.EpNotificationItem)\r
+        */\r
+       @Override\r
+       public String saveNotification(EpNotificationItem notificationItem) throws Exception {\r
+\r
+               // gather the roles\r
+               if (notificationItem.getRoleIds() != null && !notificationItem.getIsForAllRoles().equals("Y")) {\r
+                       if (notificationItem.getRoles() == null) {\r
+                               Set<EpRoleNotificationItem> roleSet = new HashSet<EpRoleNotificationItem>();\r
+                               notificationItem.setRoles(roleSet);\r
+                       }\r
+                       for (Long roleId : notificationItem.getRoleIds()) {\r
+                               EpRoleNotificationItem roleItem = new EpRoleNotificationItem();\r
+                               roleItem.setNotificationId(notificationItem.getNotificationId());\r
+                               roleItem.setRoleId(roleId.intValue());\r
+                               notificationItem.getRoles().add(roleItem);\r
+                       }\r
+               }\r
+\r
+               \r
+                       // for updates fetch roles and then save\r
+                       if (notificationItem.getNotificationId() != null) {\r
+                               EpNotificationItem updateNotificationItem = (EpNotificationItem) getDataAccessService()\r
+                                               .getDomainObject(EpNotificationItem.class, notificationItem.getNotificationId(), null);\r
+                               notificationItem.setRoles(updateNotificationItem.getRoles());\r
+                       }\r
+                        if(notificationItem.msgSource == null)\r
+                   {\r
+                       notificationItem.setMsgSource("EP");\r
+                   }\r
+                       getDataAccessService().saveDomainObject(notificationItem, null);\r
+                        return "" ;\r
+\r
+               } \r
+         @Override\r
+           public List<EPUser> getUsersByOrgIds(List<String> OrgIds) {\r
+               Map<String, Object> params = new HashMap<String, Object>();\r
+               params.put("OrgIds", OrgIds);\r
+               @SuppressWarnings("unchecked")\r
+               List<EPUser> userList = dataAccessService.executeNamedQuery("getUsersByOrgIdsNotifications", params,    null);\r
+               return userList;\r
+           }\r
+         \r
+         @Override\r
+                       public List<String> getMessageRecipients(Long notificationId) {\r
+                               Map<String, String> params = new HashMap<>();\r
+                               params.put("notificationId", Long.toString(notificationId));\r
+                               @SuppressWarnings("unchecked")\r
+                               List<String> activeUsers = dataAccessService.executeNamedQuery("messageRecipients", params, null);\r
+                               return activeUsers;\r
+                       }\r
+\r
+       public DataAccessService getDataAccessService() {\r
+               return dataAccessService;\r
+       }\r
+\r
+       public void setDataAccessService(DataAccessService dataAccessService) {\r
+               this.dataAccessService = dataAccessService;\r
+       }\r
+\r
+       public SessionFactory getSessionFactory() {\r
+               return sessionFactory;\r
+       }\r
+\r
+       public void setSessionFactory(SessionFactory sessionFactory) {\r
+               this.sessionFactory = sessionFactory;\r
+       }\r
+\r
+}\r