From 28af72fc23a1e0cb67e1ac1b5fac6b6d9020270a Mon Sep 17 00:00:00 2001 From: mravula Date: Mon, 16 Dec 2019 15:37:23 -0500 Subject: Resolved null-pointer-exception while running raptor test cases Issue-ID: PORTAL-725 Change-Id: I31b57e200b98e616f32f73e1b6a14682555fca94 Signed-off-by: mravula --- .../fusion/web/RaptorDashboardController.java | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorDashboardController.java (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorDashboardController.java') diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorDashboardController.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorDashboardController.java new file mode 100644 index 00000000..dd18a1a2 --- /dev/null +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorDashboardController.java @@ -0,0 +1,119 @@ +/* + * ============LICENSE_START========================================== + * ONAP Portal SDK + * =================================================================== + * 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============================================ + * + * + */ +package org.onap.portalsdk.analytics.system.fusion.web; + +import java.util.HashMap; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; + +import org.onap.portalsdk.analytics.model.ReportHandler; +import org.onap.portalsdk.analytics.model.ReportLoader; +import org.onap.portalsdk.analytics.model.base.ReportWrapper; +import org.onap.portalsdk.analytics.model.runtime.DashboardRunJSON; +import org.onap.portalsdk.analytics.system.Globals; +import org.onap.portalsdk.analytics.xmlobj.CustomReportType; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +/** + * For dashboard reports. + */ +@RestController +@RequestMapping("/") +public class RaptorDashboardController extends RestrictedBaseController { + + private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorDashboardController.class); + + @RequestMapping(value = { "raptor/dashboard/run/{parameter}" }, method = RequestMethod.GET, produces = "application/json") + @ResponseBody + public DashboardRunJSON dashboardRun(@PathVariable("parameter") String reportId, HttpServletRequest request) { + ServletContext servletContext = request.getSession().getServletContext(); + if (!Globals.isSystemInitialized()) { + Globals.initializeSystem(servletContext); + } + DashboardRunJSON dashboardRunJSON = new DashboardRunJSON(); + dashboardRunJSON.setReportId(reportId); + try { + ReportHandler rh1 = new ReportHandler(); + if (reportId != null) { + String reportXML = ReportLoader.loadCustomReportXML(reportId); + CustomReportType crType = ReportWrapper.unmarshalCR(reportXML); + dashboardRunJSON.setDashboardLayoutJSON(crType.getDashboardLayoutJSON()); + + String strHTML = crType.getDashboardLayoutHTML(); + dashboardRunJSON.setReportsFromDashBoardHTML(getListOfReportsFromDashBoardHTML(strHTML)); + + reportXML = ReportLoader.loadCustomReportXML(((String)dashboardRunJSON.getReportsFromDashBoardHTML().get("1")).substring(1)); + crType = ReportWrapper.unmarshalCR(reportXML); + dashboardRunJSON.setFormFieldList(crType.getFormFieldList()); + dashboardRunJSON.setFormFieldGroupsJSON(crType.getFormFieldGroupsJSON()); + } + } catch (Exception ex) { + logger.error(EELFLoggerDelegate.errorLogger, "getManifest failed", ex); + dashboardRunJSON.setErrorMessage(ex.toString()); + } + return dashboardRunJSON; + } + + private TreeMap getListOfReportsFromDashBoardHTML(String htmlString) { + String sourcestring = htmlString; + Pattern re = Pattern.compile("\\[(.*?)\\]"); + Matcher m = re.matcher(sourcestring); + HashMap hashReports = new HashMap(); + int mIdx = 0; + while (m.find()) { + for (int groupIdx = 0; groupIdx < m.groupCount(); groupIdx++) { + String str = m.group(groupIdx); + hashReports.put(new String(Integer.toString(mIdx + 1)), + (str.substring(1).toLowerCase().startsWith("chart") ? "c" : "d") + + str.substring(str.indexOf("#") + 1, str.length() - 1)); + } + mIdx++; + } + return new TreeMap(hashReports); + } +} \ No newline at end of file -- cgit 1.2.3-korg