/* * ============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.GetMapping; 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); @GetMapping(value = { "raptor/dashboard/run/{parameter}" }, 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); } }