Fix monitor bug about alarm record update 71/29471/1
authorshentao <shentao@chinamobile.com>
Mon, 29 Jan 2018 08:20:28 +0000 (16:20 +0800)
committershentao <shentao@chinamobile.com>
Mon, 29 Jan 2018 08:20:36 +0000 (16:20 +0800)
Change-Id: Ieb08e334aa50747b61baa63bf78b277546ace029
Issue-ID: USECASEUI-101
Signed-off-by: shentao <shentao@chinamobile.com>
server/pom.xml
server/src/main/java/org/onap/usecaseui/server/controller/AlarmController.java
server/src/main/java/org/onap/usecaseui/server/controller/PerformanceController.java
server/src/main/java/org/onap/usecaseui/server/service/AlarmsHeaderService.java
server/src/main/java/org/onap/usecaseui/server/service/impl/AlarmsHeaderServiceImpl.java
server/src/main/java/org/onap/usecaseui/server/util/DateUtils.java
server/src/main/java/org/onap/usecaseui/server/util/DmaapSubscriber.java
standalone/src/main/assembly/resources/topologyD_data.json [new file with mode: 0644]

index 9c68cff..1c8ba79 100644 (file)
             <version>2.3.0</version>
         </dependency>
 
+        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.23</version>
+        </dependency>
         <dependency>
             <groupId>org.openecomp.sdc.jtosca</groupId>
             <artifactId>jtosca</artifactId>
index 502bd7b..31cf215 100755 (executable)
@@ -18,6 +18,9 @@ package org.onap.usecaseui.server.controller;
 import javax.annotation.Resource;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
+import com.alibaba.fastjson.JSON;\r
+import com.alibaba.fastjson.JSONArray;\r
+import com.alibaba.fastjson.JSONObject;\r
 import com.fasterxml.jackson.core.JsonProcessingException;\r
 import com.fasterxml.jackson.databind.ObjectMapper;\r
 import org.onap.usecaseui.server.bean.AlarmsHeader;\r
@@ -36,23 +39,21 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.web.bind.annotation.*;\r
 import org.springframework.web.servlet.ModelAndView;\r
 \r
-import java.io.FileInputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
+import java.io.*;\r
+import java.text.DateFormat;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
 import java.time.LocalDateTime;\r
 import java.time.ZoneId;\r
 import java.time.ZonedDateTime;\r
+import java.time.format.DateTimeFormatter;\r
 import java.util.*;\r
 \r
 \r
 @RestController\r
 @org.springframework.context.annotation.Configuration\r
 @EnableAspectJAutoProxy\r
-public class AlarmController\r
-{\r
+public class AlarmController {\r
 \r
 \r
     private final Logger logger = LoggerFactory.getLogger(AlarmController.class);\r
@@ -69,76 +70,71 @@ public class AlarmController
 \r
     @RequestMapping(value = {"/alarm/{currentPage}/{pageSize}",\r
             "/alarm/{currentPage}/{pageSize}/{sourceId}/{sourceName}/{priority}/{startTime}/{endTime}/{vfStatus}"},\r
-            method = RequestMethod.GET , produces = "application/json")\r
-    public String getAlarmData(@PathVariable(required = false) String sourceId,@PathVariable(required = false) String sourceName,\r
-                               @PathVariable(required = false) String priority,@PathVariable(required = false) String startTime,\r
-                               @PathVariable(required = false) String endTime,@PathVariable(required = false) String vfStatus,\r
+            method = RequestMethod.GET, produces = "application/json")\r
+    public String getAlarmData(@PathVariable(required = false) String sourceId, @PathVariable(required = false) String sourceName,\r
+                               @PathVariable(required = false) String priority, @PathVariable(required = false) String startTime,\r
+                               @PathVariable(required = false) String endTime, @PathVariable(required = false) String vfStatus,\r
                                @PathVariable int currentPage, @PathVariable int pageSize) throws JsonProcessingException {\r
         logger.info("transfer getAlarmData Apis, " +\r
-                "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " +\r
-                "sourceName : {} , priority : {} , startTime :{} , endTime : {}  , vfStatus : {}]"\r
-                ,currentPage,pageSize,sourceId,sourceName,priority,startTime,endTime,vfStatus);\r
+                        "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " +\r
+                        "sourceName : {} , priority : {} , startTime :{} , endTime : {}  , vfStatus : {}]"\r
+                , currentPage, pageSize, sourceId, sourceName, priority, startTime, endTime, vfStatus);\r
         List<AlarmsHeader> alarmsHeaders = null;\r
         List<AlarmBo> list = new ArrayList<>();\r
         Page pa = null;\r
         if (null != sourceId || null != sourceName || null != priority || null != startTime || null != endTime\r
-                || null != vfStatus  ){\r
+                || null != vfStatus{\r
             AlarmsHeader alarm = new AlarmsHeader();\r
-            alarm.setSourceId(!"null".equals(sourceId)?sourceId:null);\r
-            alarm.setSourceName(!"null".equals(sourceName)?sourceName:null);\r
-            alarm.setStatus(!"null".equals(vfStatus)?vfStatus:null);\r
+            alarm.setSourceId(!"null".equals(sourceId) ? sourceId : null);\r
+            alarm.setSourceName(!"null".equals(sourceName) ? sourceName : null);\r
+            alarm.setStatus(!"null".equals(vfStatus) ? vfStatus : null);\r
             try {\r
-                alarm.setCreateTime(!"null".equals(startTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime):null);\r
-                alarm.setUpdateTime(!"null".equals(endTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime):null);\r
+                alarm.setCreateTime(!"null".equals(startTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime) : null);\r
+                alarm.setUpdateTime(!"null".equals(endTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime) : null);\r
             } catch (ParseException e) {\r
-                logger.error("Parse date error :"+e.getMessage());\r
+                logger.error("Parse date error :" + e.getMessage());\r
             }\r
-            pa = alarmsHeaderService.queryAlarmsHeader(alarm,currentPage,pageSize);\r
+            pa = alarmsHeaderService.queryAlarmsHeader(alarm, currentPage, pageSize);\r
 \r
             alarmsHeaders = pa.getList();\r
             if (null != alarmsHeaders && alarmsHeaders.size() > 0) {\r
-                alarmsHeaders.forEach(a ->{\r
+                alarmsHeaders.forEach(a -> {\r
                     logger.info(a.toString());\r
                     AlarmBo abo = new AlarmBo();\r
-                    if (!a.getStatus().equals("3")){\r
+                    if (!a.getStatus().equals("3")) {\r
                         abo.setAlarmsHeader(a);\r
                         AlarmsInformation information = new AlarmsInformation();\r
                         information.setEventId(a.getSourceId());\r
-                        List<AlarmsInformation> informationList = alarmsInformationService.queryAlarmsInformation(information,1,100).getList();\r
+                        List<AlarmsInformation> informationList = alarmsInformationService.queryAlarmsInformation(information, 1, 100).getList();\r
                         abo.setAlarmsInformation(informationList);\r
                         list.add(abo);\r
                     }\r
                 });\r
             }\r
-        }else {\r
+        } else {\r
             pa = alarmsHeaderService.queryAlarmsHeader(null, currentPage, pageSize);\r
             alarmsHeaders = pa.getList();\r
             if (null != alarmsHeaders && alarmsHeaders.size() > 0) {\r
                 alarmsHeaders.forEach(a -> {\r
                     AlarmBo abo = new AlarmBo();\r
-                    if (!a.getStatus().equals("3")){\r
+                    if (!a.getStatus().equals("3")) {\r
                         abo.setAlarmsHeader(a);\r
-                        abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()),currentPage,pageSize).getList());\r
+                        abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()), currentPage, pageSize).getList());\r
                         list.add(abo);\r
                     }\r
 \r
                 });\r
             }\r
         }\r
-        try {\r
-            Map<String,Object> map = new HashMap<>();\r
-            map.put("alarms",list);\r
-            map.put("totalRecords",pa.getTotalRecords());\r
-            omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));\r
-            return omAlarm.writeValueAsString(map);\r
-        } catch (JsonProcessingException e) {\r
-            logger.debug("JsonProcessingException :"+e.getMessage());\r
-            return omAlarm.writeValueAsString("failed");\r
-        }\r
+        Map<String, Object> map = new HashMap<>();\r
+        map.put("alarms", list);\r
+        map.put("totalRecords", pa.getTotalRecords());\r
+        omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));\r
+        return omAlarm.writeValueAsString(map);\r
     }\r
 \r
-    @RequestMapping(value = "/alarm/statusCount",method = RequestMethod.GET , produces = "application/json")\r
-    public String getStatusCount(){\r
+    @RequestMapping(value = "/alarm/statusCount", method = RequestMethod.GET, produces = "application/json")\r
+    public String getStatusCount() {\r
         List<String> statusCount = new ArrayList<>();\r
         try {\r
             statusCount.add(alarmsHeaderService.queryStatusCount("0"));\r
@@ -152,41 +148,160 @@ public class AlarmController
         return null;\r
     }\r
 \r
-    @RequestMapping(value = {"/alarm/sourceId"},method = RequestMethod.GET)\r
-    public String getSourceId(){\r
+    @RequestMapping(value = {"/topology/{serviceName}"}, method = RequestMethod.GET)\r
+    public String getTopologyData(@PathVariable String serviceName) {\r
+        Map<String,Object> topologyMap = new HashMap<>();\r
+        try {\r
+            topologyMap.put("name",serviceName);\r
+\r
+            List<Map<String,Object>> networkServices = (List<Map<String, Object>>) getAllVNFS().get("networkServices");\r
+            List<Map<String,Object>> VNFS = (List<Map<String, Object>>) getAllVNFS().get("VNFS");\r
+\r
+            List<Map<String,Object>> children = new ArrayList<>();\r
+            networkServices.forEach( i -> {\r
+                Map<String,Object> childrenMap = new HashMap<>();\r
+                i.forEach( (k,v) -> {\r
+                    if (k.equals("parentService"))\r
+                        if (v.equals(serviceName)){\r
+                            childrenMap.put("name",i.get("nsName"));\r
+                            List<Map<String,Object>> childrenList = new ArrayList<>();\r
+                            VNFS.forEach( j -> {\r
+                                Map<String,Object> childrenJMap = new HashMap<>();\r
+                                j.forEach( (k1,v2) -> {\r
+                                    if (k1.equals("parentNS"))\r
+                                        if (v2.equals(i.get("nsName"))) {\r
+                                            childrenJMap.put("name",j.get("vnfName"));\r
+                                            childrenJMap.put("isAlarm",j.get("isAlarm"));\r
+                                        }\r
+                                });\r
+                                if (childrenJMap.size() > 0)\r
+                                    childrenList.add(childrenJMap);\r
+                            });\r
+                            if (childrenList.size() > 0) {\r
+                                childrenMap.put("children",childrenList);\r
+                            }\r
+                        }\r
+                });\r
+                if (childrenMap.size() > 0) {\r
+                    children.add(childrenMap);\r
+                }\r
+            });\r
+            if (children.size() > 0) {\r
+                topologyMap.put("children",children);\r
+            }\r
+            return omAlarm.writeValueAsString(topologyMap);\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+            return null;\r
+        }\r
+    }\r
+\r
+    @RequestMapping(value = {"/topology/services"}, method = RequestMethod.GET)\r
+    public String getTopologyServices() {\r
+        try {\r
+            List<Map<String,Object>> services = (List<Map<String, Object>>) getAllVNFS().get("services");\r
+            services.forEach( i -> {\r
+               i.forEach( (k,v) -> {\r
+                   if (k.equals("ServiceName")) {\r
+                       AlarmsHeader alarmsHeader = new AlarmsHeader();\r
+                       alarmsHeader.setSourceId(v.toString());\r
+                       List<AlarmsHeader> alarmsHeaderList = alarmsHeaderService.queryAlarmsHeader(alarmsHeader,1,10).getList();\r
+                       alarmsHeaderList.forEach(alarmsHeader1 -> {\r
+                           if (alarmsHeader1.getStatus().equals("1")) {\r
+                               i.replace("isAlarm","true");\r
+                           }\r
+                       });\r
+                   }\r
+               });\r
+            });\r
+            return omAlarm.writeValueAsString(services);\r
+        } catch (Exception e) {\r
+            logger.error(e.getMessage());\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private Map<String,Object> getTopologyData() throws IOException {\r
+        String data = "";\r
+        try {\r
+            BufferedReader br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json"));\r
+            String tmpStr = "";\r
+            while ((tmpStr=br.readLine()) != null) {\r
+                data += tmpStr;\r
+            }\r
+            br.close();\r
+        } catch (FileNotFoundException e) {\r
+            e.printStackTrace();\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+        }\r
+        Map<String,Object> map = omAlarm.readValue(data, Map.class);\r
+        return map;\r
+    }\r
+\r
+    public Map<String,Object>   getAllVNFS() throws IOException {\r
+        String data="";\r
+        try {\r
+            String str=null;\r
+            BufferedReader  br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json"));\r
+            while ((str=br.readLine())!=null) {\r
+                data += str;\r
+            }\r
+            br.close();\r
+        } catch (FileNotFoundException e) {\r
+            e.printStackTrace();\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+        }\r
+        JSONObject jsonObject = (JSONObject) JSON.parseObject(data);\r
+        JSONArray jsonArray = jsonObject.getJSONArray("VNFS");\r
+\r
+        for (int a=0;a<jsonArray.size();a++) {\r
+            JSONObject jsonObject1 = jsonArray.getJSONObject(a);\r
+            String vnfName = jsonObject1.getString("vnfName");\r
+            Boolean name =   alarmsHeaderService.getStatusBySourceName(vnfName);\r
+            jsonObject1.put("isAlarm",name);\r
+            System.out.print("vnfName===="+vnfName+"name====="+name);\r
+        }\r
+\r
+        String jsonS = jsonObject.toJSONString();\r
+        System.out.print("toJSONString===="+jsonS);\r
+\r
+        Map<String,Object> map = omAlarm.readValue(jsonS, Map.class);\r
+        return map;\r
+    }\r
+\r
+\r
+    @RequestMapping(value = {"/alarm/sourceId"}, method = RequestMethod.GET)\r
+    public String getSourceId() throws JsonProcessingException {\r
         List<String> sourceIds = new ArrayList<>();\r
-        alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(),1,Integer.MAX_VALUE).getList().forEach( al ->{\r
+        alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(), 1, Integer.MAX_VALUE).getList().forEach(al -> {\r
             if (!al.getStatus().equals("3") &&\r
                     !sourceIds.contains(al.getSourceId()))\r
                 sourceIds.add(al.getSourceId());\r
-        } );\r
-        try {\r
-            return omAlarm.writeValueAsString(sourceIds);\r
-        } catch (JsonProcessingException e) {\r
-            e.printStackTrace();\r
-            return "";\r
-        }\r
+        });\r
+        return omAlarm.writeValueAsString(sourceIds);\r
     }\r
 \r
-    @RequestMapping(value = {"/alarm/diagram"},method = RequestMethod.POST)\r
-    public String genDiagram(@RequestParam String sourceId,@RequestParam String startTime,@RequestParam String endTime,@RequestParam String showMode){\r
+    @RequestMapping(value = {"/alarm/diagram"}, method = RequestMethod.POST)\r
+    public String genDiagram(@RequestParam String sourceId, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String showMode) {\r
         try {\r
-            return omAlarm.writeValueAsString(diagramDate(sourceId,startTime,endTime,showMode));\r
+            return omAlarm.writeValueAsString(diagramDate(sourceId, startTime, endTime, showMode));\r
         } catch (JsonProcessingException e) {\r
             e.printStackTrace();\r
             return "";\r
         }\r
     }\r
 \r
-    private List<List<Long>> dateProcess(String sourceId,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException {\r
+    private List<List<Long>> dateProcess(String sourceId, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException {\r
         List<List<Long>> dataList = new ArrayList<>();\r
         long tmpEndTimeL = startTimeL + timeIteraPlusVal;\r
-        while (endTimeL >= tmpEndTimeL){\r
-            List<Map<String,String>> maps = alarmsInformationService.queryDateBetween(sourceId,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL)));\r
-            maps.forEach( map -> {\r
+        while (endTimeL >= tmpEndTimeL) {\r
+            List<Map<String, String>> maps = alarmsInformationService.queryDateBetween(sourceId, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL)));\r
+            maps.forEach(map -> {\r
                 try {\r
                     List<Long> longList = new ArrayList<>();\r
-                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")) ){\r
+                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")){\r
                         longList.add(sdf.parse(map.get("Time")).getTime());\r
                         if (map.get("Count") != null && !"".equals(map.get("Count")))\r
                             longList.add(Long.parseLong(map.get("Count")));\r
@@ -199,7 +314,7 @@ public class AlarmController
                     e.printStackTrace();\r
                 }\r
 \r
-            } );\r
+            });\r
             startTimeL += timeIteraPlusVal;\r
             tmpEndTimeL += timeIteraPlusVal;\r
             keyVal += keyValIteraVal;\r
@@ -207,40 +322,40 @@ public class AlarmController
         return dataList;\r
     }\r
 \r
-    private List<List<Long>> diagramDate(String sourceId,String startTime,String endTime,String format){\r
+    private List<List<Long>> diagramDate(String sourceId, String startTime, String endTime, String format) {\r
         try {\r
             long startTimel = sdf.parse(startTime).getTime();\r
             long endTimel = sdf.parse(endTime).getTime();\r
-            if (format != null && !format.equals("auto")){\r
-                switch (format){\r
+            if (format != null && !format.equals("auto")) {\r
+                switch (format) {\r
                     case "minute":\r
-                        return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute");\r
                     case "hour":\r
-                        return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour");\r
                     case "day":\r
-                        return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day");\r
                     case "month":\r
-                        return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month");\r
                     case "year":\r
-                        return dateProcess(sourceId,startTimel,endTimel,31536000000L,1,1,"year");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 31536000000L, 1, 1, "year");\r
                 }\r
-            }else if (format != null && format.equals("auto")){\r
+            } else if (format != null && format.equals("auto")) {\r
                 long minutes = (endTimel - startTimel) / (1000 * 60);\r
                 long hours = minutes / 60;\r
-                if (hours > 12){\r
+                if (hours > 12) {\r
                     long days = hours / 24;\r
-                    if (days > 3){\r
+                    if (days > 3) {\r
                         long months = days / 31;\r
-                        if (months > 2){\r
-                            return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day");\r
-                        }else {\r
-                            return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month");\r
+                        if (months > 2) {\r
+                            return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day");\r
+                        } else {\r
+                            return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month");\r
                         }\r
-                    }else {\r
-                        return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour");\r
+                    } else {\r
+                        return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour");\r
                     }\r
-                }else {\r
-                    return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute");\r
+                } else {\r
+                    return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute");\r
                 }\r
             }\r
         } catch (ParseException e) {\r
index f534264..eeddf6c 100755 (executable)
@@ -120,16 +120,11 @@ public class PerformanceController {
                     list.add(pbo);
                 });
         }
-        try {
-            Map<String, Object> 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<String, Object> 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<String> 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<List<Long>> dateProcess(String sourceId,String name,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException {
+    private List<List<Long>> dateProcess(String sourceId, String name, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException {
         List<List<Long>> dataList = new ArrayList<>();
         long tmpEndTimeL = startTimeL + timeIteraPlusVal;
-        while (endTimeL >= tmpEndTimeL){
-            List<Map<String,String>> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId,name,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL)));
-            maps.forEach( map -> {
+        while (endTimeL >= tmpEndTimeL) {
+            List<Map<String, String>> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId, name, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL)));
+            maps.forEach(map -> {
                 try {
                     List<Long> 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<List<Long>> diagramDate(String sourceId,String name,String startTime,String endTime,String format){
+    private List<List<Long>> 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) {
index b487f2b..8d488d1 100644 (file)
@@ -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<AlarmsHeader> queryAlarmsHeader(AlarmsHeader alarmsHeader, int currentPage, int pageSize);
index 1788607..43413d0 100755 (executable)
@@ -67,7 +67,44 @@ public class AlarmsHeaderServiceImpl implements AlarmsHeaderService {
                }\r
                \r
        }\r
-       \r
+\r
+       @Override\r
+       public String updateAlarmsHeader2018(String status, String date,String eventNameCleared,String eventName, String reportingEntityName,String specificProblem) {\r
+\r
+               try(Session session = sessionFactory.getCurrentSession();){\r
+                       logger.info("AlarmsInformationServiceImpl updateAlarmsInformation: alarmsInformation={}");\r
+                       session.beginTransaction();\r
+                       Query q=session.createQuery("update AlarmsHeader set status='"+status+"', eventName='"+eventNameCleared+"',updateTime='"+date+"' where eventName='"+eventName+"' and reportingEntityName='"+reportingEntityName+"' and specificProblem ='"+specificProblem+"' ");\r
+                       q.executeUpdate();\r
+                       session.getTransaction().commit();\r
+                       session.flush();\r
+                       return "1";\r
+               } catch (Exception e) {\r
+                       logger.error("exception occurred while performing AlarmsInformationServiceImpl updateAlarmsInformation. Details:" + e.getMessage());\r
+                       return "0";\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public Boolean getStatusBySourceName(String sourceName) {\r
+               try(Session session = sessionFactory.openSession()){\r
+                       logger.info("AlarmsInformationServiceImpl updateAlarmsInformation: alarmsInformation={}");\r
+                       Query q=session.createQuery("select status from AlarmsHeader where sourceName='"+sourceName+"'");\r
+                       String s=(String)q.uniqueResult();\r
+                       Boolean status=false;\r
+                       if(s!=null && "active".equals(s)){\r
+                               status = true;\r
+                       }else{\r
+                               status = false;\r
+                       }\r
+                       session.flush();\r
+                       return status;\r
+               } catch (Exception e) {\r
+                       logger.error("exception occurred while performing AlarmsInformationServiceImpl updateAlarmsInformation. Details:" + e.getMessage());\r
+                       return false;\r
+               }\r
+       }\r
+\r
 \r
        @Override\r
        public String updateAlarmsHeader(AlarmsHeader alarmsHeader) {\r
index f4ac526..a1d0e75 100755 (executable)
@@ -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()));
+    }
 }
index 7ae9e41..0632ed3 100644 (file)
@@ -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<Map<String, Object>> m = (List<Map<String, Object>>) 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<AlarmsHeader> 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<Map<String, Object>> m = (List<Map<String, Object>>) v3;
                             m.forEach(i -> {
-                                if (i.containsKey("arrayOfFields")){
-                                    List<Map<String,String>> arrayOfFields = (List<Map<String, String>>) 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<Map<String,String>> arrayOfFields = (List<Map<String, String>>) 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 (file)
index 0000000..b945ae3
--- /dev/null
@@ -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