X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ecomp-portal-BE-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fportalapp%2Fportal%2Fcontroller%2FTicketEventController.java;fp=ecomp-portal-BE-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fportalapp%2Fportal%2Fcontroller%2FTicketEventController.java;h=0000000000000000000000000000000000000000;hb=21a8761f684745bb300e075c7e98ad897ace9eed;hp=76154c6a6f8d9efc4e6a77691a3e1894b5c59786;hpb=3af8af1310d5a27cb58be29505573f0bbdc1717c;p=portal.git diff --git a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/TicketEventController.java b/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/TicketEventController.java deleted file mode 100644 index 76154c6a..00000000 --- a/ecomp-portal-BE-common/src/main/java/org/openecomp/portalapp/portal/controller/TicketEventController.java +++ /dev/null @@ -1,229 +0,0 @@ -/*- - * ============LICENSE_START========================================== - * ONAP Portal - * =================================================================== - * Copyright © 2017 AT&T Intellectual Property. All rights reserved. - * =================================================================== - * - * Unless otherwise specified, all software contained herein is licensed - * under the Apache License, Version 2.0 (the “License”); - * you may not use this software except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Unless otherwise specified, all documentation contained herein is licensed - * under the Creative Commons License, Attribution 4.0 Intl. (the “License”); - * you may not use this documentation except in compliance with the License. - * You may obtain a copy of the License at - * - * https://creativecommons.org/licenses/by/4.0/ - * - * Unless required by applicable law or agreed to in writing, documentation - * 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. - * - * ============LICENSE_END============================================ - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ -package org.openecomp.portalapp.portal.controller; - -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.openecomp.portalapp.portal.domain.EPUser; -import org.openecomp.portalapp.portal.ecomp.model.PortalRestResponse; -import org.openecomp.portalapp.portal.ecomp.model.PortalRestStatusEnum; -import org.openecomp.portalapp.portal.logging.aop.EPAuditLog; -import org.openecomp.portalapp.portal.service.TicketEventService; -import org.openecomp.portalapp.portal.service.UserNotificationService; -import org.openecomp.portalapp.portal.transport.EpNotificationItem; -import org.openecomp.portalapp.portal.transport.EpRoleNotificationItem; -import org.openecomp.portalapp.portal.utils.PortalConstants; -import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import io.swagger.annotations.ApiOperation; - -/** - * Receives messages from the Collaboration Bus (C-BUS) notification and event - * brokering tool. Creates notifications for ECOMP Portal users. - */ -@RestController -@RequestMapping(PortalConstants.REST_AUX_API) -@Configuration -@EnableAspectJAutoProxy -@EPAuditLog -public class TicketEventController implements BasicAuthenticationController { - - - @Autowired - private UserNotificationService userNotificationService; - - @Autowired - private TicketEventService ticketEventService; - - private EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(TicketEventController.class); - - public boolean isAuxRESTfulCall() { - return true; - } - - private final ObjectMapper mapper = new ObjectMapper(); - - - - @ApiOperation(value = "Accepts messages from external ticketing systems and creates notifications for Portal users.", response = PortalRestResponse.class) - @RequestMapping(value = { "/ticketevent" }, method = RequestMethod.POST) - public PortalRestResponse handleRequest(HttpServletRequest request, HttpServletResponse response, - @RequestBody String ticketEventJson) throws Exception { - - logger.debug(EELFLoggerDelegate.debugLogger, "Ticket Event notification" + ticketEventJson); - PortalRestResponse portalResponse = new PortalRestResponse<>(); - try { - JsonNode ticketEventNotif = mapper.readTree(ticketEventJson); - - // Reject request if required fields are missing. - String error = validateTicketEventMessage(ticketEventNotif); - if (error != null) { - portalResponse.setStatus(PortalRestStatusEnum.ERROR); - portalResponse.setMessage(error); - response.setStatus(400); - return portalResponse; - } - - EpNotificationItem epItem = new EpNotificationItem(); - epItem.setCreatedDate(new Date()); - epItem.setIsForOnlineUsers("Y"); - epItem.setIsForAllRoles("N"); - epItem.setActiveYn("Y"); - - JsonNode event = ticketEventNotif.get("event"); - JsonNode header = event.get("header"); - JsonNode body = event.get("body"); - JsonNode application = ticketEventNotif.get("application"); - epItem.setMsgDescription(body.toString()); - Long eventDate = System.currentTimeMillis(); - if (body.get("eventDate") != null) { - eventDate = body.get("eventDate").asLong(); - } - String eventSource = header.get("eventSource").asText(); - epItem.setMsgSource(eventSource); - String ticket = body.get("ticketNum").asText(); - String hyperlink = ticketEventService.getNotificationHyperLink(application, ticket, eventSource); - if(body.get("notificationHyperlink")!=null){ - hyperlink=body.get("notificationHyperlink").asText(); - } - epItem.setNotificationHyperlink(hyperlink); - epItem.setStartTime(new Date(eventDate)); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(epItem.getStartTime()); - int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); - calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth + 30); - epItem.setEndTime(calendar.getTime()); - String severityString = "1"; - if (body.get("severity") != null) { - severityString = (body.get("severity").toString()).substring(1, 2); - } - Long severity = Long.parseLong(severityString); - epItem.setPriority(severity); - epItem.setCreatorId(null); - Set roles = new HashSet<>(); - JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); - JsonNode userList = SubscriberInfo.get("UserList"); - String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") - .split(","); - String assetID = eventSource + ' ' - + userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") + ' ' - + new Date(eventDate); - if (body.get("assetID") != null) { - assetID = body.get("assetID").asText(); - } - epItem.setMsgHeader(assetID); - List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); - for (String userId : UserIds) { - EpRoleNotificationItem roleNotifItem = new EpRoleNotificationItem(); - for (EPUser user : users) { - if (user.getOrgUserId().equals(userId)) { - roleNotifItem.setRecvUserId(user.getId().intValue()); - roles.add(roleNotifItem); - break; - } - } - - } - epItem.setRoles(roles); - userNotificationService.saveNotification(epItem); - - portalResponse.setStatus(PortalRestStatusEnum.OK); - portalResponse.setMessage("processEventNotification: notification created"); - portalResponse.setResponse("NotificationId is :" + epItem.notificationId); - } catch (Exception ex) { - portalResponse.setStatus(PortalRestStatusEnum.ERROR); - response.setStatus(400); - portalResponse.setMessage(ex.toString()); - } - return portalResponse; - } - - /** - * Validates that mandatory fields are present. - * - * @param ticketEventNotif - * @return Error message if a problem is found; null if all is well. - */ - private String validateTicketEventMessage(JsonNode ticketEventNotif) { - JsonNode application = ticketEventNotif.get("application"); - JsonNode event = ticketEventNotif.get("event"); - JsonNode header = event.get("header"); - JsonNode eventSource=header.get("eventSource"); - JsonNode body = event.get("body"); - JsonNode SubscriberInfo = ticketEventNotif.get("SubscriberInfo"); - JsonNode userList = SubscriberInfo.get("UserList"); - - if (application == null||application.asText().length()==0||application.asText().equalsIgnoreCase("null")) - return "Application is mandatory"; - if (body == null) - return "body is mandatory"; - if (eventSource == null||eventSource.asText().trim().length()==0||eventSource.asText().equalsIgnoreCase("null")) - return "Message Source is mandatory"; - if (userList == null) - return "At least one user Id is mandatory"; - JsonNode eventDate=body.get("eventDate"); - - if(eventDate!=null&&eventDate.asText().length()==8) - return "EventDate is invalid"; - String UserIds[] = userList.toString().replace("[", "").replace("]", "").trim().replace("\"", "") - .split(","); - List users = userNotificationService.getUsersByOrgIds(Arrays.asList(UserIds)); - if(users==null||users.size()==0) - return "Invalid Org User ID"; - return null; - } - -}