From 7acb391d04f2efdac6e6306c208ae1586c23ffd9 Mon Sep 17 00:00:00 2001 From: shentao Date: Mon, 29 Jan 2018 16:20:28 +0800 Subject: Fix monitor bug about alarm record update Change-Id: Ieb08e334aa50747b61baa63bf78b277546ace029 Issue-ID: USECASEUI-101 Signed-off-by: shentao --- server/pom.xml | 6 + .../server/controller/AlarmController.java | 269 +++++++++++++++------ .../server/controller/PerformanceController.java | 78 +++--- .../server/service/AlarmsHeaderService.java | 6 +- .../service/impl/AlarmsHeaderServiceImpl.java | 39 ++- .../org/onap/usecaseui/server/util/DateUtils.java | 51 ++++ .../usecaseui/server/util/DmaapSubscriber.java | 82 +++---- .../main/assembly/resources/topologyD_data.json | 21 ++ 8 files changed, 389 insertions(+), 163 deletions(-) create mode 100644 standalone/src/main/assembly/resources/topologyD_data.json diff --git a/server/pom.xml b/server/pom.xml index 9c68cffd..1c8ba798 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -189,6 +189,12 @@ 2.3.0 + + + com.alibaba + fastjson + 1.2.23 + org.openecomp.sdc.jtosca jtosca diff --git a/server/src/main/java/org/onap/usecaseui/server/controller/AlarmController.java b/server/src/main/java/org/onap/usecaseui/server/controller/AlarmController.java index 502bd7b2..31cf2156 100755 --- a/server/src/main/java/org/onap/usecaseui/server/controller/AlarmController.java +++ b/server/src/main/java/org/onap/usecaseui/server/controller/AlarmController.java @@ -18,6 +18,9 @@ package org.onap.usecaseui.server.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.onap.usecaseui.server.bean.AlarmsHeader; @@ -36,23 +39,21 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; +import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; @RestController @org.springframework.context.annotation.Configuration @EnableAspectJAutoProxy -public class AlarmController -{ +public class AlarmController { private final Logger logger = LoggerFactory.getLogger(AlarmController.class); @@ -69,76 +70,71 @@ public class AlarmController @RequestMapping(value = {"/alarm/{currentPage}/{pageSize}", "/alarm/{currentPage}/{pageSize}/{sourceId}/{sourceName}/{priority}/{startTime}/{endTime}/{vfStatus}"}, - method = RequestMethod.GET , produces = "application/json") - public String getAlarmData(@PathVariable(required = false) String sourceId,@PathVariable(required = false) String sourceName, - @PathVariable(required = false) String priority,@PathVariable(required = false) String startTime, - @PathVariable(required = false) String endTime,@PathVariable(required = false) String vfStatus, + method = RequestMethod.GET, produces = "application/json") + public String getAlarmData(@PathVariable(required = false) String sourceId, @PathVariable(required = false) String sourceName, + @PathVariable(required = false) String priority, @PathVariable(required = false) String startTime, + @PathVariable(required = false) String endTime, @PathVariable(required = false) String vfStatus, @PathVariable int currentPage, @PathVariable int pageSize) throws JsonProcessingException { logger.info("transfer getAlarmData Apis, " + - "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " + - "sourceName : {} , priority : {} , startTime :{} , endTime : {} , vfStatus : {}]" - ,currentPage,pageSize,sourceId,sourceName,priority,startTime,endTime,vfStatus); + "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " + + "sourceName : {} , priority : {} , startTime :{} , endTime : {} , vfStatus : {}]" + , currentPage, pageSize, sourceId, sourceName, priority, startTime, endTime, vfStatus); List alarmsHeaders = null; List list = new ArrayList<>(); Page pa = null; if (null != sourceId || null != sourceName || null != priority || null != startTime || null != endTime - || null != vfStatus ){ + || null != vfStatus) { AlarmsHeader alarm = new AlarmsHeader(); - alarm.setSourceId(!"null".equals(sourceId)?sourceId:null); - alarm.setSourceName(!"null".equals(sourceName)?sourceName:null); - alarm.setStatus(!"null".equals(vfStatus)?vfStatus:null); + alarm.setSourceId(!"null".equals(sourceId) ? sourceId : null); + alarm.setSourceName(!"null".equals(sourceName) ? sourceName : null); + alarm.setStatus(!"null".equals(vfStatus) ? vfStatus : null); try { - alarm.setCreateTime(!"null".equals(startTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime):null); - alarm.setUpdateTime(!"null".equals(endTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime):null); + alarm.setCreateTime(!"null".equals(startTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime) : null); + alarm.setUpdateTime(!"null".equals(endTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime) : null); } catch (ParseException e) { - logger.error("Parse date error :"+e.getMessage()); + logger.error("Parse date error :" + e.getMessage()); } - pa = alarmsHeaderService.queryAlarmsHeader(alarm,currentPage,pageSize); + pa = alarmsHeaderService.queryAlarmsHeader(alarm, currentPage, pageSize); alarmsHeaders = pa.getList(); if (null != alarmsHeaders && alarmsHeaders.size() > 0) { - alarmsHeaders.forEach(a ->{ + alarmsHeaders.forEach(a -> { logger.info(a.toString()); AlarmBo abo = new AlarmBo(); - if (!a.getStatus().equals("3")){ + if (!a.getStatus().equals("3")) { abo.setAlarmsHeader(a); AlarmsInformation information = new AlarmsInformation(); information.setEventId(a.getSourceId()); - List informationList = alarmsInformationService.queryAlarmsInformation(information,1,100).getList(); + List informationList = alarmsInformationService.queryAlarmsInformation(information, 1, 100).getList(); abo.setAlarmsInformation(informationList); list.add(abo); } }); } - }else { + } else { pa = alarmsHeaderService.queryAlarmsHeader(null, currentPage, pageSize); alarmsHeaders = pa.getList(); if (null != alarmsHeaders && alarmsHeaders.size() > 0) { alarmsHeaders.forEach(a -> { AlarmBo abo = new AlarmBo(); - if (!a.getStatus().equals("3")){ + if (!a.getStatus().equals("3")) { abo.setAlarmsHeader(a); - abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()),currentPage,pageSize).getList()); + abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()), currentPage, pageSize).getList()); list.add(abo); } }); } } - try { - Map map = new HashMap<>(); - map.put("alarms",list); - map.put("totalRecords",pa.getTotalRecords()); - omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT)); - return omAlarm.writeValueAsString(map); - } catch (JsonProcessingException e) { - logger.debug("JsonProcessingException :"+e.getMessage()); - return omAlarm.writeValueAsString("failed"); - } + Map map = new HashMap<>(); + map.put("alarms", list); + map.put("totalRecords", pa.getTotalRecords()); + omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT)); + return omAlarm.writeValueAsString(map); } - @RequestMapping(value = "/alarm/statusCount",method = RequestMethod.GET , produces = "application/json") - public String getStatusCount(){ + @RequestMapping(value = "/alarm/statusCount", method = RequestMethod.GET, produces = "application/json") + public String getStatusCount() { List statusCount = new ArrayList<>(); try { statusCount.add(alarmsHeaderService.queryStatusCount("0")); @@ -152,41 +148,160 @@ public class AlarmController return null; } - @RequestMapping(value = {"/alarm/sourceId"},method = RequestMethod.GET) - public String getSourceId(){ + @RequestMapping(value = {"/topology/{serviceName}"}, method = RequestMethod.GET) + public String getTopologyData(@PathVariable String serviceName) { + Map topologyMap = new HashMap<>(); + try { + topologyMap.put("name",serviceName); + + List> networkServices = (List>) getAllVNFS().get("networkServices"); + List> VNFS = (List>) getAllVNFS().get("VNFS"); + + List> children = new ArrayList<>(); + networkServices.forEach( i -> { + Map childrenMap = new HashMap<>(); + i.forEach( (k,v) -> { + if (k.equals("parentService")) + if (v.equals(serviceName)){ + childrenMap.put("name",i.get("nsName")); + List> childrenList = new ArrayList<>(); + VNFS.forEach( j -> { + Map childrenJMap = new HashMap<>(); + j.forEach( (k1,v2) -> { + if (k1.equals("parentNS")) + if (v2.equals(i.get("nsName"))) { + childrenJMap.put("name",j.get("vnfName")); + childrenJMap.put("isAlarm",j.get("isAlarm")); + } + }); + if (childrenJMap.size() > 0) + childrenList.add(childrenJMap); + }); + if (childrenList.size() > 0) { + childrenMap.put("children",childrenList); + } + } + }); + if (childrenMap.size() > 0) { + children.add(childrenMap); + } + }); + if (children.size() > 0) { + topologyMap.put("children",children); + } + return omAlarm.writeValueAsString(topologyMap); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + + @RequestMapping(value = {"/topology/services"}, method = RequestMethod.GET) + public String getTopologyServices() { + try { + List> services = (List>) getAllVNFS().get("services"); + services.forEach( i -> { + i.forEach( (k,v) -> { + if (k.equals("ServiceName")) { + AlarmsHeader alarmsHeader = new AlarmsHeader(); + alarmsHeader.setSourceId(v.toString()); + List alarmsHeaderList = alarmsHeaderService.queryAlarmsHeader(alarmsHeader,1,10).getList(); + alarmsHeaderList.forEach(alarmsHeader1 -> { + if (alarmsHeader1.getStatus().equals("1")) { + i.replace("isAlarm","true"); + } + }); + } + }); + }); + return omAlarm.writeValueAsString(services); + } catch (Exception e) { + logger.error(e.getMessage()); + return null; + } + } + + private Map getTopologyData() throws IOException { + String data = ""; + try { + BufferedReader br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json")); + String tmpStr = ""; + while ((tmpStr=br.readLine()) != null) { + data += tmpStr; + } + br.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + Map map = omAlarm.readValue(data, Map.class); + return map; + } + + public Map getAllVNFS() throws IOException { + String data=""; + try { + String str=null; + BufferedReader br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json")); + while ((str=br.readLine())!=null) { + data += str; + } + br.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + JSONObject jsonObject = (JSONObject) JSON.parseObject(data); + JSONArray jsonArray = jsonObject.getJSONArray("VNFS"); + + for (int a=0;a map = omAlarm.readValue(jsonS, Map.class); + return map; + } + + + @RequestMapping(value = {"/alarm/sourceId"}, method = RequestMethod.GET) + public String getSourceId() throws JsonProcessingException { List sourceIds = new ArrayList<>(); - alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(),1,Integer.MAX_VALUE).getList().forEach( al ->{ + alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(), 1, Integer.MAX_VALUE).getList().forEach(al -> { if (!al.getStatus().equals("3") && !sourceIds.contains(al.getSourceId())) sourceIds.add(al.getSourceId()); - } ); - try { - return omAlarm.writeValueAsString(sourceIds); - } catch (JsonProcessingException e) { - e.printStackTrace(); - return ""; - } + }); + return omAlarm.writeValueAsString(sourceIds); } - @RequestMapping(value = {"/alarm/diagram"},method = RequestMethod.POST) - public String genDiagram(@RequestParam String sourceId,@RequestParam String startTime,@RequestParam String endTime,@RequestParam String showMode){ + @RequestMapping(value = {"/alarm/diagram"}, method = RequestMethod.POST) + public String genDiagram(@RequestParam String sourceId, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String showMode) { try { - return omAlarm.writeValueAsString(diagramDate(sourceId,startTime,endTime,showMode)); + return omAlarm.writeValueAsString(diagramDate(sourceId, startTime, endTime, showMode)); } catch (JsonProcessingException e) { e.printStackTrace(); return ""; } } - private List> dateProcess(String sourceId,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException { + private List> dateProcess(String sourceId, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException { List> dataList = new ArrayList<>(); long tmpEndTimeL = startTimeL + timeIteraPlusVal; - while (endTimeL >= tmpEndTimeL){ - List> maps = alarmsInformationService.queryDateBetween(sourceId,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL))); - maps.forEach( map -> { + while (endTimeL >= tmpEndTimeL) { + List> maps = alarmsInformationService.queryDateBetween(sourceId, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL))); + maps.forEach(map -> { try { List longList = new ArrayList<>(); - if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")) ){ + if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time"))) { longList.add(sdf.parse(map.get("Time")).getTime()); if (map.get("Count") != null && !"".equals(map.get("Count"))) longList.add(Long.parseLong(map.get("Count"))); @@ -199,7 +314,7 @@ public class AlarmController e.printStackTrace(); } - } ); + }); startTimeL += timeIteraPlusVal; tmpEndTimeL += timeIteraPlusVal; keyVal += keyValIteraVal; @@ -207,40 +322,40 @@ public class AlarmController return dataList; } - private List> diagramDate(String sourceId,String startTime,String endTime,String format){ + private List> diagramDate(String sourceId, String startTime, String endTime, String format) { try { long startTimel = sdf.parse(startTime).getTime(); long endTimel = sdf.parse(endTime).getTime(); - if (format != null && !format.equals("auto")){ - switch (format){ + if (format != null && !format.equals("auto")) { + switch (format) { case "minute": - return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute"); + return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute"); case "hour": - return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour"); + return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour"); case "day": - return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day"); + return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day"); case "month": - return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month"); + return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month"); case "year": - return dateProcess(sourceId,startTimel,endTimel,31536000000L,1,1,"year"); + return dateProcess(sourceId, startTimel, endTimel, 31536000000L, 1, 1, "year"); } - }else if (format != null && format.equals("auto")){ + } else if (format != null && format.equals("auto")) { long minutes = (endTimel - startTimel) / (1000 * 60); long hours = minutes / 60; - if (hours > 12){ + if (hours > 12) { long days = hours / 24; - if (days > 3){ + if (days > 3) { long months = days / 31; - if (months > 2){ - return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day"); - }else { - return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month"); + if (months > 2) { + return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day"); + } else { + return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month"); } - }else { - return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour"); + } else { + return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour"); } - }else { - return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute"); + } else { + return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute"); } } } catch (ParseException e) { diff --git a/server/src/main/java/org/onap/usecaseui/server/controller/PerformanceController.java b/server/src/main/java/org/onap/usecaseui/server/controller/PerformanceController.java index f534264b..eeddf6c2 100755 --- a/server/src/main/java/org/onap/usecaseui/server/controller/PerformanceController.java +++ b/server/src/main/java/org/onap/usecaseui/server/controller/PerformanceController.java @@ -120,16 +120,11 @@ public class PerformanceController { list.add(pbo); }); } - try { - Map map = new HashMap<>(); - map.put("performances", list); - map.put("totalRecords", pa.getTotalRecords()); - omPerformance.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT)); - return omPerformance.writeValueAsString(map); - } catch (JsonProcessingException e) { - logger.error("JsonProcessingException" + e.getMessage()); - return omPerformance.writeValueAsString("failed"); - } + Map map = new HashMap<>(); + map.put("performances", list); + map.put("totalRecords", pa.getTotalRecords()); + omPerformance.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT)); + return omPerformance.writeValueAsString(map); } /*@RequestMapping(value = {"/performance/genCsv/{eventId}"}, method = RequestMethod.GET, produces = "application/json") @@ -198,10 +193,7 @@ public class PerformanceController { @RequestMapping(value = {"/performance/diagram"}, method = RequestMethod.POST, produces = "application/json") public String generateDiagram(@RequestParam String sourceId, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String nameParent, @RequestParam String format) { try { - return omPerformance.writeValueAsString(diagramDate(sourceId,nameParent,startTime,endTime,format)); - } catch (JsonProcessingException e) { - logger.error("JsonProcessingException:" + e.getMessage()); - return null; + return omPerformance.writeValueAsString(diagramDate(sourceId, nameParent, startTime, endTime, format)); } catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); @@ -213,14 +205,14 @@ public class PerformanceController { public String getSourceIds() { List sourceIds = new ArrayList<>(); try { - performanceHeaderService.queryAllSourceId().forEach( ph -> { + performanceHeaderService.queryAllSourceId().forEach(ph -> { if (!sourceIds.contains(ph)) sourceIds.add(ph); - } ); + }); return omPerformance.writeValueAsString(sourceIds); - } catch (JsonProcessingException e) { + } catch (Exception e) { logger.error(e.getMessage()); - return ""; + return null; } } @@ -235,21 +227,21 @@ public class PerformanceController { }); return omPerformance.writeValueAsString(names); - } catch (JsonProcessingException e) { + } catch (Exception e) { logger.error(e.getMessage()); return ""; } } - private List> dateProcess(String sourceId,String name,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException { + private List> dateProcess(String sourceId, String name, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException { List> dataList = new ArrayList<>(); long tmpEndTimeL = startTimeL + timeIteraPlusVal; - while (endTimeL >= tmpEndTimeL){ - List> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId,name,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL))); - maps.forEach( map -> { + while (endTimeL >= tmpEndTimeL) { + List> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId, name, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL))); + maps.forEach(map -> { try { List longList = new ArrayList<>(); - if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")) ){ + if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time"))) { longList.add(sdf.parse(map.get("Time")).getTime()); if (map.get("Max") != null && !"".equals(map.get("Max"))) longList.add(Long.parseLong(map.get("Max"))); @@ -269,40 +261,40 @@ public class PerformanceController { return dataList; } - private List> diagramDate(String sourceId,String name,String startTime,String endTime,String format){ + private List> diagramDate(String sourceId, String name, String startTime, String endTime, String format) { try { long startTimel = sdf.parse(startTime).getTime(); long endTimel = sdf.parse(endTime).getTime(); - if (format != null && !format.equals("auto")){ - switch (format){ + if (format != null && !format.equals("auto")) { + switch (format) { case "minute": - return dateProcess(sourceId,name,startTimel,endTimel,900000,15,15,"minute"); + return dateProcess(sourceId, name, startTimel, endTimel, 900000, 15, 15, "minute"); case "hour": - return dateProcess(sourceId,name,startTimel,endTimel,3600000,1,1,"hour"); + return dateProcess(sourceId, name, startTimel, endTimel, 3600000, 1, 1, "hour"); case "day": - return dateProcess(sourceId,name,startTimel,endTimel,86400000,1,1,"day"); + return dateProcess(sourceId, name, startTimel, endTimel, 86400000, 1, 1, "day"); case "month": - return dateProcess(sourceId,name,startTimel,endTimel,2592000000L,1,1,"month"); + return dateProcess(sourceId, name, startTimel, endTimel, 2592000000L, 1, 1, "month"); case "year": - return dateProcess(sourceId,name,startTimel,endTimel,31536000000L,1,1,"year"); + return dateProcess(sourceId, name, startTimel, endTimel, 31536000000L, 1, 1, "year"); } - }else if (format != null && format.equals("auto")){ + } else if (format != null && format.equals("auto")) { long minutes = (endTimel - startTimel) / (1000 * 60); long hours = minutes / 60; - if (hours > 12){ + if (hours > 12) { long days = hours / 24; - if (days > 3){ + if (days > 3) { long months = days / 31; - if (months > 2){ - return dateProcess(sourceId,name,startTimel,endTimel,86400000,1,1,"day"); - }else { - return dateProcess(sourceId,name,startTimel,endTimel,2592000000L,1,1,"month"); + if (months > 2) { + return dateProcess(sourceId, name, startTimel, endTimel, 86400000, 1, 1, "day"); + } else { + return dateProcess(sourceId, name, startTimel, endTimel, 2592000000L, 1, 1, "month"); } - }else { - return dateProcess(sourceId,name,startTimel,endTimel,3600000,1,1,"hour"); + } else { + return dateProcess(sourceId, name, startTimel, endTimel, 3600000, 1, 1, "hour"); } - }else { - return dateProcess(sourceId,name,startTimel,endTimel,900000,15,15,"minute"); + } else { + return dateProcess(sourceId, name, startTimel, endTimel, 900000, 15, 15, "minute"); } } } catch (ParseException e) { diff --git a/server/src/main/java/org/onap/usecaseui/server/service/AlarmsHeaderService.java b/server/src/main/java/org/onap/usecaseui/server/service/AlarmsHeaderService.java index b487f2b4..8d488d1f 100644 --- a/server/src/main/java/org/onap/usecaseui/server/service/AlarmsHeaderService.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/AlarmsHeaderService.java @@ -16,6 +16,7 @@ package org.onap.usecaseui.server.service; +import java.util.Date; import java.util.List; import org.onap.usecaseui.server.bean.AlarmsHeader; @@ -26,7 +27,10 @@ public interface AlarmsHeaderService { String saveAlarmsHeader(AlarmsHeader alarmsHeader); String updateAlarmsHeader(AlarmsHeader alarmsHeader); - + + public String updateAlarmsHeader2018(String status, String date, String eventNameCleared,String eventName, String reportingEntityName,String specificProblem); + + public Boolean getStatusBySourceName(String sourceName); int getAllCount(AlarmsHeader alarmsHeader, int currentPage, int pageSize); Page queryAlarmsHeader(AlarmsHeader alarmsHeader, int currentPage, int pageSize); diff --git a/server/src/main/java/org/onap/usecaseui/server/service/impl/AlarmsHeaderServiceImpl.java b/server/src/main/java/org/onap/usecaseui/server/service/impl/AlarmsHeaderServiceImpl.java index 17886074..43413d07 100755 --- a/server/src/main/java/org/onap/usecaseui/server/service/impl/AlarmsHeaderServiceImpl.java +++ b/server/src/main/java/org/onap/usecaseui/server/service/impl/AlarmsHeaderServiceImpl.java @@ -67,7 +67,44 @@ public class AlarmsHeaderServiceImpl implements AlarmsHeaderService { } } - + + @Override + public String updateAlarmsHeader2018(String status, String date,String eventNameCleared,String eventName, String reportingEntityName,String specificProblem) { + + try(Session session = sessionFactory.getCurrentSession();){ + logger.info("AlarmsInformationServiceImpl updateAlarmsInformation: alarmsInformation={}"); + session.beginTransaction(); + Query q=session.createQuery("update AlarmsHeader set status='"+status+"', eventName='"+eventNameCleared+"',updateTime='"+date+"' where eventName='"+eventName+"' and reportingEntityName='"+reportingEntityName+"' and specificProblem ='"+specificProblem+"' "); + q.executeUpdate(); + session.getTransaction().commit(); + session.flush(); + return "1"; + } catch (Exception e) { + logger.error("exception occurred while performing AlarmsInformationServiceImpl updateAlarmsInformation. Details:" + e.getMessage()); + return "0"; + } + } + + @Override + public Boolean getStatusBySourceName(String sourceName) { + try(Session session = sessionFactory.openSession()){ + logger.info("AlarmsInformationServiceImpl updateAlarmsInformation: alarmsInformation={}"); + Query q=session.createQuery("select status from AlarmsHeader where sourceName='"+sourceName+"'"); + String s=(String)q.uniqueResult(); + Boolean status=false; + if(s!=null && "active".equals(s)){ + status = true; + }else{ + status = false; + } + session.flush(); + return status; + } catch (Exception e) { + logger.error("exception occurred while performing AlarmsInformationServiceImpl updateAlarmsInformation. Details:" + e.getMessage()); + return false; + } + } + @Override public String updateAlarmsHeader(AlarmsHeader alarmsHeader) { diff --git a/server/src/main/java/org/onap/usecaseui/server/util/DateUtils.java b/server/src/main/java/org/onap/usecaseui/server/util/DateUtils.java index f4ac5263..a1d0e75d 100755 --- a/server/src/main/java/org/onap/usecaseui/server/util/DateUtils.java +++ b/server/src/main/java/org/onap/usecaseui/server/util/DateUtils.java @@ -25,6 +25,7 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; +import java.util.TimeZone; public class DateUtils { @@ -91,4 +92,54 @@ public class DateUtils { return new SimpleDateFormat(Constant.DATE_FORMAT).parse(dateToString(new Date())); } + public String getYearMonthDayHourMinuteSecond(long timeMillis) { + Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); + calendar.setTimeInMillis(timeMillis); + int year=calendar.get(Calendar.YEAR); + + int month=calendar.get(Calendar.MONTH) + 1; + String mToMonth=null; + if (String.valueOf(month).length()==1) { + mToMonth="0"+month; + } else { + mToMonth=String.valueOf(month); + } + + int day=calendar.get(Calendar.DAY_OF_MONTH); + String dToDay=null; + if (String.valueOf(day).length()==1) { + dToDay="0"+day; + } else { + dToDay=String.valueOf(day); + } + + int hour=calendar.get(Calendar.HOUR_OF_DAY); + String hToHour=null; + if (String.valueOf(hour).length()==1) { + hToHour="0"+hour; + } else { + hToHour=String.valueOf(hour); + } + + int minute=calendar.get(Calendar.MINUTE); + String mToMinute=null; + if (String.valueOf(minute).length()==1) { + mToMinute="0"+minute; + } else { + mToMinute=String.valueOf(minute); + } + + int second=calendar.get(Calendar.SECOND); + String sToSecond=null; + if (String.valueOf(second).length()==1) { + sToSecond="0"+second; + } else { + sToSecond=String.valueOf(second); + } + return year+ "-" +mToMonth+ "-" +dToDay+ " "+hToHour+ ":" +mToMinute+ ":" +sToSecond; + } + + public static void main(String[] args) { + System.out.println(new DateUtils().getYearMonthDayHourMinuteSecond(System.currentTimeMillis())); + } } diff --git a/server/src/main/java/org/onap/usecaseui/server/util/DmaapSubscriber.java b/server/src/main/java/org/onap/usecaseui/server/util/DmaapSubscriber.java index 7ae9e414..0632ed30 100644 --- a/server/src/main/java/org/onap/usecaseui/server/util/DmaapSubscriber.java +++ b/server/src/main/java/org/onap/usecaseui/server/util/DmaapSubscriber.java @@ -39,6 +39,8 @@ import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; @Component @@ -202,16 +204,7 @@ public class DmaapSubscriber implements Runnable { try { List> m = (List>) v3; m.forEach(i -> { - if (i.get("name").toString().equals("eventTime")) - try { - alarm_header.setCreateTime(DateUtils.stringToDate(i.get("value").toString())); - alarm_header.setUpdateTime(DateUtils.now()); - } catch (ParseException e) { - e.printStackTrace(); - } - else { - alarm_informations.add(new AlarmsInformation(i.get("name").toString(), i.get("value").toString(), alarm_header.getSourceId(), null, new Date())); - } + alarm_informations.add(new AlarmsInformation(i.get("name").toString(), i.get("value").toString(), alarm_header.getSourceId(), new Date(), null)); }); } catch (Exception e) { e.printStackTrace(); @@ -222,38 +215,45 @@ public class DmaapSubscriber implements Runnable { } }); - if (alarm_header.getEventName() != null && alarm_informations.size() > 0){ + if (alarm_header.getEventName() != null){ alarm_informations.forEach(ai -> { ai.setCreateTime(alarm_header.getCreateTime()); ai.setUpdateTime(new Date()); }); + + Long startEpochMicrosec_s = Long.parseLong(alarm_header.getStartEpochMicrosec()); + String date_get = new DateUtils().getYearMonthDayHourMinuteSecond(startEpochMicrosec_s); + if (alarm_header.getEventName().contains("Cleared")) { - alarm_header.setStatus("3"); + alarm_header.setStatus("close"); logger.info("alarmCleared data header insert is starting......"); - alarmsHeaderService.saveAlarmsHeader(alarm_header); + alarmsHeaderService.updateAlarmsHeader2018("close",date_get,alarm_header.getEventName(),alarm_header.getEventName().replace("Cleared",""),alarm_header.getReportingEntityName(),alarm_header.getSpecificProblem()); logger.info("alarmCleared data header insert has finished."); logger.info("alarmCleared data detail insert is starting......"); alarm_informations.forEach(information -> - alarmsInformationService.saveAlarmsInformation(information)); + alarmsInformationService.saveAlarmsInformation(information)); + logger.info("alarmCleared data detail insert has finished. " + alarm_informations.size() + " records have been inserted."); AlarmsHeader header1 = new AlarmsHeader(); header1.setEventName(alarm_header.getEventName().substring(0, alarm_header.getEventName().indexOf("Cleared"))); List alarmsHeaders = alarmsHeaderService.queryAlarmsHeader(header1, 1, 10).getList(); alarmsHeaders.forEach(alarms -> { alarms.setStatus("2"); - alarms.setUpdateTime(new Date()); + alarms.setUpdateTime(alarm_header.getCreateTime()); alarmsHeaderService.updateAlarmsHeader(alarms); }); } else { - alarm_header.setUpdateTime(new Date()); - alarm_header.setStatus("1"); + alarm_header.setCreateTime(new Date()); + alarm_header.setStatus("active"); logger.info("alarm data header insert is starting......"); alarmsHeaderService.saveAlarmsHeader(alarm_header); logger.info("alarm data header insert has finished."); logger.info("alarm data detail insert is starting......"); - alarm_informations.forEach(information -> - alarmsInformationService.saveAlarmsInformation(information)); - logger.info("alarm data detail insert has finished. " + alarm_informations.size() + " records have been inserted."); + if(alarm_informations.size() > 0) { + alarm_informations.forEach(information -> + alarmsInformationService.saveAlarmsInformation(information)); + logger.info("alarm data detail insert has finished. " + alarm_informations.size() + " records have been inserted."); + } } } } @@ -305,29 +305,29 @@ public class DmaapSubscriber implements Runnable { try { List> m = (List>) v3; m.forEach(i -> { - if (i.containsKey("arrayOfFields")){ - List> arrayOfFields = (List>) i.get("arrayOfFields"); - arrayOfFields.forEach( fields -> { - if (fields.get("name").equals("StartTime")){ - try { - performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now())); - performance_header.setCreateTime(DateUtils.stringToDate(fields.get("value").replaceAll(Constant.RegEX_DATE_FORMAT," "))); - performance_header.setUpdateTime(DateUtils.now()); - } catch (ParseException e) { - e.printStackTrace(); - } - }else{ - try { - performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now())); - } catch (ParseException e) { - e.printStackTrace(); + i.forEach( (k,v) -> { + if (k.equals("arrayOfFields")){ + List> arrayOfFields = (List>) v; + arrayOfFields.forEach( fields -> { + if (fields.get("name").equals("StartTime")){ + try { + performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now())); + performance_header.setCreateTime(DateUtils.stringToDate(fields.get("value").replaceAll(Constant.RegEX_DATE_FORMAT," "))); + performance_header.setUpdateTime(DateUtils.now()); + } catch (ParseException e) { + e.printStackTrace(); + } + }else{ + try { + performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now())); + } catch (ParseException e) { + e.printStackTrace(); + } } - } - } ); - } - + } ); + } + }); }); - } catch (Exception e) { e.printStackTrace(); logger.error("convert performanceAdditionalInformation error:" + e.getMessage()); diff --git a/standalone/src/main/assembly/resources/topologyD_data.json b/standalone/src/main/assembly/resources/topologyD_data.json new file mode 100644 index 00000000..b945ae3a --- /dev/null +++ b/standalone/src/main/assembly/resources/topologyD_data.json @@ -0,0 +1,21 @@ +{ + "services":[ + {"ServiceName":"VoLTE"}, + {"ServiceName":"VoLTE_1"} + ], + "networkServices":[ + {"nsName":"ns1","parentService":"VoLTE"}, + {"nsName":"ns2","parentService":"VoLTE"}, + {"nsName":"ns3","parentService":"VoLTE"} + ], + "VNFS":[ + {"vnfName":"vnf_a_1","parentNS":"ns1"}, + {"vnfName":"vnf_a_2","parentNS":"ns1"}, + {"vnfName":"vnf_a_3","parentNS":"ns1"}, + {"vnfName":"vnf_b_1","parentNS":"ns2"}, + {"vnfName":"vnf_b_2","parentNS":"ns2"}, + {"vnfName":"vnf_b_3","parentNS":"ns2"}, + {"vnfName":"vnf_c_1","parentNS":"ns3"}, + {"vnfName":"vnf_c_1","parentNS":"ns3"} + ] +} \ No newline at end of file -- cgit 1.2.3-korg