2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalsdk.analytics.model.runtime;
22 import java.util.Enumeration;
23 import java.util.Hashtable;
24 import java.util.Iterator;
26 import javax.servlet.http.HttpServletRequest;
28 import org.openecomp.portalsdk.analytics.error.RaptorException;
29 import org.openecomp.portalsdk.analytics.error.ReportSQLException;
30 import org.openecomp.portalsdk.analytics.system.AppUtils;
31 import org.openecomp.portalsdk.analytics.system.ConnectionUtils;
32 import org.openecomp.portalsdk.analytics.system.Globals;
33 import org.openecomp.portalsdk.analytics.util.AppConstants;
34 import org.openecomp.portalsdk.analytics.util.DataSet;
35 import org.openecomp.portalsdk.analytics.util.Utils;
36 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
38 public class ReportParamValuesForPDFExcel extends Hashtable {
40 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ReportParamValuesForPDFExcel.class);
42 private Hashtable paramIsMultiValue = null;
43 private Hashtable paramIsTextAreaValue = null;
44 private ReportFormFields rff = null;
46 private Hashtable multiValueBaseSQL = null;
48 public ReportParamValuesForPDFExcel() {
50 paramIsMultiValue = new Hashtable();
51 paramIsTextAreaValue = new Hashtable();
52 multiValueBaseSQL = new Hashtable();
53 } // ReportParamValues
55 public ReportParamValuesForPDFExcel(ReportFormFields rff, String reportDefType) {
58 for (Iterator iter = rff.iterator(); iter.hasNext();) {
59 FormField ff = (FormField) iter.next();
61 put(ff.getFieldName(), nvl(ff.getDefaultValue()));
63 boolean isMultiValue = ff.getFieldType().equals(FormField.FFT_CHECK_BOX)
64 || ff.getFieldType().equals(FormField.FFT_LIST_MULTI);
65 boolean isTextAreaValue = ff.getFieldType().equals(FormField.FFT_TEXTAREA) && reportDefType
66 .equals(AppConstants.RD_SQL_BASED);
67 paramIsMultiValue.put(ff.getFieldName(), new Boolean(isMultiValue));
68 paramIsTextAreaValue.put(ff.getFieldName(), new Boolean(isTextAreaValue));
69 if (isMultiValue && ff.getBaseSQL() != null)
70 multiValueBaseSQL.put(ff.getFieldName(), ff.getBaseSQL());
72 } // ReportParamValues
75 * public ReportParamValues(ReportFormFields rff, HttpServletRequest
76 * request) { this(rff);
78 * setParamValues(request); } // ReportParamValues
80 public boolean isParameterMultiValue(String fieldName) {
81 Boolean b = (Boolean) paramIsMultiValue.get(fieldName);
82 return (b != null) ? b.booleanValue() : false;
83 } // isParameterMultiValue
85 public boolean isParameterTextAreaValue(String fieldName) {
86 Boolean b = (Boolean) paramIsTextAreaValue.get(fieldName);
87 return (b != null) ? b.booleanValue() : false;
88 } // isParameterMultiValue
90 public boolean setParamValues(HttpServletRequest request, boolean refresh) {
91 //debugLogger.debug("ReportParamValues for PDF Excel setParamValues called " + refresh);
92 long currentTime = System.currentTimeMillis();
93 boolean paramUpdated = false;
94 if(refresh) clearValues();
100 String dbInfo = null;
101 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
102 if(rr!=null && rr.getReportType().equals(AppConstants.RT_DASHBOARD)) {
103 rr = (ReportRuntime) request.getSession().getAttribute("FirstDashReport");
105 rff = rr.getReportFormFields();
106 } else if (rr == null) {
107 rr = (ReportRuntime) request.getSession().getAttribute("FirstDashReport");
109 rff = rr.getReportFormFields();
111 rff = rr.getReportFormFields();
115 dbInfo = rr.getDBInfo();
116 if (Utils.isNull(dbInfo)) {
117 dbInfo = (String) request.getSession().getAttribute("remoteDB");
119 if(!Utils.isNull(dbInfo)){
120 for (Iterator iter = rff.iterator(); iter.hasNext();) {
121 name=""; //just added
122 ff = (FormField) iter.next();
123 //debugLogger.debug("ff.getFieldName " + ff.getFieldName() + " " + ff.getFieldDisplayName() + " " + ff.getFieldType()+ " " +ff.getBaseSQLForPDFExcel()+ " "+ rr.getParamValue(ff.getFieldName()));
124 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
125 sql = ff.getBaseSQLForPDFExcel();
126 if(sql!=null && sql.trim().length()>0)
127 sql = Utils.replaceInString(sql, "[LOGGED_USERID]", AppUtils.getUserID(request));
128 if(ff.getFieldType().equals(FormField.FFT_COMBO_BOX) || ff.getFieldType().equals(FormField.FFT_LIST_BOX) || ff.getFieldType().equals(FormField.FFT_TEXT_W_POPUP) || ff.getFieldType().equals(FormField.FFT_HIDDEN)) {
129 for (Enumeration enum1 = rr.getParamKeys(); enum1.hasMoreElements();) {
130 name = (String) enum1.nextElement();
131 value = rr.getParamValue(name);
132 value = getParamValueForSQL(name, value);
133 if(name.startsWith("ff")) {
134 for (Iterator iter1 = rff.iterator(); iter1.hasNext();) {
135 FormField ff1 = (FormField) iter1.next();
137 if(sql!=null && sql.trim().length()>0){
138 if(name.equals(ff.getFieldName())){
139 sql = Utils.replaceInString(sql, "[VALUE]", value);
141 if(name.equals(ff1.getFieldName())){
142 sql = Utils.replaceInString(sql, "["+ff1.getFieldDisplayName()+"]", value);
149 } else if (ff.getFieldType().equals(ff.FFT_LIST_MULTI)||ff.getFieldType().equals(ff.FFT_CHECK_BOX)) {
150 for (Enumeration enum1 = rr.getParamKeys(); enum1.hasMoreElements();) {
151 name = (String) enum1.nextElement();
152 value = rr.getParamValue(name);
153 value = getParamValueForSQL(name, value);
154 if(name.startsWith("ff")) {
155 for (Iterator iter1 = rff.iterator(); iter1.hasNext();) {
156 FormField ff1 = (FormField) iter1.next();
158 if(sql!=null && sql.trim().length()>0){
159 if(name.equals(ff.getFieldName())){
160 sql = Utils.replaceInString(sql, "[VALUE]", value);
162 if(name.equals(ff1.getFieldName())){
163 sql = Utils.replaceInString(sql, "["+ff1.getFieldDisplayName()+"]", value);
171 if(nvl(ff.getFieldDefaultSQL()).length()<=0)
174 if(sql!=null && sql.trim().length()>0){
176 if(name.length()<=0) name = ff.getFieldName();
177 value = rr.getParamValue(name);
178 //debugLogger.debug("Name "+ name+ " value:" + value);
179 String paramValue = getParamValueForSQL(name, value);
180 //debugLogger.debug("PDFEXCEL " + name+ " " + ff.getFieldName()+ " " + value + " " + sql +" "+ paramValue);
181 if(name!=null && name.equals(ff.getFieldName()))
182 sql = Utils.replaceInString(sql, "[VALUE]", paramValue);
183 if(paramValue == null) {
184 if(sql.lastIndexOf("where id = ''")>0)
185 sql = sql.substring(0, sql.lastIndexOf("where id = ''"));
187 //debugLogger.debug("SQL Modified " + sql);
188 FormField ff2 = null;
189 for (Iterator iter1 = rff.iterator(); iter1.hasNext();) {
190 ff2 = (FormField)iter1.next();
191 sql = Utils.replaceInString(sql, "[" + ff2.getFieldDisplayName() +"]", getParamValue(ff2.getFieldName()));
193 //debugLogger.debug("SQL Modified after replacing formfield" + sql);
195 String[] reqParameters = Globals.getRequestParams().split(",");
196 String[] sessionParameters = Globals.getSessionParams().split(",");
197 String[] scheduleSessionParameters = Globals.getSessionParamsForScheduling().split(",");
198 javax.servlet.http.HttpSession session = request.getSession();
199 //debugLogger.debug("B4 Session " + sql);
200 if(session != null ) {
201 for (int i = 0; i < sessionParameters.length; i++) {
202 sql = Utils.replaceInString(sql, "[" + sessionParameters[i].toUpperCase()+"]", (String)session.getAttribute(sessionParameters[i]) );
205 //debugLogger.debug("B4 request " + sql);
206 if(request != null ) {
207 for (int i = 0; i < scheduleSessionParameters.length; i++) {
208 sql = Utils.replaceInString(sql, "[" + scheduleSessionParameters[i].toUpperCase()+"]", request.getParameter(scheduleSessionParameters[i]) );
210 for (int i = 0; i < reqParameters.length; i++) {
211 if(!reqParameters[i].startsWith("ff")) {
212 if (request.getParameter(reqParameters[i])!=null) {
213 sql = Utils.replaceInString(sql, "[" + reqParameters[i]+"]", request.getParameter(reqParameters[i]) );
214 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase()+"]", request.getParameter(reqParameters[i]) );
217 sql = Utils.replaceInString(sql, "[" + reqParameters[i]+"]", request.getParameter(reqParameters[i].toUpperCase()) );
218 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase()+"]", request.getParameter(reqParameters[i].toUpperCase()) );
222 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase()+"]", request.getParameter(reqParameters[i]) );
225 //debugLogger.debug("After request " + sql);
228 ds = ConnectionUtils.getDataSet(sql, dbInfo);
229 } catch (ReportSQLException ex) {
230 logger.debug(EELFLoggerDelegate.debugLogger, ("sql not complete" + sql));
232 if(ff.getFieldType().equals(FormField.FFT_LIST_MULTI) || ff.getFieldType().equals(FormField.FFT_CHECK_BOX)) {
233 StringBuffer multiValue = new StringBuffer("");
235 for(int i = 0; i < ds.getRowCount(); i++) {
236 //if(i==0) multiValue.append("(");
237 multiValue.append(ds.getString(i,1));
238 if(i<ds.getRowCount()-1)
239 multiValue.append("|");
240 //else multiValue.append(")");
244 put(ff.getFieldName(), nvl(multiValue.toString()));
246 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
247 value1 = nvl(rr.getParamValue(ff.getFieldName())) + " "+addZero(Utils.oracleSafe(nvl(rr
248 .getParamValue(ff.getFieldName()+"_Hr"))));
249 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
250 value1 = value1 + (nvl(rr
251 .getParamValue(ff.getFieldName()+"_Min")).length() > 0 ? ":" + addZero(Utils.oracleSafe(nvl(rr
252 .getParamValue(ff.getFieldName()+"_Min")))) : "");
254 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
255 value1 = value1 + (nvl(rr
256 .getParamValue(ff.getFieldName()+"_Sec")).length() > 0 ? ":"+ addZero(Utils.oracleSafe(nvl(rr
257 .getParamValue(ff.getFieldName()+"_Sec")))) : "");
259 //debugLogger.debug("77777777777777 " + value1);
260 put(ff.getFieldName(), nvl(value1));
263 if(ds!=null && ds.getRowCount()>0) put(ff.getFieldName(), nvl(ds.getString(0,1)));
264 else put(ff.getFieldName(), nvl(value));
269 } catch (ReportSQLException ex) {
270 logger.debug(EELFLoggerDelegate.debugLogger, ("sql not complete" + sql));
272 catch (Exception ex) {}
274 //debugLogger.debug("66666666666666666 " + ff.getValidationType());
276 //Added for TimeStamp validation
279 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
280 //Added for TimeStamp validation
281 //debugLogger.debug("666666666666 " + ff.getValidationType());
282 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_HR) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
283 value1 = nvl(rr.getParamValue(ff.getFieldName())) + " "+addZero(Utils.oracleSafe(nvl(rr
284 .getParamValue(ff.getFieldName()+"_Hr"))));
285 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_MIN) || ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
286 value1 = value1 + (nvl(rr
287 .getParamValue(ff.getFieldName()+"_Min")).length() > 0 ? ":" + addZero(Utils.oracleSafe(nvl(rr
288 .getParamValue(ff.getFieldName()+"_Min")))) : "");
290 if(ff.getValidationType().equals(FormField.VT_TIMESTAMP_SEC) ) {
291 value1 = value1 + (nvl(rr
292 .getParamValue(ff.getFieldName()+"_Sec")).length() > 0 ? ":"+ addZero(Utils.oracleSafe(nvl(rr
293 .getParamValue(ff.getFieldName()+"_Sec")))) : "");
295 //debugLogger.debug("77777777777777 " + value1);
297 value1 = nvl(rr.getParamValue(ff.getFieldName()));
298 if(value1.length()<=0) value1 = nvl(ff.getDefaultValue());
299 put(ff.getFieldName(), nvl(value1));
311 logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] ------->Time Taken for Adding/Clearing Param Values for FormField Info Bar " + (System.currentTimeMillis() - currentTime)));
315 public String getParamValue(String key) {
317 return (String) get(key);
322 public String getParamValueForSQL(String key, String value) {
323 value = Utils.oracleSafe(value);
324 if (isParameterMultiValue(key))
325 value = "('" + Utils.replaceInString(value, "|", "','") + "')";
329 public String getParamDisplayValue(String key) {
330 //debugLogger.debug("Key is " + key +" Value is " + getParamValue(key));
331 String value = getParamValue(key);
332 if (isParameterMultiValue(key))
333 value = "(" + Utils.replaceInString(value, "|", ",") + ")";
337 public String getParamBaseSQL(String key) {
338 return (String) multiValueBaseSQL.get(key);
341 /** ************************************************************************************************* */
343 private String nvl(String s) {
344 return (s == null) ? "" : s;
347 private String nvl(String s, String sDefault) {
348 return nvl(s).equals("") ? sDefault : s;
351 private boolean isNull(String a) {
352 if ((a == null) || (a.length() == 0) || a.equalsIgnoreCase("null"))
358 private void clearValues() {
360 String defaultValue = "";
361 String defaultSQL = "";
362 String defaultQuery = "";
363 DataSet dsDefault = null;
365 for (Enumeration enKeys = keys(); enKeys.hasMoreElements();) {
366 String key = (String) enKeys.nextElement();
367 for(rff.resetNext(); rff.hasNext(); ) {
369 if(ff.getFieldName().equals(key)) {
371 defaultValue = ff.getDefaultValue();
372 defaultSQL = ff.getFieldDefaultSQL();
373 if(nvl(defaultValue).length()>0) {
374 put(key,ff.getDefaultValue());
375 } else if(nvl(defaultSQL).length() > 0) {
376 //defaultSQL = Utils.replaceInString(defaultSQL, "[LOGGED_USERID]", userId);
377 if(!(isParameterMultiValue(key) || isParameterTextAreaValue(key))) {
378 defaultQuery = "SELECT id, name FROM (SELECT rownum r, id, name FROM (" + defaultSQL
382 dsDefault = ConnectionUtils.getDataSet(defaultQuery, ff.getDbInfo());
383 if(dsDefault!=null && dsDefault.getRowCount()>0) {
384 for (int i = 0; i < dsDefault.getRowCount(); i++) {
385 put(key, dsDefault.getString(i, 1));
388 } catch (RaptorException ex) {}
400 public void printValues() {
401 for (Enumeration enKeys = keys(); enKeys.hasMoreElements();) {
402 String key = (String) enKeys.nextElement();
403 String value = (String) get(key);
404 logger.debug(EELFLoggerDelegate.debugLogger, ("ReportParamValuesForPDFEXCEL " + key + " "+ value));
407 public String addZero(String num) {
410 numInt = Integer.parseInt(num);
411 }catch(NumberFormatException ex){
414 if(numInt < 10) return "0"+numInt;
415 else return ""+numInt;
418 } // ReportParamValues