summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java')
-rw-r--r--ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java3401
1 files changed, 0 insertions, 3401 deletions
diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java
deleted file mode 100644
index bd780859..00000000
--- a/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ReportRuntime.java
+++ /dev/null
@@ -1,3401 +0,0 @@
-/*-
- * ================================================================================
- * ECOMP Portal SDK
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file 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.
- * ================================================================================
- */
-package org.openecomp.portalsdk.analytics.model.runtime;
-
-import java.io.Serializable;
-import java.sql.Connection;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.openecomp.portalsdk.analytics.error.RaptorException;
-import org.openecomp.portalsdk.analytics.model.DataCache;
-import org.openecomp.portalsdk.analytics.model.ReportHandler;
-import org.openecomp.portalsdk.analytics.model.ReportLoader;
-import org.openecomp.portalsdk.analytics.model.base.IdNameList;
-import org.openecomp.portalsdk.analytics.model.base.IdNameSql;
-import org.openecomp.portalsdk.analytics.model.base.IdNameValue;
-import org.openecomp.portalsdk.analytics.model.base.ReportWrapper;
-import org.openecomp.portalsdk.analytics.model.definition.Marker;
-import org.openecomp.portalsdk.analytics.system.AppUtils;
-import org.openecomp.portalsdk.analytics.system.ConnectionUtils;
-import org.openecomp.portalsdk.analytics.system.DbUtils;
-import org.openecomp.portalsdk.analytics.system.Globals;
-import org.openecomp.portalsdk.analytics.util.AppConstants;
-import org.openecomp.portalsdk.analytics.util.DataSet;
-import org.openecomp.portalsdk.analytics.util.Utils;
-import org.openecomp.portalsdk.analytics.view.ColumnHeader;
-import org.openecomp.portalsdk.analytics.view.ColumnHeaderRow;
-import org.openecomp.portalsdk.analytics.view.CrossTabOrderManager;
-import org.openecomp.portalsdk.analytics.view.CrossTabTotalValue;
-import org.openecomp.portalsdk.analytics.view.DataRow;
-import org.openecomp.portalsdk.analytics.view.DataValue;
-import org.openecomp.portalsdk.analytics.view.ReportData;
-import org.openecomp.portalsdk.analytics.view.RowHeaderCol;
-import org.openecomp.portalsdk.analytics.xmlobj.CustomReportType;
-import org.openecomp.portalsdk.analytics.xmlobj.DataColumnType;
-import org.openecomp.portalsdk.analytics.xmlobj.FormFieldType;
-import org.openecomp.portalsdk.analytics.xmlobj.ObjectFactory;
-import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-
-/**<HR/>
- * This class is part of <B><I>RAPTOR (Rapid Application Programming Tool for OLAP Reporting)</I></B><BR/>
- * <HR/>
- *
- * --------------------------------------------------------------------------------------------------<BR/>
- * <B>ReportRuntime.java</B> - This class involves in running, downloading RAPTOR reports.
- * --------------------------------------------------------------------------------------------------<BR/>
- *
- *
- * <U>Change Log</U><BR/><BR/>
- *
- * 27-Aug-2009 : Version 8.5 (Sundar); <UL><LI>Order by logic is restored for DAYTONA.</LI></UL>
- * 13-Aug-2009 : Version 8.5 (Sundar); <UL><LI>Removing order by logic is rollbacked.</LI></UL>
- * 22-Jun-2009 : Version 8.4 (Sundar); <UL><LI>Bug while parsing SQL for text download is fixed.</LI></UL>
- *
- */
-
-public class ReportRuntime extends ReportWrapper implements Cloneable, Serializable {
-
- static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ReportRuntime.class);
-
-
- //TODO DELETE IF PARSE SQL is not working
- private int curSQLParsePos = 0;
-
- private String xmlFileURL = null;
-
- private String xmlFileName = null;
-
- private String flatFileName = null;
-
- private String excelPageFileName = null;
-
- private int reportDataSize = -1;
-
- private boolean displayChart = true;
-
- private boolean displayForm = true;
-
- private boolean displayContent = true;
-
- private boolean reportRunLogged = false; // Used to avoid multiple
- // entries in the report log
- // when executing with different
- // params or going to next page
-
- private DataSet chartDataCache = null;
-
- private ReportData pageDataCache = null;
-
- private int cachedPageNo = -1;
-
- private String cachedSQL = null; // For display purposes only
-
- private String wholeSQL = null; // For display purposes only
-
- private String totalSql = null; // For display purposes only
-
- private ReportParamValues reportParamValues = null;
-
- private ReportParamValuesForPDFExcel reportParamValuesFPE = null;
-
- private ReportFormFields reportFormFields = null;
-
- private VisualManager visualManager = null;
-
- private CrossTabOrderManager crossTabOrderManager = null;
-
- private boolean displayColTotals = false;
-
- private boolean displayRowTotals = false;
-
- private DataRow colDataTotalsLinear = null;
-
- private Vector colDataTotalsCrosstab = null;
-
- private Vector rowDataTotalsCrosstab = null;
-
- private String grandTotalCrosstab = null;
-
- public static int DISPLAY_DATA_ONLY = 1;
- public static int DISPLAY_CHART_ONLY = 2;
- public static int DISPLAY_CHART_AND_DATA = 3;
-
- public static final int DATE_OPTION_MONTHLY = 1;
- public static final int DATE_OPTION_YEARLY = 2;
- public static final int DATE_OPTION_DAILY = 3;
-
-
- private int DISPLAY_MODE = 0;
-
- private int DATE_OPTION = -1;
-
- /*
- * private ReportRuntime(CustomReport cr, String reportID,
- * HttpServletRequest request) { super(cr, reportID);
- *
- * reportParamValues = new ReportParamValues(this); reportFormFields = new
- * ReportFormFields(this);
- *
- * if(request!=null) setParamValues(request); } // ReportRuntime
- */
- private ReportRuntime(CustomReportType crType, String reportID, HttpServletRequest request,
- String ownerID, String createID, String createDate, String updateID,
- String updateDate, String menuID, boolean menuApproved) throws RaptorException {
- super(crType, reportID, ownerID, createID, createDate, updateID, updateDate, menuID,
- menuApproved);
- initializeReportRuntime(request);
- } // ReportRuntime
-
- public ReportRuntime(ReportWrapper rw) throws RaptorException {
- this(rw, null);
- } // ReportRuntime
-
- public ReportRuntime(ReportWrapper rw, HttpServletRequest request)throws RaptorException {
- super(rw);
- initializeReportRuntime(request);
- } // ReportRuntime
-
- private void initializeReportRuntime(HttpServletRequest request) throws RaptorException {
- reportFormFields = new ReportFormFields(this, request);
- setParamValues(request, true, true);
-
- visualManager = new VisualManager();
- } // initializeReportRuntime
-
-// public void setReportFormFields(HttpServletRequest request) {
-// reportFormFields = new ReportFormFields(this, request);
-// setParamValues(request, true, true);
-// }
-
- public static ReportRuntime unmarshal(String reportXML, String reportID)
- throws RaptorException {
- return unmarshal(reportXML, reportID, null);
- } // unmarshal
-
- public static ReportRuntime unmarshal(String reportXML, String reportID,
- HttpServletRequest request) throws RaptorException {
- CustomReportType crType = ReportWrapper.unmarshalCR(reportXML);
- ObjectFactory objFactory = new ObjectFactory();
-
- logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Report [" + reportID + "]: XML unmarshalled"));
-
- return new ReportRuntime(crType, reportID, request, null, null, null, null, null, null,
- false);
-
- } // unmarshal
-
- public String getXmlFileURL() {
- return xmlFileURL;
- }
-
- public String getXmlFileName() {
- return xmlFileName;
- }
-
- public String getFlatFileName() {
- return flatFileName;
- }
-
- public String getExcelPageFileName() {
- return excelPageFileName;
- }
-
- public int getReportDataSize() {
- return reportDataSize;
- }
-
- public boolean getDisplayChart() {
- return displayChart;
- }
-
- public boolean getDisplayForm() {
- return displayForm;
- }
-
- public boolean getDisplayContent() {
- return displayContent;
- }
-
- public int getCachedPageNo() {
- return cachedPageNo;
- }
-
- public String getCachedSQL() {
- return cachedSQL;
- }
-
- public boolean isDashboardType() throws RaptorException {
- return ReportLoader.isDashboardType(getReportID());
- }
-
-
- public void setXmlFileURL(String xmlFileURL) {
- this.xmlFileURL = xmlFileURL;
- }
-
- public void setXmlFileName(String xmlFileName) {
- this.xmlFileName = xmlFileName;
- }
-
- public void setFlatFileName(String flatFileName) {
- this.flatFileName = flatFileName;
- }
-
- public void setExcelPageFileName(String excelPageFileName) {
- this.excelPageFileName = excelPageFileName;
- }
-
- /*private*/ public void setReportDataSize(int reportDataSize) {
- this.reportDataSize = reportDataSize;
- }
-
- private void setDisplayForm(boolean displayForm) {
- this.displayForm = displayForm;
- }
-
- private void setDisplayContent(boolean displayContent) {
- this.displayContent = displayContent;
- }
-
- public void setDisplayFlags(boolean isFirstAccess, boolean forceDisplayContent) {
- if (isFirstAccess) {
- setDisplayForm(true);
-
- if (forceDisplayContent)
- setDisplayContent(true);
- else if (Globals.getDisplayFormBeforeRun())
- if (needFormInput())
- setDisplayContent(false);
- else
- setDisplayContent(true);
- else
- setDisplayContent(true);
- } else {
- setDisplayContent(true);
-
- if (Globals.getIncludeFormWithData())
- setDisplayForm(true);
- else if (Globals.getDisplayFormBeforeRun())
- setDisplayForm(false);
- else
- setDisplayForm(true);
- } // else
- } // setDisplayFlags
-
- public void logReportRun(String userID, String executionTime, String formFields) throws RaptorException {
- if (reportRunLogged)
- return;
-
- ReportLoader.createReportLogEntry(null, reportID, userID, AppConstants.RLA_RUN,executionTime,formFields );
- reportRunLogged = true;
- } // logReportRun
-
- public void logReportExecutionTime(String userId, String executionTime, String action, String formFields) throws RaptorException {
- ReportLoader.createReportLogEntryForExecutionTime(null, reportID, userId,executionTime , action, formFields);
- }
-
- public void logReportExecutionTimeFromLogList (String userId, String executionTime, String formFields) throws RaptorException {
- ReportLoader.createReportLogEntryForExecutionTime(null, reportID, userId,executionTime , AppConstants.RLA_FROM_LOG, formFields);
- }
-
- public void resetVisualSettings() {
- boolean haveToResetCachedData = (visualManager.getSortByColId().length() > 0);
- visualManager = new VisualManager();
-
- if (haveToResetCachedData)
- pageDataCache = null;
-
- if (pageDataCache != null)
- pageDataCache.resetVisualSettings();
- } // resetVisualSettings
-
- /** ************** ReportParamValues processing *************** */
-
- public boolean setParamValues(HttpServletRequest request, boolean resetParams, boolean refresh) throws RaptorException {
- boolean paramsUpdated = false;
- if (resetParams) {
- reportFormFields = new ReportFormFields(this, request);
- reportParamValues = new ReportParamValues(reportFormFields, getReportDefType());
- // This is called even in the wizard page. Hence this condition.
- if((ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME)!=null)
- reportParamValuesFPE = new ReportParamValuesForPDFExcel(reportFormFields, getReportDefType());
- paramsUpdated = true;
-
- reportRunLogged = false;
- } else if (request != null) {
- paramsUpdated = reportParamValues.setParamValues(request,refresh);
- }
- // This is called even in the wizard page. Hence this condition.
- if((ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME)!=null) {
- if(reportParamValuesFPE!=null) reportParamValuesFPE.setParamValues(request,refresh);
- else {
- reportParamValuesFPE = new ReportParamValuesForPDFExcel(reportFormFields, getReportDefType());
- reportParamValuesFPE.setParamValues(request,refresh);
- }
- } else {
- reportFormFields = new ReportFormFields(this, request);
- //added below two lines for dashboard default value
- reportParamValues = new ReportParamValues(reportFormFields, getReportDefType());
- reportParamValues.setParamValues(request,refresh);
- //End
- reportParamValuesFPE = new ReportParamValuesForPDFExcel(reportFormFields, getReportDefType());
- reportParamValuesFPE.setParamValues(request,refresh);
-
- }
-// }
- if (paramsUpdated) {
- setReportDataSize(-1);
- chartDataCache = null;
- pageDataCache = null;
- cachedPageNo = -1;
-
- crossTabOrderManager = null;
-
- colDataTotalsLinear = null;
- colDataTotalsCrosstab = null;
- rowDataTotalsCrosstab = null;
- grandTotalCrosstab = null;
- if(!refresh)
- resetVisualSettings();
- } // if
-
- displayChart = (request.getParameter(AppConstants.RI_DISPLAY_CHART) == null) ? !isDisplayOptionHideChart() : request.getParameter("display_chart")
- .equals("Y");
-
- return paramsUpdated;
- } // setParamValues
-
- public String getParamValue(String key) {
- //reportParamValues.printValues();
- return reportParamValues.getParamValue(key);
- } // getParamValue
-
- public String getParamDisplayValue(String key) {
- //reportParamValues.printValues();
- return reportParamValues.getParamDisplayValue(key);
- } // getParamValue
-
- public Enumeration getParamKeys() {
- return reportParamValues.keys();
- } // getParamKeys
-
- public Enumeration getParamKeysForPDFExcel() {
- return reportParamValuesFPE.keys();
- } // getParamKeys
-
- public String getParamValueForPDFExcel(String key) {
- return reportParamValuesFPE.getParamValue(key);
- } // getParamValue
-
- public ArrayList getParamNameValuePairs() {
- ArrayList paramList = new ArrayList(getReportFormFields().size());
- for (Iterator iter = getReportFormFields().iterator(); iter.hasNext();) {
- FormField ff = (FormField) iter.next();
- paramList.add(new IdNameValue(ff.getFieldDisplayName(), reportParamValues
- .getParamDisplayValue(ff.getFieldName())));
- } // for
- return paramList;
- } // getParamNameValuePairs
-
- public ArrayList getParamNameValuePairsforPDFExcel(HttpServletRequest request, int type /*excel =1; pdf=2*/) {
- javax.servlet.http.HttpSession session = request.getSession();
- ArrayList paramList = new ArrayList(getReportFormFields().size());
- if(session.getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO)!=null) {
- paramList = (ArrayList) session.getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
- if(paramList!=null && paramList.size()>0)
- return paramList;
- }
- //System.out.println(" getParamNamePairs type " + type + " " + Globals.customizeFormFieldInfo());
- if ( reportParamValuesFPE == null) {
- reportParamValuesFPE = new ReportParamValuesForPDFExcel(reportFormFields, getReportDefType());
- reportParamValuesFPE.setParamValues(request,true);
- }
-
- String valueString = "";
- for (Iterator iter = getReportFormFields().iterator(); iter.hasNext();) {
- FormField ff = (FormField) iter.next();
- if(ff.isVisible() && /*!ff.getFieldType().equals(FormField.FFT_HIDDEN) &&*/ type == 1){
- valueString = reportParamValuesFPE.getParamDisplayValue(ff.getFieldName());
- } else if(ff.isVisible() && type != 1) {
- valueString = reportParamValuesFPE.getParamDisplayValue(ff.getFieldName());
- }
- if(valueString.equalsIgnoreCase("NULL"))
- valueString="";
- paramList.add(new IdNameValue(ff.getFieldDisplayName(), valueString));
-// }
- } // for
-
- String pdfAttachmentKey = AppUtils.getRequestValue(request, "pdfAttachmentKey");
- boolean isSchedule = false;
- if(pdfAttachmentKey != null)
- isSchedule = true;
- if(Globals.customizeFormFieldInfo() && type == 2) {
- String[] sessionParameters = Globals.getSessionParams().split(",");
-
- if(session != null && !isSchedule ) {
- session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
- for (int i = 0; i < sessionParameters.length; i++) {
- if(session.getAttribute(sessionParameters[i])!=null)
- paramList.add(new IdNameValue(sessionParameters[i].toUpperCase(), (String)session.getAttribute(sessionParameters[i])));
- }
- }
-
- if(isSchedule) {
- //debugLogger.debug("Globals " + Globals.getSessionParamsForScheduling());
- String[] scheduleSessionParam = Globals.getSessionParamsForScheduling().split(",");
- for (int i = 0; i < scheduleSessionParam.length; i++) {
- //debugLogger.debug(" scheduleSessionParam[i] " + scheduleSessionParam[i] + " " + request.getParameter(scheduleSessionParam[i]) );
- if(request.getParameter(scheduleSessionParam[i])!=null)
- paramList.add(new IdNameValue(scheduleSessionParam[i].toUpperCase(), request.getParameter(scheduleSessionParam[i])));
- }
- }
-
- try {
- SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss");
- Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime());
- SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
- paramList.add(new IdNameValue("DATE", dtimestamp.format(sysdate)+" "+Globals.getTimeZone()));
- } catch(Exception ex) {}
-
- } else {
- //System.out.println(" In Else getParamNamePairs type " + type);
- String[] sessionDisplayParameters = Globals.getDisplaySessionParamInPDFEXCEL().split(",");
- if(session != null && !isSchedule ) {
- session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
- for (int i = 0; i < sessionDisplayParameters.length; i++) {
- String sessionDispParam = sessionDisplayParameters[i];
- if(nvl(sessionDispParam).length()>0) {
- String sessionDispParamArr[] = sessionDispParam.split(";");
- //System.out.println("Session " + sessionDispParamArr[1] + " " + (String)session.getAttribute(sessionDispParamArr[0]));
- paramList.add(new IdNameValue(sessionDispParamArr[1], nvl((String)session.getAttribute(sessionDispParamArr[0]),"")));
- }
- }
- }
- if(isSchedule) {
- String[] scheduleSessionParam = Globals.getDisplayScheduleSessionParamInPDFEXCEL().split(",");
- for (int i = 0; i < scheduleSessionParam.length; i++) {
- String scheduleSessionDispParam = scheduleSessionParam[i];
- if(nvl(scheduleSessionDispParam).length()>0) {
- String scheduleSessionDispParamArr[] = scheduleSessionDispParam.split(";");
- paramList.add(new IdNameValue(scheduleSessionDispParamArr[1], nvl(request.getParameter(scheduleSessionDispParamArr[0]),"")));
- }
- }
- }
- try {
- SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss");
- Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime());
- SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern());
- paramList.add(new IdNameValue("Report Date/Time", dtimestamp.format(sysdate)+" "+Globals.getTimeZone()));
- } catch(Exception ex) {}
-
- }
-
- for (int i = 0; i < paramList.size(); i++) {
- IdNameValue value = (IdNameValue) paramList.get(i);
- String name = value.getName().replaceAll(",","~");
- value.setName(name);
- }
- //request.getSession().setAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO, paramList);
- return paramList;
- } // getParamNameValuePairs
-
- /** ************** ReportFormFields processing *************** */
-
- public String getFormFieldComments(HttpServletRequest request) {
- String comment = "";
- StringBuffer st = new StringBuffer("");
- if(getFormFieldList()!=null){
- comment = nvl(getFormFieldList().getComment());
- ArrayList al = null;
- if(comment.length()>0) {
- al = getParamNameValuePairsforPDFExcel(request, 2);
- if(al!=null) {
- //st = new StringBuffer(comment);
- for (int i=0; i < al.size(); i++) {
- IdNameValue idNameValue = (IdNameValue)al.get(i);
- if(nvl(idNameValue.getId()).equals("DATE"))
- st.append("<b>Date/Time Report Run:</b>"+ idNameValue.getName() +"<br></br>");
- }
-
- for (int i=0; i < al.size(); i++) {
- IdNameValue idNameValue = (IdNameValue)al.get(i);
- comment = Utils.replaceInString(comment, "["+ idNameValue.getId()+"]", idNameValue.getName());
- }
- st.append(comment);
-
- }
- }
- }
- return st.toString();
- }
-
- public boolean needFormInput() {
- return reportFormFields.getFieldCount() > 0;
- } // needFormInput
-
- public FormField getFormField(String fieldName) {
- return reportFormFields.getFormField(fieldName);
- } // getFormField
-
- public ReportFormFields getReportFormFields() {
- return reportFormFields;
- } // getReportFormFields
-
- /** ************** Report Data processing *************** */
- public DataSet loadChartData(String userId, HttpServletRequest request) throws RaptorException {
- if (nvl(getChartType()).length() == 0)
- return null;
- if (!getDisplayChart())
- return null;
-
- DataSet ds = chartDataCache;
- String sql = null;
- if (ds == null) {
- sql = generateChartSQL(reportParamValues, userId, request);
- String dbInfo = getDBInfo();
- ds = ConnectionUtils.getDataSet(sql, dbInfo);
- if (Globals.getCacheChartData())
- chartDataCache = ds;
- } // if
-
- return ds;
- } // loadChartData
-
- public String getReportDataSQL(String userId, int downloadLimit, HttpServletRequest request) throws RaptorException {
- String reportSQL = "";
- if(doesReportContainsGroupFormField()) {
- reportSQL = generateSubsetSQL(0, downloadLimit,userId, request, true, reportParamValues);
- } else
- reportSQL = generateSubsetSQL(0, downloadLimit,userId, request, false, reportParamValues);
- return reportSQL;
- }
-
- public ReportData loadReportData(int pageNo, String userId, int downloadLimit, HttpServletRequest request, boolean download) throws RaptorException {
- ReportData rd = null;
- boolean isGoBackAction = AppUtils.getRequestFlag(request, AppConstants.RI_GO_BACK);
- if (pageNo >= 0)
- if (pageNo == cachedPageNo && pageDataCache != null)
- rd = pageDataCache;
-
- if(isGoBackAction && rd!=null) return rd;
- if (rd == null) { // Commented So that Data is refreshed from DB again
- if (getReportDataSize() < 0)
- if (getReportType().equals(AppConstants.RT_CROSSTAB))
- rd = loadCrossTabReportData(pageNo, userId, downloadLimit, request, download);
- else if (getReportType().equals(AppConstants.RT_LINEAR))
- rd = loadLinearReportData(pageNo, userId, downloadLimit, request, download);
- else
- throw new RuntimeException(
- "[ReportRuntime.loadReportData] Invalid report type");
-
- if (pageNo >= 0)
- if (Globals.getCacheCurPageData()) {
- pageDataCache = rd;
- cachedPageNo = pageNo;
- }
- } // if // Commented So that Data is refreshed from DB again
-
- return rd;
- } // loadReportData
-
- private ReportData loadCrossTabReportData(int pageNo, String userId, int downloadLimit, HttpServletRequest request, boolean download) throws RaptorException {
- String reportSQL = generateSQL(reportParamValues, userId, request);
- setWholeSQL(reportSQL);
- cachedSQL = reportSQL;
- wholeSQL = reportSQL;
- List reportCols = getAllColumns();
- // replace the request parameter specified in the drill down
- DataColumnType dataColumnRequest = getCrossTabValueColumn();
- reportSQL = parseReportSQLForDrillDownParams(reportSQL, dataColumnRequest, request);
-
-
- DataSet ds = null;
- // try {
- String dbInfo = getDBInfo();
- StringBuffer colNames = new StringBuffer();
- StringBuffer colExtraIdNames = new StringBuffer();
- StringBuffer colExtraDateNames = new StringBuffer();
-
-
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
- DataColumnType dc = (DataColumnType) iter.next();
- //TODO: commented if (dc.isVisible()) {
- if (colNames.length() > 0)
- colNames.append(", ");
- colNames.append(dc.getColId());
- //TODO uncomment if it's not working} // if
-
- // Checking for extra fields necessary for drill-down
- if (nvl(dc.getDrillDownURL()).length() > 0) {
- System.out.println("Drilldown URL " + dc.getDrillDownURL());
-
- }
- } // for
-
- if (reportSQL.toUpperCase().indexOf("GROUP BY ") < 0)
- colNames.append(colExtraIdNames.toString());
- colNames.append(colExtraDateNames.toString());
- //reportSQL = " SELECT ROWNUM rnum, "
- // + colNames.toString() + " FROM (" + reportSQL + ") ";
-
- String rSQL = Globals.getLoadCrosstabReportData();
- rSQL = rSQL.replace("[colNames.toString()]", colNames.toString());
- rSQL = rSQL.replace("[reportSQL]", reportSQL);
- reportSQL = rSQL;
- setWholeSQL(reportSQL);
- if (crossTabOrderManager == null)
- crossTabOrderManager = new CrossTabOrderManager(this, userId,request);
- ds = ConnectionUtils.getDataSet(reportSQL, dbInfo);
-
- ReportData rd = new ReportData(pageNo, false);
- ReportFormFields childReportFormFields = null;
- if(doesReportContainsGroupFormField()) {
- List reportCols1 = getAllColumns();
- reportCols = new Vector();
- outer:
- for (Iterator iter = reportCols1.iterator(); iter.hasNext();) {
- DataColumnType dct = (DataColumnType) iter.next();
- for (int k=0; k<ds.getColumnCount(); k++) {
- if(dct.getColId().toUpperCase().trim().equals(ds.getColumnName(k).trim())) {
- reportCols.add(dct);
- continue outer;
- }
- }
- }
-
- if (getFormFieldList() != null) {
- String paramValue = "";
- for (Iterator iter = getFormFieldList().getFormField().iterator(); iter.hasNext();) {
- FormFieldType fft = (FormFieldType) iter.next();
- if(fft.isGroupFormField()!=null && fft.isGroupFormField().booleanValue()) {
- paramValue = Utils.oracleSafe(nvl(reportParamValues
- .getParamValue(fft.getFieldId())));
- outer:
- for (Iterator iter1 = reportCols1.iterator(); iter1.hasNext();) {
- DataColumnType dct = (DataColumnType) iter1.next();
- if(("["+fft.getFieldName()+ "]").equals(dct.getColName().trim())) {
- dct.setDisplayName(paramValue);
- continue outer;
- }
- }
-
-
- }
- }
- }
- }
-
- int dataColumnIdx = (rd.reportRowHeaderCols.size() + rd.reportColumnHeaderRows.size())-1;
- DataColumnType dataColumn = getCrossTabValueColumn();
-
- String columnValue = "";
-
-
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
- DataColumnType dct = (DataColumnType) iter.next();
-
- if (nvl(dct.getDrillDownURL()).length() > 0) {
- childReportFormFields = getChildReportFormFields(request,dct.getDrillDownURL());
- }
-
- if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_ROW)) {
- RowHeaderCol rhc = new RowHeaderCol();
- rhc.setColumnTitle(dct.getDisplayName());
- // rhc.setColumnWidth("10%");
- //rhc.setColumnWidth(dct.getDisplayWidth() + "%");
- if(nvl(dct.getDisplayWidthInPxls()).length()<=0) {
- dct.setDisplayWidthInPxls("100px");
- }
- if(dct.getDisplayWidthInPxls().endsWith("px"))
- rhc.setColumnWidth(dct.getDisplayWidthInPxls());
- else
- rhc.setColumnWidth(dct.getDisplayWidthInPxls()+"px");
-
- rhc.setAlignment(dct.getDisplayAlignment());
- rhc.setDisplayHeaderAlignment(dct.getDisplayHeaderAlignment());
- rhc.setNowrap(nvl(dataColumn.getNowrap(),"null").equals("false")?"null":nvl(dataColumn.getNowrap(),"null"));
- rd.reportRowHeaderCols.addRowHeaderCol(rhc);
- } else if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_COLUMN)) {
- ColumnHeaderRow chr = new ColumnHeaderRow();
- chr.setAlignment(dct.getDisplayHeaderAlignment());
- chr.setRowHeight("15");
- if(nvl(dct.getDisplayWidthInPxls()).length()<=0) {
- dct.setDisplayWidthInPxls("80px");
- }
- if(dct.getDisplayWidthInPxls().endsWith("px"))
- chr.setDisplayWidth(dct.getDisplayWidthInPxls());
- else
- chr.setDisplayWidth(dct.getDisplayWidthInPxls()+"px");
-
- rd.reportColumnHeaderRows.addColumnHeaderRow(chr);
- } else if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_VALUE)) {
- columnValue = dct.getColId();
- } else {
- if(!dct.getColId().toLowerCase().endsWith("_sort")) {
- RowHeaderCol rhc = new RowHeaderCol();
- rhc.setVisible(false);
- rd.reportRowHeaderCols.addRowHeaderCol(rhc);
- }
- }
- } // for
-
- //int dataColumnIdx = getCrossTabValueColumnIndex();
- FormatProcessor formatProcessor = new FormatProcessor(getSemaphoreById(dataColumn
- .getSemaphoreId()),
- getReportDefType().equals(AppConstants.RD_SQL_BASED) ? AppConstants.CT_NUMBER
- : dataColumn.getColType(), dataColumn.getColFormat(), false);
- List dataList = new ArrayList();
- /* //fillup all rows based on rowheaders
- Vector rowHeaders = crossTabOrderManager.getRowHeaderValues();
- CrossTabColumnValues crossTabRowValues;
- int size = 0;
- for (int i = 0; i < rowHeaders.size(); i++) {
- if((i+1)==rowHeaders.size()) {
- crossTabRowValues = (CrossTabColumnValues) rowHeaders.get(i);
- size = crossTabRowValues.getValuesCount();
- }
- }
-
- for (int i = 0; i < size; i++) {
- dataList.add(new DataRow());
- }*/
-
- for (int i = 0; i < ds.getRowCount(); i++) {
- Vector rValues = new Vector();
- Vector cValues = new Vector();
- Vector cValuesSort = new Vector();
-
- int colIdx = 0;
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
- try {
- DataColumnType dct = (DataColumnType) iter.next();
- if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_ROW))
- rValues.add(addDataValue(dct, ds.getString(i, dct.getColId())));
- if (nvl(dct.getCrossTabValue()).trim().length()<=0 && !dct.getColId().toLowerCase().endsWith("_sort"))
- rValues.add(addDataValue(dct, ds.getString(i, dct.getColId())));
- if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_COLUMN)) {
- cValues.add(addDataValue(dct, ds.getString(i, dct.getColId())));
- if(getColumnById(dct.getColId().toLowerCase()+"_sort")!=null)
- cValuesSort.add(addDataValue(dct, new Integer(ds.getString(i, dct.getColId()+"_sort")).toString()));
- }
- if (dct.isVisible())
- colIdx++;
- } catch (ArrayIndexOutOfBoundsException ex ) {continue;}
- catch (NumberFormatException ex1) {
- ex1.printStackTrace();
- continue;
- }
- } // for
-
- DataValue dv = new DataValue();
- dv.setDisplayValue(ds.getString(i, columnValue));
- if (nvl(dataColumn.getCrossTabValue()).trim().length()<=0)
- dv.setVisible(false);
- dv.setAlignment(dataColumn.getDisplayAlignment());
- dv.setDisplayTotal(dataColumn.getDisplayTotal());
- dv.setColName(dataColumn.getColName());
- dv.setDisplayName(dataColumn.getDisplayName());
- dv.setColId(dataColumn.getColId());
- dv.setNowrap(nvl(dataColumn.getNowrap(),"null").equals("false")?"null":nvl(dataColumn.getNowrap(),"null"));
- /*StringBuffer indentation = new StringBuffer("");
- if(dataColumn.getIndentation()!=null && dataColumn.getIndentation().intValue()>0) {
- for (int indent=0; indent < dataColumn.getIndentation(); indent++) {
- indentation.append("\t");
- }
- dv.setNowrap("true");
- }
- dv.setIndentation(indentation.toString());*/
-
- if (nvl(dataColumn.getDrillDownURL()).length() > 0) {
- if(dv.getDisplayValue().length() > 0) {
- dv.setDrillDownURL(parseDrillDownURL(i, /* dataColumnIdx, */ds, dataColumn,request, childReportFormFields));
- dv.setDrillDowninPoPUp(dataColumn.isDrillinPoPUp()!=null?dataColumn.isDrillinPoPUp():false);
- }
- if (dv.getDisplayValue().length() == 0) {
- //dv.setDisplayValue("[NULL]");
- dv.setDisplayValue("");
- }
- } // if
-
- rd.setDataValue(rValues, cValues, cValuesSort.size()==0?null:cValuesSort, dv, formatProcessor, crossTabOrderManager, dataList);
- } // for
- rd.setReportDataList(dataList);
- /*if (getReportDataSize() < 0)
- setReportDataSize(rd.getDataRowCount());*/
-
- /*if (pageNo >= 0)
- rd.truncateData(pageNo * getPageSize(), (pageNo + 1) * getPageSize() - 1);
- else {
- if( downloadLimit != -1)
- rd.truncateData(0, downloadLimit - 1);
- else
- rd.truncateData(0, -1);
- }*/
-
- if (colDataTotalsCrosstab == null)
- colDataTotalsCrosstab = generateDataTotalsCrossTab(AppConstants.CV_COLUMN, userId,request);
- if (displayColTotals && colDataTotalsCrosstab != null)
- rd.setColumnDataTotalsCrossTab(colDataTotalsCrosstab, dataColumn
- .getDisplayAlignment(), getCrossTabDisplayTotal(AppConstants.CV_COLUMN),
- crossTabOrderManager, dataList);
-
- if (rowDataTotalsCrosstab == null)
- rowDataTotalsCrosstab = generateDataTotalsCrossTab(AppConstants.CV_ROW, userId, request);
- if (displayRowTotals && rowDataTotalsCrosstab != null)
- rd.setRowDataTotalsCrossTab(rowDataTotalsCrosstab, dataColumn
- .getDisplayAlignment(), getCrossTabDisplayTotal(AppConstants.CV_ROW),
- crossTabOrderManager, dataList);
-
- if (displayColTotals
- && displayRowTotals
- && getCrossTabDisplayTotal(AppConstants.CV_COLUMN).equals(
- getCrossTabDisplayTotal(AppConstants.CV_ROW))) {
- // Display grand total
- if (grandTotalCrosstab == null)
- grandTotalCrosstab = ((CrossTabTotalValue) generateDataTotalsCrossTab("",
- userId,request).get(0)).getTotalValue();
- if (grandTotalCrosstab != null)
- rd.setGrandTotalCrossTab(Utils.truncateTotalDecimals(grandTotalCrosstab),
- dataColumn.getDisplayAlignment(),
- getCrossTabDisplayTotal(AppConstants.CV_COLUMN), dataList);
- } // if
-
- rd.consolidateColumnHeaders(visualManager);
- //if (Globals.getMergeCrosstabRowHeadings())
- // rd.consolidateRowHeaders();
- //rd.addRowNumbers(pageNo, dataList);
-
- if (displayColTotals && colDataTotalsCrosstab != null) {
- String totalLabel = "Total";
- String colDisplayTotal = getCrossTabDisplayTotal(AppConstants.CV_COLUMN);
- if (colDisplayTotal.length() > 0
- && (!colDisplayTotal.equals(AppConstants.TOTAL_SUM_ID)))
- totalLabel = nvl(AppConstants.TOTAL_FUNCTIONS.getNameById(colDisplayTotal));
- if (getReportDataSize() > getPageSize())
- totalLabel += "_nl_(for all pages)";
-
- //rd.setCrossTabColumnTotalLabel(totalLabel);
- } // if
-
- //rd.applyVisibility();
- //Collections.sort((List)dataList, new DataRowComparable());
- DataRow drInFor1 = null;
- Vector<DataValue> v1= null, v2 = null;
- ArrayList<String> temp = new ArrayList<String>();
- if (Globals.getMergeCrosstabRowHeadings()) {
- for (int i = 0; i < dataList.size(); i++) {
- drInFor1 = (DataRow)dataList.get(i);
- drInFor1.setRowNum(i+1);
- v1 = drInFor1.getRowValues();
- if(i<dataList.size()-1) {
- v2 = ((DataRow)dataList.get(i+1)).getRowValues();
- } /*else {
- v2 = ((DataRow)dataList.get(i-1)).getRowValues();
- }*/
- for (int j = 0; j < v1.size(); j++) {
- if(j==0) {
- if(v1.get(j).getDisplayValue().length()>0) { // another ArrayList
- temp = new ArrayList();
- temp.add(v1.get(j).getDisplayValue());
- }
- if(v2!=null && temp.get(j).equals(v2.get(j).getDisplayValue())) {
- v2.get(j).setDisplayValue("");
- }
- }
- }
- }
- }
- rd.setReportDataList(dataList);
- if (getReportDataSize() < 0) {
- //setReportDataSize(rd.getDataRowCount());
- setReportDataSize(rd.getReportDataList().size());
- }
-
- return rd;
- } // loadCrossTabReportData
-
-
- public DataValue addDataValue(DataColumnType dataColumn, String columnValue) {
- DataValue dv = new DataValue();
- dv.setDisplayValue(columnValue);
- if (nvl(dataColumn.getCrossTabValue()).trim().length()<=0)
- dv.setVisible(false);
- dv.setAlignment(dataColumn.getDisplayAlignment());
- dv.setDisplayTotal(dataColumn.getDisplayTotal());
- dv.setColName(dataColumn.getColName());
- dv.setDisplayName(dataColumn.getDisplayName());
- dv.setColId(dataColumn.getColId());
- dv.setNowrap(nvl(dataColumn.getNowrap(),"null").equals("false")?"null":nvl(dataColumn.getNowrap(),"null"));
- return dv;
-
- }
-
- /*private*/ public boolean doesReportContainsGroupFormField() {
- int flag = 0;
- if(getFormFieldList()!=null) {
- for (Iterator iter = getFormFieldList().getFormField().iterator(); iter.hasNext();) {
- FormFieldType fft = (FormFieldType) iter.next();
- if(fft.isGroupFormField()!=null && fft.isGroupFormField().booleanValue()) {
- flag = 1;
- break;
- }
- }
- }
- return (flag ==1);
- }
-
- private ReportData loadLinearReportData(int pageNo, String userId, int downloadLimit, HttpServletRequest request, boolean download) throws RaptorException {
- String action = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));;
-
- String reportSQL = "";
-
- if(action.endsWith("session")) {
- reportSQL = getWholeSQL();
- wholeSQL = reportSQL;
- } else {
- reportSQL = generateSQL(reportParamValues, visualManager.getSortByColId(),
- visualManager.getSortByAscDesc(), userId, request);
- wholeSQL = reportSQL;
- setWholeSQL(wholeSQL);
- }
- DataSet ds = null;
- String dbInfo = getDBInfo();
- ds = ConnectionUtils.getDataSet(wholeSQL, dbInfo);
- setReportDataSize(ds.getRowCount());
- //wholeSQL = reportSQL;
- HttpSession session = request.getSession();
- //debugLogger.debug(" ******** Download Limit ********* " + downloadLimit + " %%%%%%%%%%PAGE " + pageNo );
- List reportCols = null;
- StringBuffer colNames = new StringBuffer();
-
- if(download && action.endsWith("session")) {
- reportCols = getAllColumns();
- colNames = new StringBuffer();
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dc = (DataColumnType) iter.next();
- if (colNames.length() > 0)
- colNames.append(", ");
- colNames.append(dc.getColId());
- }
-
- }
- else {
- String pagedSQL = null; // reportSQL;
- if (pageNo >= 0)
- pagedSQL = generatePagedSQL(pageNo, userId, request, false, null);
- else
- pagedSQL = generateSubsetSQL(0, downloadLimit, userId, request, false, null);
- // replace the request parameter specified in the drill down
- reportCols = getAllColumns();
- colNames = new StringBuffer();
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dc = (DataColumnType) iter.next();
- if (colNames.length() > 0)
- colNames.append(", ");
- colNames.append(dc.getColId());
- if (dc.isVisible()) {
- reportSQL = parseReportSQLForDrillDownParams(reportSQL, dc, request);
- pagedSQL = parseReportSQLForDrillDownParams(pagedSQL, dc, request);
- }
- }
-
- cachedSQL = pagedSQL;
-
-
- // try {
- if(doesReportContainsGroupFormField()) {
- if (pageNo >= 0)
- pagedSQL = generatePagedSQL(pageNo, userId, request, true, reportParamValues);
- else
- pagedSQL = generateSubsetSQL(0, downloadLimit, userId, request, true, reportParamValues);
- }
- //check for Group formfield
- //if groupformfield get columns from sql
-
- ds = ConnectionUtils.getDataSet(pagedSQL, dbInfo);
-
- if(doesReportContainsGroupFormField()) {
- List reportCols1 = getAllColumns();
- reportCols = new Vector();
- outer:
- for (Iterator iter = reportCols1.iterator(); iter.hasNext();) {
- DataColumnType dct = (DataColumnType) iter.next();
- for (int k=0; k<ds.getColumnCount(); k++) {
- if(dct.getColId().toUpperCase().trim().equals(ds.getColumnName(k).trim())) {
- reportCols.add(dct);
- continue outer;
- }
- }
- }
-
- if (getFormFieldList() != null) {
- String paramValue = "";
- for (Iterator iter = getFormFieldList().getFormField().iterator(); iter.hasNext();) {
- FormFieldType fft = (FormFieldType) iter.next();
- if(fft.isGroupFormField()!=null && fft.isGroupFormField().booleanValue()) {
- paramValue = Utils.oracleSafe(nvl(reportParamValues
- .getParamValue(fft.getFieldId())));
- outer:
- for (Iterator iter1 = reportCols1.iterator(); iter1.hasNext();) {
- DataColumnType dct = (DataColumnType) iter1.next();
- if(("["+fft.getFieldName()+ "]").equals(dct.getColName().trim())) {
- dct.setDisplayName(paramValue);
- continue outer;
- }
- }
-
-
- }
- }
- }
- }
-
-
- // if ( (remDbInfo!=null) && (!remDbInfo.equals(AppConstants.DB_LOCAL)))
- // {
- // Globals.getRDbUtils().setDBPrefix(remDbInfo);
- // ds = RemDbUtils.executeQuery(pagedSQL);
- // }
- // else
- // ds = DbUtils.executeQuery(pagedSQL);
- /*
- * } catch(SQLException e) { throw new
- * ReportSQLException("[ReportRuntime.loadLinearReportData]
- * "+e.getMessage(), pagedSQL); }
- */
-
- if (getReportDataSize() < 0)
- if (pageNo < 0)
- setReportDataSize(ds.getRowCount());
- else if (ds.getRowCount() <= getPageSize())
- setReportDataSize(ds.getRowCount());
- else {
-
- /*Pattern re1 = Pattern.compile("[Oo][Rr][Dd][Ee][Rr](.*?[^\r\n]*)[Bb][Yy]", Pattern.DOTALL);
- Pattern re2 = Pattern.compile("[Oo][Rr][Dd][Ee][Rr](.*?[^\r\n]*)[Bb][Yy]((.*?[^\r\n]*)|[\\s]|[^0-9a-zA-Z])\\)", Pattern.DOTALL);
- Matcher matcher = re1.matcher(reportSQL);
- Matcher matcher2 = null;
- int startPoint = reportSQL.length()-30;
- String startReportSQL = "";
- String endReportSQL = "";
- while(reportSQL.indexOf("xid", startPoint)!=-1)startPoint++;
- if (matcher.find(startPoint)) {
- startReportSQL = reportSQL.substring(0, reportSQL.indexOf(matcher.group()));
- endReportSQL = reportSQL.substring(reportSQL.indexOf(matcher.group()));
- matcher2 = re2.matcher(endReportSQL);
- if(matcher2.find())
- endReportSQL = endReportSQL.substring(matcher.group().length()-1);
- else
- endReportSQL = "";
- reportSQL = startReportSQL + endReportSQL;
- }*/
- String countSQL = "SELECT count(*) FROM (" + reportSQL + ")"+ (Globals.isPostgreSQL() || Globals.isMySQL()?" AS ":"") +" x ";
- String dbType = "";
-
- if (!isNull(dbInfo) && (!dbInfo.equals(AppConstants.DB_LOCAL))) {
- try {
- org.openecomp.portalsdk.analytics.util.RemDbInfo remDbInfo = new org.openecomp.portalsdk.analytics.util.RemDbInfo();
- dbType = remDbInfo.getDBType(dbInfo);
- if (dbType.equals("DAYTONA") && reportSQL.trim().toUpperCase().startsWith("SELECT")) {
- Pattern re1 = Pattern.compile("order(.*?[^\r\n]*)by", Pattern.DOTALL);
- Matcher matcher = re1.matcher(reportSQL);
- int startPoint = reportSQL.length()-30;
- while(reportSQL.indexOf("xid", startPoint)!=-1)startPoint++;
- if (matcher.find(startPoint)) {
- reportSQL = reportSQL.substring(0, reportSQL.indexOf(matcher.group()));
- }
- countSQL = "SELECT count(*) FROM (" + reportSQL + ")"+ (Globals.isPostgreSQL() || Globals.isMySQL()?" AS ":"") +" x";
- countSQL = countSQL + " ("+ colNames+ ")";
- } else if (dbType.equals("DAYTONA")) {
- setReportDataSize(50);
- }
- } catch (Exception ex) {
- throw new RaptorException(ex);
- }
- }
-
- DataSet ds2 = null;
- // try {
- if(reportSQL.trim().toUpperCase().startsWith("SELECT")) {
- ds2 = ConnectionUtils.getDataSet(countSQL, dbInfo);
- if (ds2.getRowCount() > 0)
- setReportDataSize(ds2.getInt(0, 0));
- else
- throw new RuntimeException(
- "[ReportRuntime.loadLinearReportData] Unable to load report data size");
- } else
- setReportDataSize(50);
- // if ( (remDbInfo!=null) &&
- // (!remDbInfo.equals(AppConstants.DB_LOCAL))){
- // Globals.getRDbUtils().setDBPrefix(remDbInfo);
- // ds2 = RemDbUtils.executeQuery(countSQL);
- // }
- // else
- // ds2 = DbUtils.executeQuery(countSQL);
- /*
- * } catch(SQLException e) { throw new
- * ReportSQLException("[ReportRuntime.loadLinearReportData size]
- * "+e.getMessage(), countSQL); }
- */
-
-
- } // else
- }
- ReportData rd = new ReportData(pageNo, true);
-
- // Already defined changed for modifying request parameters
- //List reportCols = getAllColumns();
- Vector visibleCols = new Vector(reportCols.size());
- Vector formatProcessors = new Vector(reportCols.size());
-
- // ColumnHeaderRow chr = new ColumnHeaderRow();
- // rd.reportColumnHeaderRows.addColumnHeaderRow(chr);
- // chr.setRowHeight("30");
- int count =0 ;
-
- /* ADDED */
- ReportFormFields rff = getReportFormFields();
- ReportFormFields childReportFormFields = null;
- String fieldDisplayName = "";
- String fieldValue = "";
-
- for (int c = 0; c < reportCols.size(); c++) {
- if(reportCols.get(c)!=null) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- if(nvl(dct.getDependsOnFormField()).length()>0 && nvl(dct.getDependsOnFormField()).indexOf("[")!=-1) {
- for(int i = 0 ; i < rff.size(); i++) {
- fieldDisplayName = "["+((FormField)rff.getFormField(i)).getFieldDisplayName()+"]";
- fieldValue = "";
- //if(dct.getOriginalDisplayName()==null) dct.setOriginalDisplayName(dct.getDisplayName());
- if (dct.getDependsOnFormField().equals(fieldDisplayName)) {
- fieldValue = nvl(request.getParameter(((FormField)rff.getFormField(i)).getFieldName()));
-
- if (fieldValue.length()>0) {
- if(!fieldValue.toUpperCase().equals("Y"))
- dct.setDisplayName(fieldValue);
- if(!dct.isVisible())
- dct.setVisible(true);
- } else {
- dct.setVisible(false);
- }
- }
- }
- }
- }
- }
-
- /* ADDED */
- String displayName = "";
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dc = (DataColumnType) iter.next();
-
- formatProcessors.add(count,new FormatProcessor(
- getSemaphoreById(dc.getSemaphoreId()), dc.getColType(), dc
- .getColFormat(), getReportDefType().equals(
- AppConstants.RD_SQL_BASED)));
-
- if (nvl(dc.getDrillDownURL()).length() > 0) {
- childReportFormFields = getChildReportFormFields(request,AppUtils.getDrillActionURL()+""+dc.getDrillDownURL());
- }
- if (dc.isVisible()) {
- visibleCols.add(count,dc);
- //if(dc.getColId().startsWith("group")) {
- for (int d = 0; d < reportCols.size(); d++) {
- if(reportCols.get(d)!=null) {
- DataColumnType dct1 = (DataColumnType) reportCols.get(d);
- if(dct1.getColId().equals(dc.getColId()+"_name") && ds.getRowCount()>0) {
- displayName = ds.getString(0,dct1.getColId());
- dc.setDisplayName(displayName);
- }
- }
- }
- //}
-
- String widthInPxls = dc.getDisplayWidthInPxls();
-
- if(nvl(widthInPxls).endsWith("px"))
- dc.setDisplayWidthInPxls(widthInPxls);
- else {
- widthInPxls = widthInPxls+"px";
- dc.setDisplayWidthInPxls(widthInPxls+"px");
- }
-
- rd.createColumn(dc.getColId(), dc.getDisplayName(), dc.getDisplayWidthInPxls(), dc.getDisplayHeaderAlignment(),
- visualManager.isColumnVisible(dc.getColId()), visualManager
- .getSortByColId().equals(dc.getColId()) ? visualManager
- .getSortByAscDesc() : null, isRuntimeColSortDisabled(), dc.getLevel()!=null?dc.getLevel():0, dc.getStart()!=null?dc.getStart():0, dc.getColspan()!=null?dc.getColspan():0, dc.isIsSortable()!=null?dc.isIsSortable():false);
- // chr.addColumnHeader(new ColumnHeader(dc.getDisplayName(),
- // (dc.getDisplayWidth()>100)?"10%":(""+dc.getDisplayWidth()+"%")));
- } // if
- else {
- visibleCols.add(count,null);
- rd.createColumn(dc.getColId(), AppConstants.HIDDEN, dc.getDisplayWidthInPxls(), dc.getDisplayHeaderAlignment(),
- true, null,false, dc.getLevel()!=null?dc.getLevel():0, dc.getStart()!=null?dc.getStart():0, dc.getColspan()!=null?dc.getColspan():0, dc.isIsSortable()!=null?dc.isIsSortable():false);
-// formatProcessors.add(count,null);
- }
- count++;
- } // for
-
- if(getReportDefType().equals(AppConstants.RD_SQL_BASED_DATAMIN) && pageNo ==0) {
- /*Vector v = null;
- try {
- v = addForecastData(reportSQL);
- } catch (Exception ex) {
- ex.printStackTrace();
- throw new RaptorException (ex);
- }
- session.setAttribute("FORECASTED_DATA", v);
- DataSet dsWhole = ConnectionUtils.getDataSet(wholeSQL, dbInfo);
- dsWhole.addAll(v);
- session.setAttribute(AppConstants.RI_CHART_FORECAST_DATA, dsWhole);
- }
-
- if(getReportDefType().equals(AppConstants.RD_SQL_BASED_DATAMIN) && session.getAttribute("FORECASTED_DATA")!=null) {
- Vector vForecastedData = (Vector)session.getAttribute("FORECASTED_DATA");
- if(vForecastedData.size() > 0)
- ds.addAll(vForecastedData);*/
- }
-
-
- // Utils._assert(chr.size()==ds.getColumnCount(),
- // "[ReportRuntime.loadLinearReportData] The number of visible columns
- // does not match the number of data columns");
- //TODO: This should be optimized to accept -1 for flat file download
- for (int r = 0; r < Math.min(ds.getRowCount(), ((pageNo < 0) ? (downloadLimit == -1?Globals.getFlatFileUpperLimit():Globals.getDownloadLimit() ) : getPageSize())); r++) {
- DataRow dr = new DataRow();
- rd.reportDataRows.addDataRow(dr);
-
- for (int c = 0; c < reportCols.size(); c++) {
- if(reportCols.get(c)!=null) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- DataValue dv = new DataValue();
- dr.addDataValue(dv);
- dv.setDisplayValue(ds.getString(r, c));
- dv.setColName(dct.getColName());
- dv.setColId(dct.getColId());
- dv.setNowrap(nvl(dct.getNowrap(),"null").equals("false")?"null":nvl(dct.getNowrap(),"null"));
- StringBuffer indentation = new StringBuffer("");
- if(dct.getIndentation()!=null && dct.getIndentation()>0) {
- for (int indent=0; indent< dct.getIndentation(); indent++) {
- indentation.append("\t");
- }
- dv.setNowrap("true");
- }
- dv.setIndentation(indentation.toString());
- if(dct.isVisible()) {
-
- dv.setVisible(true);
- dv.setAlignment(dct.getDisplayAlignment());
- dv.setDisplayTotal(dct.getDisplayTotal());
- dv.setDisplayName(dct.getDisplayName());
-
- if (nvl(dct.getDrillDownURL()).length() > 0) {
-
- if(dv.getDisplayValue().length() > 0) {
- dv.setDrillDownURL(parseDrillDownURL(r, /* c, */ds, dct,request, childReportFormFields));
- dv.setDrillDowninPoPUp(dct.isDrillinPoPUp()!=null?dct.isDrillinPoPUp():false);
- }
-
- if (dv.getDisplayValue().length() == 0) {
- //dv.setDisplayValue("[NULL]");
- dv.setDisplayValue("");
- }
- } // if
-
- } else {
- dv.setVisible(false);
- dv.setHidden(true);
- }
- //System.out.println("in Linear report b4" + dr.getFormatId() + dr.getBgColorHtml() + dv.getDisplayValue());
-
- if(dr.getFormatId()!=null)
- ((FormatProcessor) formatProcessors.get(c)).setHtmlFormatters(dv, dr, true);
- else
- ((FormatProcessor) formatProcessors.get(c)).setHtmlFormatters(dv, dr, false);
-
- //System.out.println("in Linear report After" + dr.getFormatId() + dr.getBgColorHtml() + dv.getDisplayValue());
- } // if reportCols
- } // for
- } // for
-
- //Only if rownumber options is needed
- //rd.addRowNumbers(pageNo, getPageSize());
-
- if (colDataTotalsLinear == null) {
- if(!download && !action.endsWith("session"))
- colDataTotalsLinear = generateColumnDataTotalsLinear(new ArrayList(reportCols), userId,
- getDbInfo(),request);
- if(download && action.endsWith("session"))
- colDataTotalsLinear = generateColumnDataTotalsLinear(new ArrayList(reportCols), userId,
- getDbInfo(), getTotalSql());
- }
- if (displayColTotals && colDataTotalsLinear != null) {
- String totalLabel = "Total";
- if (getReportDataSize() > getPageSize())
- totalLabel += "<br><font size=1>(for all pages)</font>";
-
- rd.setColumnDataTotalsLinear(colDataTotalsLinear, totalLabel);
- } // if
- // Please note the below function doesn't set the visibility for dv since this is set in this function. - Sundar
- rd.applyVisibility();
-
- return rd;
- } // loadLinearReportData
-
-
-
- public DataRow generateColumnDataTotalsLinear(ArrayList reportCols, String userId,
- String dbInfo, String reportSQL) throws RaptorException {
- DataRow dr = null;
-
- boolean displayColTotals = false;
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dct = (DataColumnType) iter.next();
- if( dct != null ) {
- if (nvl(dct.getDisplayTotal()).length() > 0) {
- displayColTotals = true;
- break;
- } // if
- } // if checking dct
- } // for
-
- DataSet ds = null;
- if (displayColTotals) {
- dr = new DataRow();
- // ds =
- // DbUtils.executeQuery(generateTotalSQLLinear(reportParamValues,
- // userId));
- ds = ConnectionUtils.getDataSet(reportSQL,
- dbInfo);
-
- for (int c = 0; c < reportCols.size(); c++) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- if ( dct != null ) {
- DataValue dv = new DataValue();
-
- String totalValue = "";
- if (ds != null)
- totalValue = ds.getString(0, c);
- if (nvl(dct.getDisplayTotal()).length() > 0
- && (!dct.getDisplayTotal().equals(AppConstants.TOTAL_SUM_ID)))
- totalValue = nvl(AppConstants.TOTAL_FUNCTIONS.getNameById(dct
- .getDisplayTotal()))
- + ": " + totalValue;
- dv.setDisplayValue(Utils.truncateTotalDecimals(totalValue));
-
- dv.setAlignment(dct.getDisplayAlignment());
- dv.setColName(dct.getColName());
- dv.setDisplayName(dct.getDisplayName());
- dv.setColId(dct.getColId());
- dv.setNowrap(nvl(dct.getNowrap(),"null").equals("false")?"null":nvl(dct.getNowrap(),"null"));
- StringBuffer indentation = new StringBuffer("");
- if(dct.getIndentation()!=null && dct.getIndentation()>0) {
- for (int indent=0; indent< dct.getIndentation(); indent++) {
- indentation.append("\t");
- }
- dv.setNowrap("true");
- }
- dv.setIndentation(indentation.toString());
- dv.setDisplayTotal(dct.getDisplayTotal());
- dv.setBold(true);
- dv.setVisible(dct.isVisible());
- if(dv.isVisible())
- dr.addDataValue(dv);
- } // dct check
- } // for
- }
-
- return dr;
- } // generateColumnDataTotalsLinear
-
-
- public ReportData loadHiveLinearReportData(String reportSQL, String userId, int downloadLimit, HttpServletRequest request) throws RaptorException {
- wholeSQL = reportSQL;
- int countRows = getHiveReportCount(wholeSQL);
- setReportDataSize(countRows);
- if(countRows < 1001)
- wholeSQL += " limit "+ countRows;
- else
- wholeSQL += " limit "+ downloadLimit;
- HttpSession session = request.getSession();
-
- DataSet ds = null;
- // try {
- String dbInfo = getDBInfo();
-
- List reportCols = getAllColumns();
- StringBuffer colNames = new StringBuffer();
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dc = (DataColumnType) iter.next();
- if (colNames.length() > 0)
- colNames.append(", ");
- colNames.append(dc.getColId());
- }
-
- ds = ConnectionUtils.getDataSet(wholeSQL, dbInfo);
-
- ReportData rd = new ReportData(0, true);
-
- // Already defined changed for modifying request parameters
- //List reportCols = getAllColumns();
- Vector visibleCols = new Vector(reportCols.size());
- Vector formatProcessors = new Vector(reportCols.size());
-
- // ColumnHeaderRow chr = new ColumnHeaderRow();
- // rd.reportColumnHeaderRows.addColumnHeaderRow(chr);
- // chr.setRowHeight("30");
- int count =0 ;
-
- /* ADDED */
- ReportFormFields rff = getReportFormFields();
- ReportFormFields childReportFormFields = null;
- String fieldDisplayName = "";
- String fieldValue = "";
-
- for (int c = 0; c < reportCols.size(); c++) {
- if(reportCols.get(c)!=null) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- if(nvl(dct.getDependsOnFormField()).length()>0 && nvl(dct.getDependsOnFormField()).indexOf("[")!=-1) {
- for(int i = 0 ; i < rff.size(); i++) {
- fieldDisplayName = "["+((FormField)rff.getFormField(i)).getFieldDisplayName()+"]";
- fieldValue = "";
- //if(dct.getOriginalDisplayName()==null) dct.setOriginalDisplayName(dct.getDisplayName());
- if (dct.getDependsOnFormField().equals(fieldDisplayName)) {
- fieldValue = nvl(request.getParameter(((FormField)rff.getFormField(i)).getFieldName()));
-
- if (fieldValue.length()>0) {
- if(!fieldValue.toUpperCase().equals("Y"))
- dct.setDisplayName(fieldValue);
- if(!dct.isVisible())
- dct.setVisible(true);
- } else {
- dct.setVisible(false);
- }
- }
- }
- }
- }
- }
-
- /* ADDED */
- String displayName = "";
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dc = (DataColumnType) iter.next();
-
- formatProcessors.add(count,new FormatProcessor(
- getSemaphoreById(dc.getSemaphoreId()), dc.getColType(), dc
- .getColFormat(), getReportDefType().equals(
- AppConstants.RD_SQL_BASED)));
-
- if (nvl(dc.getDrillDownURL()).length() > 0) {
- childReportFormFields = getChildReportFormFields(request,dc.getDrillDownURL());
- }
- if (dc.isVisible()) {
- visibleCols.add(count,dc);
- //if(dc.getColId().startsWith("group")) {
- for (int d = 0; d < reportCols.size(); d++) {
- if(reportCols.get(d)!=null) {
- DataColumnType dct1 = (DataColumnType) reportCols.get(d);
- if(dct1.getColId().equals(dc.getColId()+"_name") && ds.getRowCount()>0) {
- displayName = ds.getString(0,dct1.getColId());
- dc.setDisplayName(displayName);
- }
- }
- }
- //}
-
- String widthInPxls = dc.getDisplayWidthInPxls();
-
- if(nvl(widthInPxls).endsWith("px"))
- dc.setDisplayWidthInPxls(widthInPxls);
- else {
- widthInPxls = widthInPxls+"px";
- dc.setDisplayWidthInPxls(widthInPxls+"px");
- }
-
- rd.createColumn(dc.getColId(), dc.getDisplayName(), dc.getDisplayWidthInPxls(), dc.getDisplayHeaderAlignment(),
- visualManager.isColumnVisible(dc.getColId()), visualManager
- .getSortByColId().equals(dc.getColId()) ? visualManager
- .getSortByAscDesc() : null, isRuntimeColSortDisabled(), dc.getLevel()!=null?dc.getLevel():0, dc.getStart()!=null?dc.getStart():0, dc.getColspan()!=null?dc.getColspan():0, dc.isIsSortable()!=null?dc.isIsSortable():false);
- // chr.addColumnHeader(new ColumnHeader(dc.getDisplayName(),
- // (dc.getDisplayWidth()>100)?"10%":(""+dc.getDisplayWidth()+"%")));
- } // if
- else {
- visibleCols.add(count,null);
- rd.createColumn(dc.getColId(), "", dc.getDisplayWidthInPxls(), dc.getDisplayHeaderAlignment(),
- true, null,false, dc.getLevel()!=null?dc.getLevel():0, dc.getStart()!=null?dc.getStart():0, dc.getColspan()!=null?dc.getColspan():0, dc.isIsSortable()!=null?dc.isIsSortable():false);
-// formatProcessors.add(count,null);
- }
- count++;
- } // for
-
- ArrayList reportDataList = new ArrayList();
- for (int r = 0; r < ds.getRowCount(); r++) {
- DataRow dr = new DataRow();
- rd.reportDataRows.addDataRow(dr);
-
- for (int c = 0; c < reportCols.size(); c++) {
- if(reportCols.get(c)!=null) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- DataValue dv = new DataValue();
- dr.addDataValue(dv);
- dv.setDisplayValue(ds.getString(r, c));
- dv.setColName(dct.getColName());
- dv.setColId(dct.getColId());
- dv.setNowrap(nvl(dct.getNowrap(),"null").equals("false")?"null":nvl(dct.getNowrap(),"null"));
- StringBuffer indentation = new StringBuffer("");
- if(dct.getIndentation()!=null && dct.getIndentation()>0) {
- for (int indent=0; indent< dct.getIndentation(); indent++) {
- indentation.append("\t");
- }
- dv.setNowrap("true");
- }
- dv.setIndentation(indentation.toString());
- if(dct.isVisible()) {
-
- dv.setVisible(true);
- dv.setAlignment(dct.getDisplayAlignment());
- dv.setDisplayTotal(dct.getDisplayTotal());
- dv.setDisplayName(dct.getDisplayName());
-
- if (nvl(dct.getDrillDownURL()).length() > 0) {
-
- if(dv.getDisplayValue().length() > 0) {
- dv.setDrillDownURL(parseDrillDownURL(r, /* c, */ds, dct,request, childReportFormFields));
- dv.setDrillDowninPoPUp(dct.isDrillinPoPUp()!=null?dct.isDrillinPoPUp():false);
- }
-
- if (dv.getDisplayValue().length() == 0) {
- //dv.setDisplayValue("[NULL]");
- dv.setDisplayValue("");
- }
- } // if
-
- } else {
- dv.setVisible(false);
- dv.setHidden(true);
- }
- //System.out.println("in Linear report b4" + dr.getFormatId() + dr.getBgColorHtml() + dv.getDisplayValue());
-
- if(dr.getFormatId()!=null)
- ((FormatProcessor) formatProcessors.get(c)).setHtmlFormatters(dv, dr, true);
- else
- ((FormatProcessor) formatProcessors.get(c)).setHtmlFormatters(dv, dr, false);
-
- //System.out.println("in Linear report After" + dr.getFormatId() + dr.getBgColorHtml() + dv.getDisplayValue());
- } // if reportCols
- } // for
- reportDataList.add(dr);
- } // for
- rd.setReportDataList(reportDataList);
- //Only if rownumber options is needed
- //rd.addRowNumbers(pageNo, getPageSize());
-
- if (colDataTotalsLinear == null)
- colDataTotalsLinear = generateColumnDataTotalsLinear(new ArrayList(reportCols), userId,
- getDbInfo(),request);
- if (displayColTotals && colDataTotalsLinear != null) {
- String totalLabel = "Total";
- if (getReportDataSize() > getPageSize())
- totalLabel += "<br><font size=1>(for all pages)</font>";
-
- rd.setColumnDataTotalsLinear(colDataTotalsLinear, totalLabel);
- } // if
- // Please note the below function doesn't set the visibility for dv since this is set in this function. - Sundar
- rd.applyVisibility();
-
- return rd;
- } // loadHiveLinearReportData
-
- //For Hive reports
- public int getHiveReportCount(String sql) throws RaptorException {
- //select t from (select count(*) t from (select * from program)x)x1;
- int count = 0;
- String countSql = "select t from (select count(*) t from ("+ sql + ")" + (Globals.isPostgreSQL() || Globals.isMySQL() ?" AS ":"") + " x) AS x1";
-
- DataSet ds = null;
- // try {
- String dbInfo = getDBInfo();
- System.out.println("SQL getReportCount()- " + countSql);
- try {
- ds = ConnectionUtils.getDataSet(countSql, dbInfo);
- int totalRows = 0;
- String dbType = "";
- if (!isNull(dbInfo) && (!dbInfo.equals(AppConstants.DB_LOCAL))) {
- try {
- org.openecomp.portalsdk.analytics.util.RemDbInfo remDbInfo = new org.openecomp.portalsdk.analytics.util.RemDbInfo();
- dbType = remDbInfo.getDBType(dbInfo);
- } catch (Exception ex) {
- throw new RaptorException(ex);
- }
- }
- if( ds.getRowCount()>0) {
- count = Integer.parseInt(ds.getString(0,0));
- }
- } catch (NumberFormatException ex) {}
- return count;
-
- } // getReportCount
-
-
- /*private*/ public ReportFormFields getChildReportFormFields( HttpServletRequest request, String URL ) throws RaptorException {
- String childReportID = getReportID(URL);
-
- ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, childReportID,
- false, 1);
-
- ReportFormFields ddReportFormFields = ddRr.getReportFormFields();
- return ddReportFormFields;
- }
-
- private String getReportID(String URL) {
- URL = nvl(URL);
- int pos = URL.toLowerCase().indexOf("c_master=")+9;
- String reportID = "";
- if(URL.toLowerCase().indexOf("&", pos)!=-1)
- reportID = URL.substring(pos, URL.toLowerCase().indexOf("&", pos));
- else
- reportID = URL.substring(pos);
- return reportID;
-
- }
- /*private*/ public String parseDrillDownURL(int rowIdx, /* int colIdx, */DataSet ds, DataColumnType dct, HttpServletRequest request, ReportFormFields ddReportFormFields)
- throws RaptorException {
- Vector viewActions = DataCache.getDataViewActions();
- javax.servlet.http.HttpSession session = request.getSession();
-
- StringBuffer dUrl = new StringBuffer();
-
- //String childReportID = getReportID(dct.getDrillDownURL());
-
- //ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, childReportID,
- // false, 1);
-
- //ReportFormFields ddReportFormFields = ddRr.getReportFormFields();
-
- boolean isViewAction = false;
- int flag = 0;
- String requestParam ="";
- for (int k = 0; k < viewActions.size(); k++)
- if (dct.getDrillDownURL().equals(
- AppUtils.getBaseActionURL() + ((String) viewActions.get(k))))
- isViewAction = true;
- if (isViewAction) {
- // Drill-down to record details
- String param = nvl(dct.getDrillDownParams()); // i.e.
- // "c_master=[bo1.RECID$]"
- param = param.substring(AppUtils.getBaseActionParam().length() + 1,
- param.length() - 1); // i.e. "bo1.RECID$"
- param = param.replace('.', '_'); // i.e. "bo1.RECID$"
-
- dUrl.append(AppUtils.getBaseActionParam());
- dUrl.append(java.net.URLEncoder.encode(ds.getString(rowIdx, param.toLowerCase())));
- } else {
- // Drill-down to another report
- // Replacing col ids with values
- String param = nvl(dct.getDrillDownParams());
- while (param.indexOf('[') >= 0) {
- int startIdx = param.indexOf('[');
- int endIdx = param.indexOf(']');
- StringBuffer sb = new StringBuffer();
- if(startIdx>endIdx) {
- if (endIdx < param.length() - 1)
- sb.append(param.substring(endIdx + 1));
- param = sb.toString();
- continue;
- }
- if (startIdx > 0)
- sb.append(param.substring(0, startIdx));
-
- if (param.charAt(startIdx + 1) == '!') {
- // Parameter is a form field value
- String fieldId = param.substring(startIdx + 2, endIdx);
- String fieldValue = (String) reportParamValues.get(fieldId);
-
- sb.append(java.net.URLEncoder.encode(nvl(fieldValue)));
- //TODO Add a else if condition to check whether the param is from request Param
- //TODO make a unique symbol like #
- }else if (param.charAt(startIdx + 1) == '#') {
- flag = 1;
- String fieldId = param.substring(startIdx + 2, endIdx);
- String fieldValue = request.getParameter(fieldId);
- sb.append(java.net.URLEncoder.encode(nvl(fieldValue)));
-
- }else {
- // Parameter is a column value
- String fieldValue = "";
- String colValue = null;
- String colId = null;
- if (param.indexOf('!') < 0 || param.indexOf('!') > endIdx)
- colId = param.substring(startIdx + 1, endIdx);
- else {
- // Need to use NVL(column, form field)
- colId = param.substring(startIdx + 1, param.indexOf('!'));
-
- String fieldId = param.substring(param.indexOf('!') + 1, endIdx);
- FormField ff = getFormField(fieldId);
- if (ff.getFieldType().equals(FormField.FFT_TEXTAREA)) {
- fieldValue = reportParamValues.getParamValueforTextAreaDrilldown(fieldId);
- } else
- fieldValue = (String) reportParamValues.get(fieldId);
- } // else
-
- DataColumnType column = getColumnById(colId);
- String columnName = "";
- int groupColumn = 0;
- int groupMatch = 0;
- if(column.getColName().startsWith("[")) {
- groupColumn = 1;
- columnName = column.getDisplayName();
- for(ddReportFormFields.resetNext(); ddReportFormFields.hasNext(); ) {
- FormField ff = ddReportFormFields.getNext();
- if(ff.getFieldDisplayName().toLowerCase().equals(columnName.toLowerCase())) {
- groupMatch = 1;
- sb.delete(sb.lastIndexOf("&")+1, sb.length());
- sb.append(ff.getFieldName()+"=");
- }
- }
- }
- if (groupColumn == 0 || (groupColumn == 1 && groupMatch == 1)) {
- String dependsOn = column.getDependsOnFormField();
- if(nvl(dependsOn).length()>0)
- System.out.println("DependsOn " + dependsOn);
- if (column != null) {
- // if (column.getColType().equals(AppConstants.CT_DATE))
- //if (!nvl(column.getColFormat(), AppConstants.DEFAULT_DATE_FORMAT)
- // .equals(AppConstants.DEFAULT_DATE_FORMAT))
- // Use extra column instead
- //commented out below line usually for Visual
- //colId += AppConstants.DD_COL_EXTENSION;
- colValue = ds.getString(rowIdx, colId.toLowerCase());
- // if SQL-Based and drill-down param is a date, decode
- // it to the expected Oracle format **/
- if (getReportDefType().equals(AppConstants.RD_SQL_BASED))
- if (!getColumnNoParseDateFlag(column))
- if (ReportParamDateValueParser.isDateParam(colValue))
- colValue = ReportParamDateValueParser
- .formatDateParamValue(colValue);
- } // if
-
- String suppressValues = "|" + nvl(dct.getDrillDownType()) + "|";
- if (suppressValues.length() > 2
- && suppressValues.indexOf("|" + colValue + "|") >= 0)
- // Parameter value is suppressed and not passed to the
- // drill-down report
- colValue = null;
-
- sb.append(java.net.URLEncoder.encode(nvl(colValue, fieldValue)));
- } else {
- sb.delete(sb.lastIndexOf("&")+1, sb.length());
- }
- } // else
-
- if (endIdx < param.length() - 1)
- sb.append(param.substring(endIdx + 1));
- param = sb.toString();
- } // while
- if(Globals.getPassRequestParamInDrilldown()) {
- if(param.indexOf('#') < 0) {
- String[] reqParameters = Globals.getRequestParams().split(",");
- String[] sessionParameters = Globals.getSessionParams().split(",");
- for (int i = 0; i < reqParameters.length; i++) {
- if(request.getParameter(reqParameters[i])!=null) {
- if(!reqParameters[i].toUpperCase().startsWith("FF")){
- if(param.length()>0) {
- param += "&" + reqParameters[i]+"="
- + request.getParameter(reqParameters[i]);
- } else {
- param += "&" + reqParameters[i]+"="
- + request.getParameter(reqParameters[i]);
-
- }
- }
- }
- }
- for (int i = 0; i < sessionParameters.length; i++) {
- if(session.getAttribute(sessionParameters[i].toUpperCase())!=null) {
- if(!sessionParameters[i].toUpperCase().startsWith("FF")){
- if(param.length()>0) {
- param += "&" + sessionParameters[i].toUpperCase()+"="
- + (String)session.getAttribute(sessionParameters[i].toUpperCase());
- } else {
- param += "&" + sessionParameters[i].toUpperCase()+"="
- + (String)session.getAttribute(sessionParameters[i].toUpperCase());
-
- }
- }
- } else {
- param += "&" + sessionParameters[i].toUpperCase()+"="
- + (String)session.getAttribute(sessionParameters[i]);
-
- }
- }
-
- }
- }
-
- dUrl.append(param.toString());
- dUrl.append("&");
- dUrl.append(AppConstants.RI_DISPLAY_CONTENT);
- dUrl.append("=Y");
- dUrl.append("&");
- if(dct.isDrillinPoPUp()==null || (!dct.isDrillinPoPUp().booleanValue())) {
- dUrl.append(AppConstants.RI_SHOW_BACK_BTN);
- dUrl.append("=Y");
- dUrl.append("&");
- }
- dUrl.append(AppConstants.DRILLDOWN_INDEX);
- int index = Integer.parseInt(nvl(AppUtils.getRequestValue(request, AppConstants.DRILLDOWN_INDEX), "0"));
- /*
- int form_index = Integer.parseInt(nvl(AppUtils.getRequestValue(request, AppConstants.FORM_DRILLDOWN_INDEX), "0"));
- index = index>0 ? --index : 0;
- form_index = form_index>0 ? --form_index : 0;*/
- request.setAttribute(AppConstants.DRILLDOWN_INDEX, Integer.toString(index));
- /*session.setAttribute(AppConstants.DRILLDOWN_INDEX, Integer.toString(index));
- request.setAttribute(AppConstants.FORM_DRILLDOWN_INDEX, Integer.toString(form_index));
- session.setAttribute(AppConstants.FORM_DRILLDOWN_INDEX, Integer.toString(form_index));*/
-
- dUrl.append("=" + AppUtils.getRequestNvlValue(request, AppConstants.DRILLDOWN_INDEX));
-
- //TODO Add a if condition to check whether the param is request Param
- } // if
-
- if (dUrl.length() > 0)
- dUrl.insert(0, ((dct.getDrillDownURL()).indexOf('&') > 0) ? '&' : '&');
- dUrl.insert(0, AppUtils.getDrillActionURL()+dct.getDrillDownURL());
-
- //debugLogger.debug(" [[[[[[[[[[[[[[[[ " + dUrl);
-
- return dUrl.toString();
- } // parseDrillDownURL
-
- /** *********************************************************************************** */
-
- public DataRow generateColumnDataTotalsLinear(ArrayList reportCols, String userId,
- String dbInfo, HttpServletRequest request) throws RaptorException {
- DataRow dr = null;
-
- displayColTotals = false;
- for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
-
- DataColumnType dct = (DataColumnType) iter.next();
- if( dct != null ) {
- if (nvl(dct.getDisplayTotal()).length() > 0) {
- displayColTotals = true;
- break;
- } // if
- } // if checking dct
- } // for
-
- DataSet ds = null;
- if (displayColTotals) {
- dr = new DataRow();
- // ds =
- // DbUtils.executeQuery(generateTotalSQLLinear(reportParamValues,
- // userId));
- ds = ConnectionUtils.getDataSet(generateTotalSQLLinear(reportParamValues, userId,request),
- dbInfo);
-
- for (int c = 0; c < reportCols.size(); c++) {
- DataColumnType dct = (DataColumnType) reportCols.get(c);
- if ( dct != null ) {
- DataValue dv = new DataValue();
- if(dv.isVisible())
- dr.addDataValue(dv);
-
- String totalValue = "";
- if (ds != null)
- totalValue = ds.getString(0, c);
- if (nvl(dct.getDisplayTotal()).length() > 0
- && (!dct.getDisplayTotal().equals(AppConstants.TOTAL_SUM_ID)))
- totalValue = nvl(AppConstants.TOTAL_FUNCTIONS.getNameById(dct
- .getDisplayTotal()))
- + ": " + totalValue;
- dv.setDisplayValue(Utils.truncateTotalDecimals(totalValue));
-
- dv.setAlignment(dct.getDisplayAlignment());
- dv.setColName(dct.getColName());
- dv.setDisplayName(dct.getDisplayName());
- dv.setColId(dct.getColId());
- dv.setNowrap(nvl(dct.getNowrap(),"null").equals("false")?"null":nvl(dct.getNowrap(),"null"));
- StringBuffer indentation = new StringBuffer("");
- if(dct.getIndentation()!=null && dct.getIndentation()>0) {
- for (int indent=0; indent< dct.getIndentation(); indent++) {
- indentation.append("\t");
- }
- dv.setNowrap("true");
- }
- dv.setIndentation(indentation.toString());
- dv.setDisplayTotal(dct.getDisplayTotal());
- dv.setBold(true);
- } // dct check
- } // for
- }
-
- return dr;
- } // generateColumnDataTotalsLinear
-
- private Vector generateDataTotalsCrossTab(String rowColPos, String userId, HttpServletRequest request)
- throws RaptorException {
- String sql = getWholeSQL();
- Vector dataTotals = new Vector();
-
- boolean displayTotals = ((rowColPos.length() == 0) || (getCrossTabDisplayTotal(
- rowColPos).length() > 0));
- if (rowColPos.equals(AppConstants.CV_COLUMN))
- displayColTotals = displayTotals;
- else if (rowColPos.equals(AppConstants.CV_ROW))
- displayRowTotals = displayTotals;
-
- if (displayTotals) {
- // DataSet ds =
- // DbUtils.executeQuery(generateTotalSQLCrossTab(reportParamValues,
- // rowColPos, userId));
- String executeSql = generateTotalSQLCrossTab(
- sql, rowColPos, userId, request, reportParamValues);
- DataSet ds = ConnectionUtils.getDataSet(executeSql, getDbInfo());
-
- for (int i = 0; i < ds.getRowCount(); i++) {
- Vector headerValues = new Vector();
- String totalValue = null;
-
- int cPos = 0;
- for (Iterator iter = getAllColumns().iterator(); iter.hasNext();) {
- DataColumnType dct = (DataColumnType) iter.next();
-
- if (rowColPos.length() > 0
- && nvl(dct.getCrossTabValue()).equals(rowColPos)) {
- DataValue dataValue = new DataValue();
- dataValue.setBold(true);
- dataValue.setAlignment("center");
- dataValue.setDisplayValue(ds.getString(i, cPos++));
- headerValues.add(dataValue);
-
- //headerValues.add(ds.getString(i, cPos++));
- }
- else if (nvl(dct.getCrossTabValue()).equals(AppConstants.CV_VALUE))
- totalValue = ds.getString(i, cPos++);
- } // for
-
- dataTotals.add(new CrossTabTotalValue(headerValues, Utils
- .truncateTotalDecimals(totalValue)));
- } // for
- } // if
-
- return dataTotals;
- } // generateDataTotalsCrossTab
-
- /** *********************************************************************************** */
-
- public void hideColVisual(String colId) {
- visualManager.hideColumn(colId);
- if (pageDataCache != null)
- pageDataCache.columnVisualShowHide(colId, false);
- } // hideColVisual
-
- public void showColVisual(String colId) {
- visualManager.showColumn(colId);
- if (pageDataCache != null)
- pageDataCache.columnVisualShowHide(colId, true);
- } // showColVisual
-
- public void sortColVisual(String colId) {
- visualManager.setSortByColumn(colId);
- resetCache(true);
-
- pageDataCache = null;
- cachedPageNo = -1;
- } // sortColVisual
-
- /** *********************************************************************************** */
-
- public String generateDistinctValuesSQL(DataColumnType dct, String userId, HttpServletRequest request) throws RaptorException {
- return super.generateDistinctValuesSQL(reportParamValues, dct, userId, request);
- } // generateDistinctValuesSQL
-
- public String getDbInfo() {
- return this.cr.getDbInfo();
- }
-
- private String fixSQL(StringBuffer sql) {
- int pos = 0;
- int pos_f_format = 0;
- int pos_t_format = 0;
- int pos_alias = 0;
- String format = "";
- String alias = null;
- if(sql.indexOf("SELECT", 7)!= -1) {
- pos = sql.indexOf("SELECT", 7);
- if(sql.indexOf("TO_CHAR", pos)!= -1){
- pos = sql.indexOf("TO_CHAR", pos);
- if(sql.indexOf("999",pos)!= -1) {
- pos = sql.indexOf("999",pos);
- pos_f_format = sql.lastIndexOf(", '", pos);
- if(pos_f_format == -1 || (pos - pos_f_format > 10)) {
- pos_f_format = sql.lastIndexOf(",'", pos);
- pos_f_format -= 1;
- }
- pos = pos_f_format;
- if(sql.indexOf("')", pos)!= -1) {
- pos_t_format = sql.indexOf("')", pos);
- //debugLogger.debug("pos_t - " + pos_t_format + " " + pos);
- if(pos_t_format == -1 || (pos_t_format - pos > 20)) {
- pos_t_format = sql.indexOf("' )", pos);
- pos_t_format += 3;
- }
- else if (pos_t_format != -1)
- pos_t_format += 2;
- format = sql.substring(pos_f_format+3, pos_t_format);
- //alias = sql.substring(pos_t_format+3, pos_t_format+6);
- pos_alias = sql.indexOf(" ", pos_t_format);
- alias = sql.substring(pos_alias+1, pos_alias+4);
- }
- }
- }
-
- if(sql.indexOf(alias)!=-1) {
- pos = sql.indexOf(alias);
- //debugLogger.debug(pos + " " + alias.length()+1 + "\n" + sql);
- sql.delete(pos,pos+4);
- sql.insert(pos, "TO_NUMBER("+alias+", '"+format+"')),'"+ format + "')");
- pos = sql.lastIndexOf("SUM", pos);
- if(pos==-1)
- pos = sql.lastIndexOf("AVG", pos);
- else if (pos==-1)
- pos = sql.lastIndexOf("COUNT", pos);
- else if (pos == -1)
- pos = sql.lastIndexOf("STDDEV", pos);
- else if (pos == -1)
- pos = sql.lastIndexOf("VARIANCE", pos);
- sql.insert(pos, "TO_CHAR (");
- }
-
- }
-
- //debugLogger.debug("Alias|" + alias + "| Format " + format);
- //debugLogger.debug(sql.toString());
- return sql.toString();
- } // FixSQL
-
- public String parseReportSQL(String sql) throws RaptorException {
- StringBuffer parsedSQL = new StringBuffer();
-
- Vector updatedReportCols = new Vector();
-
- curSQLParsePos = 0;
- int lastParsePos = curSQLParsePos;
- String lastToken = null;
- logger.debug(EELFLoggerDelegate.debugLogger, ("Flat File parseReportSQL ******* SQL " + sql));
- sql = sql.replaceAll("([\\s]*\\() (?!FROM)", "(");
- sql = sql.replaceAll("[\\s]*\\)", ")");
- //sql = sql.replaceAll("[dD][eE][cC][oO][dD][eE] ", "decode");
- //sql = sql.replaceAll("[\\s]*\\(", "(");
- //sql = replaceNewLine(sql, "decode ", "decode");
- //sql = replaceNewLine(sql, "DECODE ", "decode");
- //sql = replaceNewLine(sql, "Decode ", "decode");
-
- String nextToken = getNextSQLParseToken(sql, true);
- String dbInfo = getDbInfo();
- boolean isCYMBALScript = false;
- if (!isNull(dbInfo) && (!dbInfo.equals(AppConstants.DB_LOCAL))) {
- try {
- org.openecomp.portalsdk.analytics.util.RemDbInfo remDbInfo = new org.openecomp.portalsdk.analytics.util.RemDbInfo();
- String dbType = remDbInfo.getDBType(dbInfo);
- if (dbType.equals("DAYTONA") && !(nextToken.toUpperCase().equals("SELECT"))) {
- isCYMBALScript = true;
- }
- } catch (Exception ex) {
- throw new RaptorException(ex);
- }
- }
- if ( isCYMBALScript == false ) {
- while (nextToken.length() > 0) {
- //System.out.println("LastToken " + lastToken + " NextToken " + nextToken);
-
-
- if (parsedSQL.length() == 0) {
- if (nextToken.toUpperCase().equals("SELECT"))
- parsedSQL.append("SELECT ");
- else
- throw new org.openecomp.portalsdk.analytics.error.ValidationException(
- "The SQL must start with the SELECT keyword.");
- } else if (nextToken.toUpperCase().equals("DISTINCT")
- && parsedSQL.toString().equals("SELECT ")) {
- parsedSQL.append("DISTINCT ");
- } else if (nextToken.equals("*")
- && (parsedSQL.toString().equals("SELECT ") || parsedSQL.toString().equals(
- "SELECT DISTINCT "))) {
- throw new org.openecomp.portalsdk.analytics.error.ValidationException(
- "You cannot use \"SELECT *\". Please specify select columns/expressions.");
- } else if (nextToken.toUpperCase().equals("FROM")) {
- if (lastToken != null) {
- updatedReportCols.add(getParseSQLDataColumn(lastToken, null, parsedSQL,
- updatedReportCols, false));
- lastToken = null;
- }
-
- parsedSQL.append(" \n");
- while (lastParsePos < sql.length()
- && Character.isWhitespace(sql.charAt(lastParsePos)))
- lastParsePos++;
- parsedSQL.append(sql.substring(lastParsePos));
- break;
- } else {
- //System.out.println("Next Token " + nextToken);
- if (nextToken.charAt(nextToken.length() - 1) == ',') {
- // The token ends with ,
- nextToken = nextToken.substring(0, nextToken.length() - 1);
-
- if (nextToken.length() == 0) {
- if (lastToken != null) {
- updatedReportCols.add(getParseSQLDataColumn(lastToken, null,
- parsedSQL, updatedReportCols, false));
- lastToken = null;
- } // else just comma => ignore it
- } else {
- //System.out.println("Next Token " + nextToken + " is Here" + " Last Token " + lastToken);
- if (lastToken != null) {
- updatedReportCols.add(getParseSQLDataColumn(lastToken, nextToken,
- parsedSQL, updatedReportCols, false));
- lastToken = null;
- } else
- updatedReportCols.add(getParseSQLDataColumn(nextToken, null,
- parsedSQL, updatedReportCols, false));
- }
- } else {
- // The token doesn't end with ,
- if (lastToken == null)
- lastToken = nextToken;
- else {
- String token = getNextSQLParseToken(sql, false);
- //System.out.println(" ********** " + token + " " + lastToken);
- if (!token.toUpperCase().equals("FROM"))
- throw new org.openecomp.portalsdk.analytics.error.ValidationException(
- "|FROM keyword or a comma expected after [" + nextToken
- + "].");
- //System.out.println("Next Token " + nextToken);
- updatedReportCols.add(getParseSQLDataColumn(lastToken, nextToken,
- parsedSQL, updatedReportCols, false));
- lastToken = null;
- } // else
- } // else
- } // else
-
- lastParsePos = curSQLParsePos;
- nextToken = getNextSQLParseToken(sql, true);
- } // while
- } else { // if CYMBAL Script
- nextToken = getNextCYMBALSQLParseToken(sql, true);
- Pattern re = null;
- Matcher matcher = null;
- String extracted = null;
- while (nextToken.length() > 0) {
- if (lastToken == null) lastToken = nextToken;
-
- if( lastToken.toUpperCase().equals("DO DISPLAY")) {
- re = Pattern.compile("each(.*)\\[.(.*?)\\]"); //\\[(.*?)\\]
- matcher = re.matcher(nextToken);
- if (matcher.find()) {
- extracted = matcher.group();
- re = Pattern.compile("\\[(.*?)\\]");
- matcher = re.matcher(nextToken);
- if(matcher.find()) {
- extracted = matcher.group();
- extracted = extracted.substring(1,extracted.length()-2);
- StringTokenizer sToken = new StringTokenizer(extracted);
- while(sToken.hasMoreTokens()) {
- updatedReportCols.add(getParseSQLDataColumn("", sToken.nextToken(),
- new StringBuffer(""), updatedReportCols, true));
- }
- }
-
- }
-
- }
- lastToken = nextToken;
- nextToken = getNextCYMBALSQLParseToken(sql, true);
- }
- }
-
- if (updatedReportCols.size() == 0)
- throw new org.openecomp.portalsdk.analytics.error.ValidationException(
- "The SQL statement must have at least one column in the SELECT clause.");
-
-
- return parsedSQL.toString();
-
- } // parseReportSQL
-
- private String getNextCYMBALSQLParseToken(String sql, boolean updateParsePos) {
- int braketCount = 0;
- boolean isInsideQuote = false;
- StringBuffer nextToken = new StringBuffer();
- for (int idxNext = curSQLParsePos; idxNext < sql.length(); idxNext++) {
- char ch = sql.charAt(idxNext);
-
- if (ch!='\n')
- nextToken.append(ch);
- else break;
- } // for
-
- return nextToken.toString();
- } // getNextSQLParseToken
-
- private String getNextSQLParseToken(String sql, boolean updateParsePos) {
- int braketCount = 0;
- boolean isInsideQuote = false;
- StringBuffer nextToken = new StringBuffer();
- for (int idxNext = curSQLParsePos; idxNext < sql.length(); idxNext++) {
- char ch = sql.charAt(idxNext);
-
- if (Character.isWhitespace(ch) || ch == ',') {
- if (ch == ',')
- nextToken.append(ch);
-
- if (nextToken.length() == 0)
- continue;
- else if (braketCount == 0 && (!isInsideQuote)) {
- if (updateParsePos)
- curSQLParsePos = idxNext + ((ch == ',') ? 1 : 0);
- break;
- } else if (ch != ',' && nextToken.charAt(nextToken.length() - 1) != ' ')
- nextToken.append(' ');
- } else {
- nextToken.append(ch);
-
- if (ch == '(' || ch == '[')
- braketCount++;
- else if (ch == ')' || ch == ']')
- braketCount--;
- else if (ch == '\''/* ||ch=='\"' */)
- isInsideQuote = (!isInsideQuote);
- } // else
- } // for
-
- return nextToken.toString();
- } // getNextSQLParseToken
-
- private DataColumnType getParseSQLDataColumn(String sqlExpression, String colId,
- StringBuffer parsedSQL, Vector updatedReportCols, boolean isCYMBALScript) throws RaptorException {
- DataColumnType dct = null;
-
- if (colId != null) {
- if (!isParseSQLColID(colId))
- throw new org.openecomp.portalsdk.analytics.error.ValidationException(
- "["
- + colId
- + "] must either be a valid column id consisting only of letters, numbers, and underscores, or there must be a comma in front of it.");
-
- dct = getColumnById(colId);
- } else {
- // Getting unique column id
- colId = "";
- int colIdN = 0;
- for (int i = 0; (i < sqlExpression.length()) && (colIdN < 2); i++)
- if (Character.isLetter(sqlExpression.charAt(i))) {
- colId += sqlExpression.toLowerCase().charAt(i);
- colIdN++;
- } // if
-
- colIdN = getAllColumns().size() + updatedReportCols.size();
- for (boolean idAlreadyUsed = true; idAlreadyUsed; colIdN++) {
- String newColId = colId + colIdN;
- idAlreadyUsed = false;
-
- for (Iterator iter = getAllColumns().iterator(); iter.hasNext();)
- if (newColId.equals(((DataColumnType) iter.next()).getColId())) {
- idAlreadyUsed = true;
- break;
- }
-
- if (!idAlreadyUsed)
- for (Iterator iter = updatedReportCols.iterator(); iter.hasNext();)
- if (newColId.equals(((DataColumnType) iter.next()).getColId())) {
- idAlreadyUsed = true;
- break;
- }
- } // for
-
- colId += (colIdN - 1);
- } // else
-
- if (dct == null) {
- dct = (new ObjectFactory()).createDataColumnType();
- dct.setColId(colId);
- dct.setDisplayWidth(10);
- dct.setDisplayAlignment("Left");
- dct.setVisible(true);
- dct.setGroupBreak(false); // ???
-
- boolean isValidIdentifier = Character.isLetterOrDigit(sqlExpression.charAt(0));
- for (int i = 0; i < sqlExpression.length(); i++)
- if (!(Character.isLetterOrDigit(sqlExpression.charAt(i))
- || (sqlExpression.charAt(i) == '_') || (sqlExpression.charAt(i) == '$'))) {
- isValidIdentifier = false;
- break;
- } // if
-
- if (isValidIdentifier) {
- dct.setDisplayName(sqlExpression);
- } else {
- dct.setDisplayName(colId);
- } // else
- } // if
- if(!isCYMBALScript)
- sqlExpression = sqlExpression.replaceAll(", '", ",'");
- dct.setDbColName(sqlExpression);
- dct.setColName(sqlExpression);
- dct.setCalculated(true);
- dct.setColType(AppConstants.CT_CHAR);
- dct.setDbColType(AppConstants.CT_CHAR);
- adjustColumnType(dct); // ???
-
- if(!isCYMBALScript) {
- if (parsedSQL.toString().equals("SELECT ")
- || parsedSQL.toString().equals("SELECT DISTINCT "))
- parsedSQL.append("\n\t");
- else
- parsedSQL.append(", \n\t");
- parsedSQL.append(sqlExpression);
- parsedSQL.append(" ");
- parsedSQL.append(colId);
- }
-
- return dct;
- } // getParseSQLDataColumn
-
- private boolean isParseSQLColID(String token) {
- if (nvl(token).length() == 0)
- return false;
-
- for (int i = 0; i < token.length(); i++) {
- char ch = token.charAt(i);
-
- if (i == 0 && ch == '_')
- return false;
-
- if (!(Character.isLetterOrDigit(ch) || ch == '_'))
- return false;
- } // for
-
- return true;
- } // isParseSQLColID
-
- /*private*/ public String parseReportSQLForDrillDownParams(String reportSQL, DataColumnType dataColumnRequest, HttpServletRequest request){
- String param = nvl(dataColumnRequest.getDrillDownParams());
- String sql = reportSQL;
- int pos = 0;
- while (param.indexOf('[', pos) >= 0) {
- int startIdx = param.indexOf('[',pos);
- int endIdx = param.indexOf(']',startIdx+1);
- pos = startIdx+1;
- StringBuffer sb = new StringBuffer();
- if (startIdx > 0)
- sb.append(param.substring(0, startIdx));
- else break;
-
- if (param.charAt(startIdx + 1) == '#') {
- // Parameter is a form field value
- String fieldId = param.substring(startIdx + 2, endIdx);
- String fieldValue = request.getParameter(fieldId);
- sql = Utils.replaceInString(sql, "[" + fieldId.toUpperCase()+"]", fieldValue );
- }
- }
- return sql;
- }
-
-public List getMapMarkers(ReportData rd, org.openecomp.portalsdk.analytics.xmlobj.ReportMap xmlmap){
-
- ArrayList markers = new ArrayList();
- int rNum = 0;
- HashMap colHash = new HashMap();
-
- for(rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext(); rNum++) {
- DataRow dr = rd.reportDataRows.getNext();
- for(dr.resetNext(); dr.hasNext(); ) {
- DataValue dv = dr.getNext();
- colHash.put(dv.getColId(), dv.getDisplayValueLinkHtml());
- }
-
- for (int i = 0; i < xmlmap.getMarkers().size(); i ++){
- Marker marker = new Marker("", "", "");
- org.openecomp.portalsdk.analytics.xmlobj.Marker m = (org.openecomp.portalsdk.analytics.xmlobj.Marker) xmlmap.getMarkers().get(i);
- String address = (String) colHash.get(m.getAddressColumn());
- String data = (String) colHash.get(m.getDataColumn());
- marker.setAddress(address);
- if (xmlmap.getAddAddressInDataYN() != null && xmlmap.getAddAddressInDataYN().equals("Y")){
- marker.setData(address + "<br/>" + data);
- }
- else{
- marker.setData(data);
- }
- marker.setColor(m.getMarkerColor());
- markers.add(marker);
- System.out.println("%%%%%%%%%%%% marker is : " + address + data);
- }
-
- }
-
- return markers;
- }
-
-
-
- public ReportParamValues getReportParamValues() {
- return reportParamValues;
- }
-
- public String getFormFieldFilled(String title) {
- if( getFormFieldList()!=null && reportParamValues!=null && nvl(title).length()>0) {
- for (Iterator iter1 = getFormFieldList().getFormField().iterator(); iter1.hasNext();) {
- FormFieldType fft = (FormFieldType) iter1.next();
- String fieldDisplay = getFormFieldDisplayName(fft);
- String fieldId = fft.getFieldId();
- if(!fft.getFieldType().equals(FormField.FFT_BLANK) && !fft.getFieldType().equals(FormField.FFT_LIST_MULTI) && !fft.getFieldType().equals(FormField.FFT_TEXTAREA)) {
- String paramValue = Utils.oracleSafe(nvl(reportParamValues.getParamValue(fieldId)));
- title = Utils.replaceInString(title, fieldDisplay, nvl(
- paramValue, ""));
- }
- }
- }
- return title;
- }
-
- public synchronized Object clone() {
- try {
- return super.clone();
- } catch (CloneNotSupportedException e) {
- // this shouldn't happen, since we are Cloneable
- throw new InternalError("Cloning throws error.");
- }
- }
-
- public VisualManager getVisualManager() {
- return visualManager;
- }
-
- public String getReportSQLWithRowNum(String _orderBy, boolean asc) {
- String sql = getWholeSQL();
- int closeBracketPos = 0;
- // Added reportSQLOnlyFirstPart which has Column information with Rownum
- return nvl(getReportSQLOnlyFirstPart()) + " " + sql + ") x ";
-
- }
-
- public int getDisplayMode() {
- return DISPLAY_MODE;
- }
-
- public void setDisplayMode(int mode) {
- DISPLAY_MODE = mode;
- }
-
- public int getDateOption() {
- return DATE_OPTION;
- }
-
- public void setDateOption(int dateOption) {
- DATE_OPTION = dateOption;
- }
-
- public boolean isDisplayColTotals() {
- return displayColTotals;
- }
-
- public void setDisplayColTotals(boolean displayColTotals) {
- this.displayColTotals = displayColTotals;
- }
-
- public boolean isDisplayRowTotals() {
- return displayRowTotals;
- }
-
- public void setDisplayRowTotals(boolean displayRowTotals) {
- this.displayRowTotals = displayRowTotals;
- }
-
-
- private boolean canPersistLinearReport() {
- boolean visibleColExist = false;
-
- if (getDataSourceList().getDataSource().size() > 0) {
- for (Iterator iter = getAllColumns().iterator(); iter.hasNext();) {
- DataColumnType dct = (DataColumnType) iter.next();
-
- if (dct.isVisible()) {
- visibleColExist = true;
- break;
- }
- } // for
- } // if
-
- return visibleColExist;
- } // canPersistLinearReport
-
- public void persistLinearReport(HttpServletRequest request)
- throws RaptorException {
- if (!canPersistLinearReport())
- return;
-
- Connection connection = null;
- try {
- String userID = AppUtils.getUserID(request);
- String reportXML = marshal();
- logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Report " + reportID
- + " XML marshalled succesfully"));
-
- // Update report
- verifySQLBasedReportAccess(request);
- reportSecurity.reportUpdate(request);
- connection = DbUtils.startTransaction();
- ReportLoader.updateCustomReportRec(connection, this, reportXML);
- ReportLoader.createReportLogEntry(connection, reportID, userID,
- AppConstants.RLA_UPDATE, "", "");
- logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] DB update report "
- + reportID + " succesfull"));
- DbUtils.commitTransaction(connection);
- } catch (RaptorException e) {
- e.printStackTrace();
- DbUtils.rollbackTransaction(connection);
- throw e;
- } finally {
- DbUtils.clearConnection(connection);
- }
- } // persistLinearReport
-
- public void persistDashboardReport(HttpServletRequest request)
- throws RaptorException {
-
- Connection connection = null;
- try {
- String userID = AppUtils.getUserID(request);
- String reportXML = marshal();
- logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Report " + reportID
- + " XML marshalled succesfully"));
-
- // Update report
- verifySQLBasedReportAccess(request);
- reportSecurity.reportUpdate(request);
- connection = DbUtils.startTransaction();
- ReportLoader.updateCustomReportRec(connection, this, reportXML);
- ReportLoader.createReportLogEntry(connection, reportID, userID,
- AppConstants.RLA_UPDATE, "", "");
- logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] DB update report "
- + reportID + " succesfull"));
- DbUtils.commitTransaction(connection);
- } catch (RaptorException e) {
- e.printStackTrace();
- DbUtils.rollbackTransaction(connection);
- throw e;
- } finally {
- DbUtils.clearConnection(connection);
- }
- } // persistDashboardReport
- public String getTotalSql() {
- return totalSql;
- }
-
- public void setTotalSql(String totalSql) {
- this.totalSql = totalSql;
- }
-
- public void setTriggerFormFieldCheck( ReportFormFields FormFieldList, FormField selectedFormField) {
-
- for (Iterator iter = getReportFormFields().iterator(); iter.hasNext();) {
- FormField ff = (FormField) iter.next();
- if(!ff.getFieldName().equals(selectedFormField.getFieldName())) {
- if(nvl(ff.getBaseSQL()).length()>0 && ff.getBaseSQL().indexOf("["+selectedFormField.getFieldDisplayName() +"]")!= -1) {
- selectedFormField.setTriggerOtherFormFields(true);
- }
-
- }
- }
-
- }
-
- public void setTriggerThisFormFieldCheck( ReportFormFields FormFieldList, FormField selectedFormField) {
-
- String sql = nvl(selectedFormField.getBaseSQL()).length()>0 ? selectedFormField.getBaseSQL():"";
- for (Iterator iter = getReportFormFields().iterator(); iter.hasNext();) {
- FormField ff = (FormField) iter.next();
- if(!ff.getFieldName().equals(selectedFormField.getFieldName())) {
- if(sql.indexOf("["+ff.getFieldDisplayName() +"]")!= -1) {
- selectedFormField.setTriggerThisFormfield(true);
- break;
- }
-
- }
- }
-
- }
-
- private boolean isAllowEdit(HttpServletRequest request) {
- boolean allowEdit = false;
- String userId = AppUtils.getUserID(request);
- try {
- if( AppUtils.isAdminUser(request) || AppUtils.isSuperUser(request) ) {
- allowEdit = true;
- } else {
- if(getOwnerID().equals(userId)) allowEdit = true;
- else allowEdit = false;
- }
- } catch (RaptorException ex) {
- allowEdit = false;
- }
- return allowEdit;
- }
- public ReportJSONRuntime createReportJSONRuntime(HttpServletRequest request, ReportData rd) {
- String userId = AppUtils.getUserID(request);
- ObjectMapper mapper = new ObjectMapper();
- ReportJSONRuntime reportJSONRuntime = new ReportJSONRuntime();
- reportJSONRuntime.setReportTitle(getReportTitle());
- //reportJSONRuntime.setReportSubTitle(getReportSubTitle());
- reportJSONRuntime.setReportID(getReportID());
- reportJSONRuntime.setReportDescr(getReportDescr());
- reportJSONRuntime.setReportName(getReportName());
- reportJSONRuntime.setReportSubTitle(getReportSubTitle());
- reportJSONRuntime.setAllowSchedule(isAllowSchedule());
- reportJSONRuntime.setAllowEdit(isAllowEdit(request));
- reportJSONRuntime.setColIdxTobeFreezed(getFrozenColumnId());
- reportJSONRuntime.setNumFormCols(getNumFormColsAsInt());
- //back button url
- reportJSONRuntime.setBackBtnURL("");
- String chartType = getChartType();
- boolean displayChart = (nvl(chartType).length()>0)&&getDisplayChart();
- boolean displayChartWizard = getDisplayChart();
- reportJSONRuntime.setChartAvailable(displayChart);
- reportJSONRuntime.setChartWizardAvailable(displayChartWizard);
- reportJSONRuntime.setDisplayData(!isDisplayOptionHideData());
- reportJSONRuntime.setDisplayForm(!isDisplayOptionHideForm());
- reportJSONRuntime.setHideFormFieldsAfterRun(isHideFormFieldAfterRun());
- reportJSONRuntime.setDisplayExcel(!isDisplayOptionHideExcelIcons());
- reportJSONRuntime.setDisplayPDF(!isDisplayOptionHidePDFIcons());
- ArrayList<IdNameValue> formFieldValues = new ArrayList<IdNameValue>();
- ArrayList<FormFieldJSON> formFieldJSONList = new ArrayList<FormFieldJSON>();
- if(getReportFormFields()!=null) {
- formFieldJSONList = new ArrayList<FormFieldJSON>(getReportFormFields().size());
- for (Iterator iter = getReportFormFields().iterator(); iter.hasNext();) {
- formFieldValues = new ArrayList<IdNameValue>();
- FormField ff = (FormField) iter.next();
- ff.setDbInfo(getDbInfo());
- FormFieldJSON ffJSON = new FormFieldJSON();
- ffJSON.setFieldId(ff.getFieldName());
- ffJSON.setFieldType(ff.getFieldType());
- ffJSON.setFieldDisplayName(ff.getFieldDisplayName());
- ffJSON.setHelpText(ff.getHelpText());
- ffJSON.setValidationType(ff.getValidationType());
- ffJSON.setVisible(ff.isVisible());
- //ffJSON.setTriggerOtherFormFields(ff.getDependsOn());
- IdNameList lookup = null;
- lookup = ff.getLookupList();
- String selectedValue = "";
- String oldSQL = "";
- IdNameList lookupList = null;
- boolean readOnly = false;
- if(lookup!=null) {
- if(!ff.hasPredefinedList) {
- IdNameSql lu = (IdNameSql) lookup;
- String SQL = lu.getSql();
- oldSQL = lu.getSql();
- setTriggerFormFieldCheck( getReportFormFields(), ff);
- ffJSON.setTriggerOtherFormFields(ff.isTriggerOtherFormFields());
- SQL = parseAndFillReq_Session_UserValues(request, SQL, userId);
- SQL = parseAndFillWithCurrentValues(request, SQL, ff);
- String defaultSQL = lu.getDefaultSQL();
- defaultSQL = parseAndFillReq_Session_UserValues(request, defaultSQL, userId);
- defaultSQL = parseAndFillWithCurrentValues(request, defaultSQL, ff);
- lookup = new IdNameSql(-1,SQL,defaultSQL);
-
- lookupList = lookup;
- try {
- lookup.loadUserData(0, "", ff.getDbInfo(), ff.getUserId());
- } catch (Exception e ){ e.printStackTrace(); //throw new RaptorRuntimeException(e);
- }
- }
- lookup.trimToSize();
-
- String[] requestValue = request.getParameterValues(ff.getFieldName());
-
- if(lookup != null && lookup.size() > 0) {
- for (lookup.resetNext(); lookup.hasNext();) {
- IdNameValue value = lookup.getNext();
- readOnly = value.isReadOnly();
- if(requestValue != null && Arrays.asList(requestValue).contains(value.getId())) {
- //if(value.getId().equals(requestValue))
- value.setDefaultValue(true);
- } else if (AppUtils.nvl(ff.getDefaultValue()).length()>0) {
- if(ff.getDefaultValue().equals(value.getId())) {
- value.setDefaultValue(true);
- }
- }
- if(!(ff.getFieldType().equals(FormField.FFT_CHECK_BOX) || ff.getFieldType().equals(FormField.FFT_COMBO_BOX) || ff.getFieldType().equals(FormField.FFT_LIST_BOX)
- || ff.getFieldType().equals(FormField.FFT_LIST_MULTI)) && value.isDefaultValue())
- formFieldValues.add(value);
- else if(ff.getFieldType().equals(FormField.FFT_CHECK_BOX) || ff.getFieldType().equals(FormField.FFT_COMBO_BOX) || ff.getFieldType().equals(FormField.FFT_LIST_BOX)
- || ff.getFieldType().equals(FormField.FFT_LIST_MULTI)) {
- formFieldValues.add(value);
- }
- //break;
- }
- } else {
- if(requestValue!=null && requestValue.length>0) {
- IdNameValue value = new IdNameValue(requestValue[0], requestValue[0], true, false);
- formFieldValues.add(value);
- }
- }
-
- } else {
- setTriggerFormFieldCheck( getReportFormFields(), ff);
- ffJSON.setTriggerOtherFormFields(ff.isTriggerOtherFormFields());
- String[] requestValue = request.getParameterValues(ff.getFieldName());
- if(requestValue!=null && requestValue.length>0) {
- IdNameValue value = new IdNameValue(requestValue[0], requestValue[0], true, false);
- formFieldValues.add(value);
- } else if (AppUtils.nvl(ff.getDefaultValue()).length()>0) {
- IdNameValue value = new IdNameValue(ff.getDefaultValue(), ff.getDefaultValue(), true, false);
- formFieldValues.add(value);
- }
- }
- if(!ff.hasPredefinedList) {
- if(oldSQL != null && !oldSQL.equals("")) {
- ((IdNameSql)lookup).setSQL(oldSQL);
- }
- }
-
-
-
- ffJSON.setFormFieldValues(formFieldValues);
- formFieldJSONList.add(ffJSON);
- } // for
- }
- reportJSONRuntime.setFormFieldList(formFieldJSONList);
- //reportJSONRuntime.setReportDataColumns(get);
- int count = 0;
- Map<String,Object> dvJSON = null;
- if(rd!=null) {
- count = 0;
- reportJSONRuntime.setTotalRows(getReportDataSize());
- ArrayList<ColumnHeader> colList = new ArrayList<ColumnHeader>();
- ArrayList<Map<String,Object>> reportDataRows = new ArrayList<Map<String,Object>>();
- for(rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext(); ) {
- count++;
- ColumnHeaderRow chr = rd.reportColumnHeaderRows.getNext();
- for(chr.resetNext(); chr.hasNext(); ) {
- colList.add(chr.getNext());
- }
- }
- if(getReportDataSize() > 0) {
- count = 0;
- for(rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext(); count++) {
- dvJSON = new HashMap<String,Object>();
- DataRow dr = rd.reportDataRows.getNext();
- for(dr.resetNext(); dr.hasNext(); ) {
- DataValue dv = dr.getNext();
- try {
- dvJSON.put(dv.getColId(), dv);
- } catch (Exception ex) {
- ex.printStackTrace();
-
- }
- }
- reportDataRows.add(dvJSON);
- }
- }
- reportJSONRuntime.setReportDataColumns(colList);
- reportJSONRuntime.setReportDataRows(reportDataRows);
- //reportJSONRuntime.setSqlWhole(getWholeSQL());
- reportJSONRuntime.setPageSize(getPageSize());
-
- }
-
- if(getReportDataSize() <= 0) {
- reportJSONRuntime.setMessage(getEmptyMessage());
- }
- reportJSONRuntime.setSqlWhole(getWholeSQL());
- return reportJSONRuntime;
-
- }
-
- public ReportJSONRuntime createFormFieldJSONRuntime(HttpServletRequest request) {
- String userId = AppUtils.getUserID(request);
- ObjectMapper mapper = new ObjectMapper();
- ReportJSONRuntime reportJSONRuntime = new ReportJSONRuntime();
- reportJSONRuntime.setReportTitle(getReportTitle());
- reportJSONRuntime.setReportID(getReportID());
- reportJSONRuntime.setReportName(getReportName());
- reportJSONRuntime.setReportSubTitle(getReportSubTitle());
- reportJSONRuntime.setNumFormCols(getNumFormColsAsInt());
- ArrayList<IdNameValue> formFieldValues = new ArrayList<IdNameValue>();
- ArrayList<FormFieldJSON> formFieldJSONList = new ArrayList<FormFieldJSON>();
- if(reportFormFields!=null) {
- formFieldJSONList = new ArrayList<FormFieldJSON>(reportFormFields.size());
- for (Iterator iter = reportFormFields.iterator(); iter.hasNext();) {
- formFieldValues = new ArrayList<IdNameValue>();
- FormField ff = (FormField) iter.next();
- FormFieldJSON ffJSON = new FormFieldJSON();
- ffJSON.setFieldId(ff.getFieldName());
- ffJSON.setFieldType(ff.getFieldType());
- ffJSON.setFieldDisplayName(ff.getFieldDisplayName());
- ffJSON.setHelpText(ff.getHelpText());
- ffJSON.setValidationType(ff.getValidationType());
- ffJSON.setFormFieldValues(formFieldValues);
- ffJSON.setVisible(ff.isVisible());
- formFieldJSONList.add(ffJSON);
- }
- for (Iterator iter = reportFormFields.iterator(); iter.hasNext();) {
- formFieldValues = new ArrayList<IdNameValue>();
- FormField ff = (FormField) iter.next();
- ff.setDbInfo(getDbInfo());
- for (Iterator iter1 = formFieldJSONList.iterator(); iter1.hasNext();) {
- FormFieldJSON ffJSON = (FormFieldJSON) iter1.next();
- if(ffJSON.getFieldId().equals(ff.getFieldName())) {
- IdNameList lookup = null;
- lookup = ff.getLookupList();
- String selectedValue = "";
- String oldSQL = "";
- IdNameList lookupList = null;
- boolean readOnly = false;
- if(lookup!=null) {
- if(!ff.hasPredefinedList) {
- IdNameSql lu = (IdNameSql) lookup;
- String SQL = lu.getSql();
- oldSQL = lu.getSql();
- setTriggerFormFieldCheck( getReportFormFields(), ff);
- ffJSON.setTriggerOtherFormFields(ff.isTriggerOtherFormFields());
- setTriggerThisFormFieldCheck(getReportFormFields(), ff);
- SQL = parseAndFillReq_Session_UserValues(request, SQL, userId);
- SQL = parseAndFillOtherFormfieldValues(request, SQL, userId, formFieldJSONList);
- //SQL = parseAndFillWithCurrentValues(formGrid,SQL, ff);
- String defaultSQL = lu.getDefaultSQL();
- defaultSQL = parseAndFillReq_Session_UserValues(request, defaultSQL, userId);
- //defaultSQL = parseAndFillWithCurrentValues(formGrid,defaultSQL, ff);
- lookup = new IdNameSql(-1,SQL,defaultSQL);
-
- lookupList = lookup;
- try {
- lookup.loadUserData(0, "", ff.getDbInfo(), ff.getUserId());
- } catch (Exception e ){ e.printStackTrace(); //throw new RaptorRuntimeException(e);
- }
- }
- lookup.trimToSize();
-
- String requestValue = request.getParameter(ff.getFieldName());
- ArrayList<String> requestValueList = new ArrayList<String>();
- requestValueList.add(requestValue);
-
- /*if(ff.isTriggerThisFormfield()) {
- refreshFormFieldsWithLatestValue(request, userId, ff, formFieldJSONList);
- }*/
-
-
- for (lookup.resetNext(); lookup.hasNext();) {
- IdNameValue value = lookup.getNext();
- readOnly = value.isReadOnly();
- if(nvl(requestValue).length()>0) {
- if(value.getId().equals(requestValue))
- value.setDefaultValue(true);
- }
- formFieldValues.add(value);
- //break;
- }
-
- } else {
- setTriggerFormFieldCheck( getReportFormFields(), ff);
- ffJSON.setTriggerOtherFormFields(ff.isTriggerOtherFormFields());
- String[] requestValue = request.getParameterValues(ff.getFieldName());
- if(requestValue!=null && requestValue.length>0) {
- IdNameValue value = new IdNameValue(requestValue[0], requestValue[0], true, false);
- formFieldValues.add(value);
- } else if (AppUtils.nvl(ff.getDefaultValue()).length()>0) {
- IdNameValue value = new IdNameValue(ff.getDefaultValue(), ff.getDefaultValue(), true, false);
- formFieldValues.add(value);
- }
- }
- if(!ff.hasPredefinedList) {
- if(oldSQL != null && !oldSQL.equals("")) {
- ((IdNameSql)lookup).setSQL(oldSQL);
- }
- }
-
-
- //if(!ff.isTriggerThisFormfield()) {
- ffJSON.setFormFieldValues(formFieldValues);
- //}
-
- break;
-
- } //if
- } //for
- }//for
- }//if
-
- reportJSONRuntime.setFormFieldList(formFieldJSONList);
- //reportJSONRuntime.setReportDataColumns(get);
-
- return reportJSONRuntime;
-
- }
-
-
- private String parseAndFillOtherFormfieldValues(HttpServletRequest request, String SQL, String userId, ArrayList<FormFieldJSON> formFieldJSONList) {
- ArrayList<IdNameValue> formFieldValues = new ArrayList<IdNameValue>();
- String selectedValue = "";
- String displayName = "";
- for (Iterator iter1 = formFieldJSONList.iterator(); iter1.hasNext();) {
- FormFieldJSON ffJSON = (FormFieldJSON) iter1.next();
- displayName = ffJSON.getFieldDisplayName();
- ArrayList<IdNameValue> formfieldvalues = ffJSON.getFormFieldValues();
- for (int i = 0; i< formfieldvalues.size(); i++) {
- IdNameValue formfieldItem = formfieldvalues.get(i);
- if(formfieldItem.isDefaultValue()) {
- selectedValue = formfieldItem.getId();
- }
- }
- SQL = Utils.replaceInString(SQL, "["+displayName+"]", selectedValue);
- }
- return SQL;
-
- }
-
- private void refreshFormFieldsWithLatestValue(HttpServletRequest request, String userId, FormField ff_src, ArrayList<FormFieldJSON> formFieldJSONList) {
- ArrayList<IdNameValue> formFieldValues = new ArrayList<IdNameValue>();
- List<String> requestValueList = null;
- IdNameList lookup = null;
- lookup = ff_src.getLookupList();
- IdNameSql lu = (IdNameSql) lookup;
- String SQL = "" ;
- String oldSQL = "";
- String oldDefaultSQL = "";
- String defaultSQL = "";
- IdNameList lookupList = null;
- if(lu != null) {
- SQL = lu.getSql();
- oldSQL = lu.getSql();
- oldDefaultSQL = lu.getDefaultSQL();
- defaultSQL = lu.getDefaultSQL();
- }
- boolean readOnly = false;
- for (Iterator iter1 = formFieldJSONList.iterator(); iter1.hasNext();) {
- FormFieldJSON ffJSON = (FormFieldJSON) iter1.next();
- if((ffJSON.getFieldId().equals(ff_src.getFieldName())) && ffJSON.isVisible()) {
- for (Iterator iter = reportFormFields.iterator(); iter.hasNext();) {
- formFieldValues = new ArrayList<IdNameValue>();
- FormField ff = (FormField) iter.next();
- if(!ff.getFieldName().equals(ff_src.getFieldName())) {
- //IdNameList lookup = null;
- //lookup = ff.getLookupList();
- String selectedValue = "";
-
-
-
- String [] requestParam = request.getParameterValues(ff.getFieldName());
- if(requestParam != null) {
- requestValueList = Arrays.asList(request.getParameterValues(ff.getFieldName()));
-
- } else {
- requestValueList = new ArrayList<String>();
- }
-
-
- if(nvl(ff_src.getBaseSQL()).length()>0 && ff_src.getBaseSQL().indexOf("["+ff.getFieldDisplayName() +"]")!= -1) {
- if(lookup!=null) {
- try {
- if(!ff_src.hasPredefinedList) {
- String formatSelected = null;
- if(ff_src.getFieldType().equals(FormField.FFT_LIST_MULTI) || ff_src.getFieldType().equals(FormField.FFT_CHECK_BOX)) {
- formatSelected = formatSelectedItems(requestValueList, ff_src.getFieldType());
- } else
- formatSelected = requestValueList.size()>0?requestValueList.get(0):"";
- SQL = Utils.replaceInString(SQL, "["+ff_src.getFieldDisplayName()+"]", formatSelected);
- defaultSQL = Utils.replaceInString(defaultSQL, "["+ff_src.getFieldDisplayName()+"]", formatSelected);
- defaultSQL = parseAndFillWithCurrentValues(request, defaultSQL, ff_src);
- defaultSQL = parseAndFillReq_Session_UserValues(request, defaultSQL, userId);
- SQL = parseAndFillReq_Session_UserValues(request, SQL, userId);
- SQL = parseAndFillWithCurrentValues(request, SQL, ff_src);
-
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
-
- }
-
- }
- }
- }
-
- if(nvl(ff_src.getBaseSQL()).length()>0) {
- lookup = new IdNameSql(-1,SQL,defaultSQL);
- lookupList = lookup;
- try {
- lookup.loadUserData(0, "", ff_src.getDbInfo(), ff_src.getUserId());
- } catch (Exception e ){
- e.printStackTrace(); //throw new RaptorRuntimeException(e);
- }
- if(!ff_src.hasPredefinedList) {
- lookup.trimToSize();
- for (lookup.resetNext(); lookup.hasNext();) {
- IdNameValue value = lookup.getNext();
- readOnly = value.isReadOnly();
- formFieldValues.add(value);
- }
- }
- ffJSON.setFormFieldValues(formFieldValues);
- }
- if(!ff_src.hasPredefinedList) {
- if(oldSQL != null && !oldSQL.equals("")) {
- ((IdNameSql)lookup).setSQL(oldSQL);
- }
- if(oldDefaultSQL != null && !oldDefaultSQL.equals("")) {
- ((IdNameSql)lookup).setDefaultSQL(oldDefaultSQL);
- }
- }
-
- }
- }
-
- }
-
-
- private void triggerOtherFormFieldsWithThisValue(HttpServletRequest request, String userId, FormField ff_src, ArrayList<String> requestValueList, ArrayList<FormFieldJSON> formFieldJSONList) {
- ArrayList<IdNameValue> formFieldValues = new ArrayList<IdNameValue>();
- //ArrayList<FormFieldJSON> formFieldJSONList = new ArrayList<FormFieldJSON>();
- for (Iterator iter = reportFormFields.iterator(); iter.hasNext();) {
- formFieldValues = new ArrayList<IdNameValue>();
- FormField ff = (FormField) iter.next();
- if(!ff_src.getFieldName().equals(ff.getFieldName())) {
- for (Iterator iter1 = formFieldJSONList.iterator(); iter1.hasNext();) {
- FormFieldJSON ffJSON = (FormFieldJSON) iter1.next();
- if(ffJSON.getFieldId().equals(ff.getFieldName()) && ffJSON.isVisible()) {
- if(nvl(ff.getBaseSQL()).length()>0 && ff.getBaseSQL().indexOf("["+ff_src.getFieldDisplayName() +"]")!= -1) {
- IdNameList lookup = null;
- lookup = ff.getLookupList();
- String selectedValue = "";
- String oldSQL = "";
- String oldDefaultSQL = "";
- IdNameList lookupList = null;
- boolean readOnly = false;
- if(lookup!=null) {
- try {
- if(!ff.hasPredefinedList) {
- IdNameSql lu = (IdNameSql) lookup;
- String SQL = lu.getSql();
- oldSQL = lu.getSql();
- oldDefaultSQL = lu.getDefaultSQL();
- String defaultSQL = lu.getDefaultSQL();
- String formatSelected = null;
- if(ff_src.getFieldType().equals(FormField.FFT_LIST_MULTI) || ff_src.getFieldType().equals(FormField.FFT_CHECK_BOX)) {
- formatSelected = formatSelectedItems(requestValueList, ff.getFieldType());
- }
- else
- formatSelected = requestValueList.size()>0?requestValueList.get(0):"";
- SQL = Utils.replaceInString(SQL, "["+ff_src.getFieldDisplayName()+"]", formatSelected);
- defaultSQL = Utils.replaceInString(defaultSQL, "["+ff_src.getFieldDisplayName()+"]", formatSelected);
- defaultSQL = parseAndFillWithCurrentValues(request, defaultSQL, ff_src);
- defaultSQL = parseAndFillReq_Session_UserValues(request, defaultSQL, userId);
- SQL = parseAndFillReq_Session_UserValues(request, SQL, userId);
- SQL = parseAndFillWithCurrentValues(request, SQL, ff_src);
- lookup = new IdNameSql(-1,SQL,defaultSQL);
- lookupList = lookup;
- try {
- lookup.loadUserData(0, "", ff.getDbInfo(), ff.getUserId());
- } catch (Exception e ){
- e.printStackTrace(); //throw new RaptorRuntimeException(e);
- }
- }
- lookup.trimToSize();
-
-
-
- for (lookup.resetNext(); lookup.hasNext();) {
- IdNameValue value = lookup.getNext();
- readOnly = value.isReadOnly();
-// if(nvl(requestValue).length()>0) {
-// if(value.getId().equals(requestValue))
-// value.setDefaultValue(true);
-// }
- formFieldValues.add(value);
- //break;
- }
-
- ffJSON.setFormFieldValues(formFieldValues);
-
- if(!ff.hasPredefinedList) {
- if(oldSQL != null && !oldSQL.equals("")) {
- ((IdNameSql)lookup).setSQL(oldSQL);
- }
- if(oldDefaultSQL != null && !oldDefaultSQL.equals("")) {
- ((IdNameSql)lookup).setDefaultSQL(oldDefaultSQL);
- }
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
-
- } //ff baseSQL
- }
- }
- }
- }
-
- }
-
- public String formatSelectedItems(List selectedItems, String type) {
- StringBuffer value = new StringBuffer("");
- int count = 0;
- boolean multiple = false;
- if(type.equals("LIST_MULTI_SELECT"))
- multiple = true;
- //multiple = (selectedItems.size()>1);
- for(Iterator iter = selectedItems.iterator(); iter.hasNext(); ) {
- count++;
- String entry = (String) iter.next();
- if(count == 1 && multiple)
- value.append("(");
- //if(type.equals(FormField.FFT_CHECK_BOX))
- /*if(type.equals(FormField.FFT_CHECK_BOX))
- value.append("'"+Utils.oracleSafe(entry)+"'");
- else*/ if (type.equals(FormField.FFT_LIST_MULTI))
- value.append("'"+Utils.oracleSafe(entry)+"'");
- else if(type.equals(FormField.FFT_LIST_BOX))
- value.append(Utils.oracleSafe(entry));
- else
- value.append("'"+Utils.oracleSafe(entry)+"'");
- if((count < selectedItems.size()) && multiple)
- value.append(",");
- if((count == selectedItems.size()) && multiple)
- value.append(")");
- }
-
- if(value.length()>0)
- return value.toString();
- else
- return null;
- }
-
-public String parseAndFillWithCurrentValues(HttpServletRequest request, String sql, FormField source_Formfield) {
-
- if (getFormFieldList() != null) {
- for (Iterator iter = getFormFieldList().getFormField().iterator(); iter.hasNext();) {
- FormFieldType fft = (FormFieldType) iter.next();
- String fieldId = fft.getFieldId();
- String fieldDisplay = getFormFieldDisplayName(fft);
- String formfield_value = "";
- List<String> selectedItems = new ArrayList<String>();
- //Added so that Combo Box in old RAPTOR definition is translated to List box
- if(fft.getFieldType().equals(FormField.FFT_COMBO_BOX)) {
- fft.setFieldType(FormField.FFT_LIST_BOX);
- }
- if(!fft.getFieldType().equals(FormField.FFT_BLANK)) {
- //if(source_Formfield==null || (source_Formfield!=null && !fft.getFieldId().equals(source_Formfield.getFieldName()))) {
- // Add oracle safe
- // Add param base sql
- if(fft.getFieldType().equals(FormField.FFT_LIST_MULTI) || fft.getFieldType().equals(FormField.FFT_CHECK_BOX)) {
- if(request.getParameterValues(fieldId)!=null && request.getParameterValues(fieldId).length > 0) {
-
- selectedItems = Arrays.asList(request.getParameterValues(fieldId));
- formfield_value = formatSelectedItems(selectedItems, fft.getFieldType());
- } else {
- formfield_value = "";
- }
- } else if(fft.getFieldType().equals(FormField.FFT_RADIO_BTN)) {
- if(request.getParameter(fieldId)!=null) {
- formfield_value = request.getParameter(fieldId);
- } else {
- formfield_value = "";
- }
- } else if (fft.getFieldType().equals(FormField.FFT_HIDDEN)) {
- if(request.getParameter(fieldId)!=null) {
- formfield_value = request.getParameter(fieldId);
- } else {
- formfield_value = "";
- }
- } else if((fft.getFieldType().equals(FormField.FFT_TEXT) || fft.getFieldType().equals(FormField.FFT_TEXTAREA)) &&
- (!fft.getValidationType().equals(FormField.VT_DATE) && !fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)&&
- !fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) && !fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) ) {
- if(request.getParameter(fieldId)!=null) {
- formfield_value = request.getParameter(fieldId);
- } else {
- formfield_value = "";
- }
- } else if (fft.getValidationType().equals(FormField.VT_DATE) || fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)||
- fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
- /*if(formGrid.hasFellow(fieldId, true)) {
- Datebox tb = (Datebox) formGrid.getFellowIfAny(fieldId, true);
- try {
- formfield_value = tb.getText();
- } catch (WrongValueException ex) {
- formfield_value = "";
- }
- if(AppUtils.nvl(formfield_value).length() > 0) {
- if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)) {
- if(formGrid.hasFellow(fieldId+"_Hr", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- }
- } else if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN)) {
- if(formGrid.hasFellow(fieldId+"_Min", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- Label hiddenLbMin = (Label) formGrid.getFellowIfAny(fieldId+"_Min", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue();
-
- }
- } else if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
- if(formGrid.hasFellow(fieldId+"_Sec", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- Label hiddenLbMin = (Label) formGrid.getFellowIfAny(fieldId+"_Min", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue();
- Label hiddenLbSec = (Label) formGrid.getFellowIfAny(fieldId+"_Sec", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue()+ ":" +hiddenLbSec.getValue();
-
- }
- }
- }
-
- } else {
- formfield_value = "";
- }*/
- } else if ((fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)||
- fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC))) {
- /*if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)||
- fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
- if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_HR)) {
- if(formGrid.hasFellow(fieldId+"_Hr", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- }
- } else if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_MIN)) {
- if(formGrid.hasFellow(fieldId+"_Min", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- Label hiddenLbMin = (Label) formGrid.getFellowIfAny(fieldId+"_Min", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue();
-
- }
- } else if(fft.getValidationType().equals(FormField.VT_TIMESTAMP_SEC)) {
- if(formGrid.hasFellow(fieldId+"_Sec", true)) {
- Label hiddenLbHr = (Label) formGrid.getFellowIfAny(fieldId+"_Hr", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue();
- Label hiddenLbMin = (Label) formGrid.getFellowIfAny(fieldId+"_Min", true);
- //formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue();
- Label hiddenLbSec = (Label) formGrid.getFellowIfAny(fieldId+"_Sec", true);
- formfield_value = formfield_value + " " + hiddenLbHr.getValue() + ":" +hiddenLbMin.getValue()+ ":" +hiddenLbSec.getValue();
-
- }
- }
-
- } */
- } else if (fft.getFieldType().equals(FormField.FFT_TEXT_W_POPUP)) {
- if(request.getParameter(fieldId)!=null) {
- formfield_value = request.getParameter(fieldId);
- } else {
- formfield_value = "";
- }
- } else if (fft.getFieldType().equals(FormField.FFT_LIST_BOX)) {
- if(request.getParameter(fieldId)!=null) {
- formfield_value = request.getParameter(fieldId);
- } else {
- formfield_value = "";
- }
- //}
- }
- if(nvl(formfield_value).length()>0) {
- sql = Utils.replaceInString(sql, fieldDisplay, formfield_value);
- } else {
- sql = Utils.replaceInString(sql, "'"+fieldDisplay+"'", "null");
- sql = Utils.replaceInString(sql, fieldDisplay, "null");
- //sql = Utils.replaceInString(sql, fieldDisplay, "''");
- }
- } // for
- }
- }
- return sql;
- }
- public String parseAndFillReq_Session_UserValues(HttpServletRequest request, String sql, String user_id) {
- HttpSession session = request.getSession();
-
- String[] reqParameters = Globals.getRequestParams().split(",");
- String[] sessionParameters = Globals.getSessionParams().split(",");
- String[] scheduleSessionParameters = Globals.getSessionParamsForScheduling().split(",");
-
-
- if(AppUtils.nvl(sql).length()>0) {
- for (int i = 0; i < reqParameters.length; i++) {
- if(!reqParameters[i].startsWith("ff") && (request.getParameter(reqParameters[i].toUpperCase())!=null && request.getParameter(reqParameters[i].toUpperCase()).length() > 0))
- sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase()+"]", request.getParameter(reqParameters[i].toUpperCase()) );
- else if (request.getParameter(reqParameters[i])!=null && request.getParameter(reqParameters[i]).length() > 0)
- sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase()+"]", request.getParameter(reqParameters[i]) );
- }
-
- for (int i = 0; i < scheduleSessionParameters.length; i++) {
- //debugLogger.debug(" Session " + " scheduleSessionParameters[i] " + scheduleSessionParameters[i].toUpperCase() + " " + request.getParameter(scheduleSessionParameters[i]));
- if(request.getParameter(scheduleSessionParameters[i])!=null && request.getParameter(scheduleSessionParameters[i]).trim().length()>0 )
- sql = Utils.replaceInString(sql, "[" + scheduleSessionParameters[i].toUpperCase()+"]", request.getParameter(scheduleSessionParameters[i]) );
- if(request.getAttribute(scheduleSessionParameters[i])!=null && ((String)request.getAttribute(scheduleSessionParameters[i])).trim().length()>0 )
- sql = Utils.replaceInString(sql, "[" + scheduleSessionParameters[i].toUpperCase()+"]", (String) request.getAttribute(scheduleSessionParameters[i]) );
-
- }
-
- for (int i = 0; i < sessionParameters.length; i++) {
- //if(!sessionParameters[i].startsWith("ff"))
- //fieldSQL = Utils.replaceInString(fieldSQL, "[" + sessionParameters[i].toUpperCase()+"]", (String)session.getAttribute(sessionParameters[i].toUpperCase()) );
- //else {
- if (session.getAttribute(sessionParameters[i])!=null && ((String)session.getAttribute(sessionParameters[i])).length() > 0) {
- //debugLogger.debug(" Session " + " sessionParameters[i] " + sessionParameters[i] + " " + (String)session.getAttribute(sessionParameters[i]));
- sql = Utils.replaceInString(sql, "[" + sessionParameters[i].toUpperCase()+"]", (String)session.getAttribute(sessionParameters[i]) );
- }
- // }
- }
- sql = Utils.replaceInString(sql, "[USERID]", user_id);
- sql = Utils.replaceInString(sql, "[USER_ID]", user_id);
- sql = Utils.replaceInString(sql, "[LOGGED_USERID]", user_id);
-
- }
- return sql;
- }
-
-} // ReportRuntime