diff options
author | 2017-04-27 07:53:18 -0400 | |
---|---|---|
committer | 2017-04-27 08:31:27 -0400 | |
commit | 6beb446925c967aca92f5513adf36c5db77c00d6 (patch) | |
tree | 9392057ed0739de2445c5b2a2a8bee6dcdacbcf7 /ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java | |
parent | 246b225194e3e8dc1926294de591a94fd9787fa7 (diff) |
[PORTAL-7] Rebase
This rebasing includes common libraries and common overlays projects
abstraction of components
Change-Id: Ia1efa4deacdc5701e6205104ac021a6c80ed60ba
Signed-off-by: st782s <statta@research.att.com>
Diffstat (limited to 'ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java')
-rw-r--r-- | ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java | 4064 |
1 files changed, 0 insertions, 4064 deletions
diff --git a/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java b/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java deleted file mode 100644 index c46f48ac..00000000 --- a/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/runtime/ChartD3Helper.java +++ /dev/null @@ -1,4064 +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.BufferedWriter; -import java.io.FileWriter; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.text.ParsePosition; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; - -import org.apache.commons.lang.time.DateUtils; -import org.openecomp.portalsdk.analytics.error.RaptorException; -import org.openecomp.portalsdk.analytics.model.ReportHandler; -import org.openecomp.portalsdk.analytics.model.base.ChartSeqComparator; -import org.openecomp.portalsdk.analytics.system.AppUtils; -import org.openecomp.portalsdk.analytics.system.ConnectionUtils; -import org.openecomp.portalsdk.analytics.util.AppConstants; -import org.openecomp.portalsdk.analytics.util.DataSet; -import org.openecomp.portalsdk.analytics.util.HtmlStripper; -import org.openecomp.portalsdk.analytics.util.Utils; -import org.openecomp.portalsdk.analytics.view.ReportData; -import org.openecomp.portalsdk.analytics.xmlobj.DataColumnType; -import org.openecomp.portalsdk.analytics.xmlobj.FormFieldType; -import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.openecomp.portalsdk.core.web.support.UserUtils; - -public class ChartD3Helper { - - EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ChartD3Helper.class); - - - private ReportRuntime reportRuntime; - private String chartType; - - public static final long HOUR = 3600*1000; - public static final long DAY = 3600*1000*24; - public static final long MONTH = 3600*1000*24*31; - public static final long YEAR = 3600*1000*24*365; - - - public ChartD3Helper() { - - } - - /** - * @return the chartType - */ - public String getChartType() { - return chartType; - } - - /** - * @param chartType the chartType to set - */ - public void setChartType(String chartType) { - this.chartType = chartType; - } - - public ChartD3Helper(ReportRuntime rr) { - this.reportRuntime = rr; - } - - public String createVisualization(String reportID, HttpServletRequest request) throws RaptorException { - //From annotations chart - clearReportRuntimeBackup(request); - - //HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest(); - final Long user_id = new Long((long) UserUtils.getUserId(request)); - //String action = request.getParameter(AppConstants.RI_ACTION); - //String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID); - - ReportHandler rh = new ReportHandler(); - ReportData reportData = null; - HashMap<String, String> chartOptionsMap = new HashMap<String, String>(); - try { - if(reportID !=null) { - reportRuntime = rh.loadReportRuntime(request, reportID, true, 1); - setChartType(reportRuntime.getChartType()); - reportData = reportRuntime.loadReportData(0, user_id.toString(), 10000,request, false); - } - - - - String rotateLabelsStr = ""; - rotateLabelsStr = AppUtils.nvl(reportRuntime.getLegendLabelAngle()); - if(rotateLabelsStr.toLowerCase().equals("standard")) { - rotateLabelsStr = "0"; - } else if (rotateLabelsStr.toLowerCase().equals("up45")) { - rotateLabelsStr = "45"; - } else if (rotateLabelsStr.toLowerCase().equals("down45")) { - rotateLabelsStr = "-45"; - } else if (rotateLabelsStr.toLowerCase().equals("up90")) { - rotateLabelsStr = "90"; - } else if (rotateLabelsStr.toLowerCase().equals("down90")) { - rotateLabelsStr = "-90"; - } else - rotateLabelsStr = "0"; - - String width = (AppUtils.getRequestNvlValue(request, "width").length()>0?AppUtils.getRequestNvlValue(request, "width"):(AppUtils.nvl(reportRuntime.getChartWidth()).length()>0?reportRuntime.getChartWidth():"700")); - String height = (AppUtils.getRequestNvlValue(request, "height").length()>0?AppUtils.getRequestNvlValue(request, "height"):(AppUtils.nvl(reportRuntime.getChartHeight()).length()>0?reportRuntime.getChartHeight():"300")); - String animationStr = (AppUtils.getRequestNvlValue(request, "animation").length()>0?AppUtils.getRequestNvlValue(request, "animation"):new Boolean(reportRuntime.isAnimateAnimatedChart()).toString()); - - String rotateLabels = (AppUtils.getRequestNvlValue(request, "rotateLabels").length()>0?AppUtils.getRequestNvlValue(request, "rotateLabels"):(rotateLabelsStr.length()>0?rotateLabelsStr:"0")); - String staggerLabelsStr = (AppUtils.getRequestNvlValue(request, "staggerLabels").length()>0?AppUtils.getRequestNvlValue(request, "staggerLabels"):"false"); - String showMaxMinStr = (AppUtils.getRequestNvlValue(request, "showMaxMin").length()>0?AppUtils.getRequestNvlValue(request, "showMaxMin"):"false"); - String showControlsStr = (AppUtils.getRequestNvlValue(request, "showControls").length()>0?AppUtils.getRequestNvlValue(request, "showControls"):new Boolean(reportRuntime.displayBarControls()).toString()); - String showLegendStr = (AppUtils.getRequestNvlValue(request, "showLegend").length()>0?AppUtils.getRequestNvlValue(request, "showLegend"):new Boolean(!new Boolean(reportRuntime.hideChartLegend())).toString()); - String topMarginStr = AppUtils.getRequestNvlValue(request, "topMargin"); - String topMargin = (AppUtils.nvl(topMarginStr).length()<=0)?(reportRuntime.getTopMargin()!=null?reportRuntime.getTopMargin().toString():"30"):topMarginStr; - String bottomMarginStr = AppUtils.getRequestNvlValue(request, "bottomMargin"); - String bottomMargin = (AppUtils.nvl(bottomMarginStr).length()<=0)?(reportRuntime.getBottomMargin()!=null?reportRuntime.getBottomMargin().toString():"50"):bottomMarginStr; - String leftMarginStr = AppUtils.getRequestNvlValue(request, "leftMargin"); - String leftMargin = (AppUtils.nvl(leftMarginStr).length()<=0)?(reportRuntime.getLeftMargin()!=null?reportRuntime.getLeftMargin().toString():"100"):leftMarginStr; - String rightMarginStr = AppUtils.getRequestNvlValue(request, "rightMargin"); - String rightMargin = (AppUtils.nvl(rightMarginStr).length()<=0)?(reportRuntime.getRightMargin()!=null?reportRuntime.getRightMargin().toString():"160"):rightMarginStr; - String showTitleStr = (AppUtils.getRequestNvlValue(request, "showTitle").length()>0?AppUtils.getRequestNvlValue(request, "showTitle"):new Boolean(reportRuntime.displayChartTitle()).toString()); - String subType = AppUtils.getRequestNvlValue(request, "subType").length()>0?AppUtils.getRequestNvlValue(request, "subType"):(AppUtils.nvl(reportRuntime.getTimeSeriesRender()).equals("area")?reportRuntime.getTimeSeriesRender():""); - String stackedStr = AppUtils.getRequestNvlValue(request, "stacked").length()>0?AppUtils.getRequestNvlValue(request, "stacked"):new Boolean(reportRuntime.isChartStacked()).toString(); - String horizontalBar = AppUtils.getRequestNvlValue(request, "horizontalBar").length()>0?AppUtils.getRequestNvlValue(request, "horizontalBar"):new Boolean(reportRuntime.isHorizontalOrientation()).toString(); - String barRealTimeAxis = AppUtils.getRequestNvlValue(request, "barRealTimeAxis"); - String barReduceXAxisLabels = AppUtils.getRequestNvlValue(request, "barReduceXAxisLabels").length()>0?AppUtils.getRequestNvlValue(request, "barReduceXAxisLabels"):new Boolean(reportRuntime.isLessXaxisTickers()).toString();; - String timeAxis = AppUtils.getRequestNvlValue(request, "timeAxis").length()>0?AppUtils.getRequestNvlValue(request, "timeAxis"):new Boolean(reportRuntime.isTimeAxis()).toString(); - String logScale = AppUtils.getRequestNvlValue(request, "logScale").length()>0?AppUtils.getRequestNvlValue(request, "logScale"):new Boolean(reportRuntime.isLogScale()).toString(); - String precision = AppUtils.getRequestNvlValue(request, "precision").length()>0?AppUtils.getRequestNvlValue(request, "precision"):"2"; - - - chartOptionsMap.put("width", width); - chartOptionsMap.put("height", height); - chartOptionsMap.put("animation", animationStr); - chartOptionsMap.put("rotateLabels", rotateLabels); - chartOptionsMap.put("staggerLabels", staggerLabelsStr); - chartOptionsMap.put("showMaxMin", showMaxMinStr); - chartOptionsMap.put("showControls", showControlsStr); - chartOptionsMap.put("showLegend", showLegendStr); - chartOptionsMap.put("topMargin", topMargin); - chartOptionsMap.put("bottomMargin", bottomMargin); - chartOptionsMap.put("leftMargin", leftMargin); - chartOptionsMap.put("rightMargin", rightMargin); - chartOptionsMap.put("showTitle", showTitleStr); - chartOptionsMap.put("subType", subType); - chartOptionsMap.put("stacked", stackedStr); - chartOptionsMap.put("horizontalBar", horizontalBar); - chartOptionsMap.put("timeAxis", timeAxis); - chartOptionsMap.put("barRealTimeAxis", barRealTimeAxis); - chartOptionsMap.put("barReduceXAxisLabels", barReduceXAxisLabels); - - chartOptionsMap.put("logScale", logScale); - chartOptionsMap.put("precision", precision); - - - } catch (RaptorException ex) { - ex.printStackTrace(); - } - return createVisualization(reportRuntime, chartOptionsMap, request); - } - - public String createVisualization(ReportRuntime reportRuntime, HttpServletRequest request) throws RaptorException { - - String rotateLabelsStr = ""; - rotateLabelsStr = AppUtils.nvl(reportRuntime.getLegendLabelAngle()); - if(rotateLabelsStr.toLowerCase().equals("standard")) { - rotateLabelsStr = "0"; - } else if (rotateLabelsStr.toLowerCase().equals("up45")) { - rotateLabelsStr = "45"; - } else if (rotateLabelsStr.toLowerCase().equals("down45")) { - rotateLabelsStr = "-45"; - } else if (rotateLabelsStr.toLowerCase().equals("up90")) { - rotateLabelsStr = "90"; - } else if (rotateLabelsStr.toLowerCase().equals("down90")) { - rotateLabelsStr = "-90"; - } else - rotateLabelsStr = "0"; - - HashMap<String,String> chartOptionsMap = new HashMap<String, String>(); - chartOptionsMap.put("width", reportRuntime.getChartWidth()); - chartOptionsMap.put("height", reportRuntime.getChartHeight()); - chartOptionsMap.put("animation", new Boolean(reportRuntime.isAnimateAnimatedChart()).toString()); - chartOptionsMap.put("rotateLabels", rotateLabelsStr); - chartOptionsMap.put("staggerLabels", "false"); - chartOptionsMap.put("showMaxMin", "false"); - chartOptionsMap.put("showControls", new Boolean(reportRuntime.displayBarControls()).toString()); - chartOptionsMap.put("showLegend", new Boolean(!reportRuntime.hideChartLegend()).toString()); - chartOptionsMap.put("topMargin", reportRuntime.getTopMargin()!=null?reportRuntime.getTopMargin().toString():"30"); - chartOptionsMap.put("bottomMargin", reportRuntime.getBottomMargin()!=null?reportRuntime.getBottomMargin().toString():"50"); - chartOptionsMap.put("leftMargin", reportRuntime.getLeftMargin()!=null?reportRuntime.getLeftMargin().toString():"100"); - chartOptionsMap.put("rightMargin", reportRuntime.getRightMargin()!=null?reportRuntime.getRightMargin().toString():"160"); - chartOptionsMap.put("showTitle", new Boolean(reportRuntime.displayChartTitle()).toString()); - chartOptionsMap.put("subType", (AppUtils.nvl(reportRuntime.getTimeSeriesRender()).equals("area")?reportRuntime.getTimeSeriesRender():"")); - chartOptionsMap.put("stacked", new Boolean(reportRuntime.isChartStacked()).toString()); - chartOptionsMap.put("horizontalBar", new Boolean(reportRuntime.isHorizontalOrientation()).toString()); - chartOptionsMap.put("timeAxis", new Boolean(reportRuntime.isTimeAxis()).toString()); - chartOptionsMap.put("barReduceXAxisLabels", new Boolean(reportRuntime.isLessXaxisTickers()).toString()); - - chartOptionsMap.put("logScale", new Boolean(reportRuntime.isLogScale()).toString()); - chartOptionsMap.put("precision", "2"); - - - - return createVisualization(reportRuntime, chartOptionsMap, request); - } - - public String createVisualization(ReportRuntime reportRuntime, HashMap<String,String> chartOptionsMap, HttpServletRequest request) throws RaptorException { - - //String width, String height, boolean animation, String rotateLabels, boolean staggerLabels, boolean showMaxMin, boolean showLegend, boolean showControls, String topMargin, String bottomMargin, boolean showTitle, String subType - - String width = chartOptionsMap.get("width"); - String height = chartOptionsMap.get("height"); - boolean animation = getBooleanValue(chartOptionsMap.get("animation"), true); - String rotateLabels = chartOptionsMap.get("rotateLabels"); - boolean staggerLabels = getBooleanValue(chartOptionsMap.get("staggerLabels")); - boolean showMaxMin = getBooleanValue(chartOptionsMap.get("showMaxMin"), false); - boolean showLegend = getBooleanValue(chartOptionsMap.get("showLegend"), true); - boolean showControls = getBooleanValue(chartOptionsMap.get("showControls"), true); - String topMargin = chartOptionsMap.get("topMargin"); - String bottomMargin = chartOptionsMap.get("bottomMargin"); - String leftMargin = chartOptionsMap.get("leftMargin"); - String rightMargin = chartOptionsMap.get("rightMargin"); - boolean showTitle = getBooleanValue(chartOptionsMap.get("showTitle"), true); - String subType = chartOptionsMap.get("subType"); - boolean stacked = getBooleanValue(chartOptionsMap.get("stacked"), false); - boolean horizontalBar = getBooleanValue(chartOptionsMap.get("horizontalBar"), false); - boolean barRealTimeAxis = getBooleanValue(chartOptionsMap.get("barRealTimeAxis"), true); - boolean barReduceXAxisLabels= getBooleanValue(chartOptionsMap.get("barReduceXAxisLabels"), false); - boolean timeAxis = getBooleanValue(chartOptionsMap.get("timeAxis"), true); - - - boolean logScale = getBooleanValue(chartOptionsMap.get("logScale"), false); - - int precision = 2; - - try { - precision = Integer.parseInt(chartOptionsMap.get("precision")); - } catch (NumberFormatException ex) { - - } - - final Long user_id = new Long((long) UserUtils.getUserId(request)); - - HttpSession session = null; - session = request.getSession(); - - String chartType = reportRuntime.getChartType(); - List l = reportRuntime.getAllColumns(); - List lGroups = reportRuntime.getAllChartGroups(); - HashMap mapYAxis = reportRuntime.getAllChartYAxis(reportRuntime.getReportParamValues()); - //ReportParamValues reportParamValues = reportRuntime.getReportParamValues(); - String chartLeftAxisLabel = reportRuntime.getFormFieldFilled(nvl(reportRuntime.getChartLeftAxisLabel())); - String chartRightAxisLabel = reportRuntime.getFormFieldFilled(nvl(reportRuntime.getChartRightAxisLabel())); - - boolean multipleSeries = reportRuntime.isMultiSeries(); - - java.util.HashMap formValues = null; - formValues = getRequestParametersMap(reportRuntime, request); - - - String legendColumnName = (reportRuntime.getChartLegendColumn()!=null)?reportRuntime.getChartLegendColumn().getDisplayName():"Legend Column"; - boolean displayChart = (nvl(chartType).length()>0)&&reportRuntime.getDisplayChart(); - HashMap additionalChartOptionsMap = new HashMap(); - - StringBuffer wholeScript = new StringBuffer(""); - - String title = reportRuntime.getReportTitle(); - - title = parseTitle(title, formValues); - - if(displayChart) { - DataSet ds = null; - try { - if (!(chartType.equals(AppConstants.GT_HIERARCHICAL) || chartType.equals(AppConstants.GT_HIERARCHICAL_SUNBURST) || chartType.equals(AppConstants.GT_ANNOTATION_CHART))) { - ds = (DataSet) loadChartData(new Long(user_id).toString(), request); - } else if(chartType.equals(AppConstants.GT_ANNOTATION_CHART)) { - String reportSQL = reportRuntime.getWholeSQL(); - String dbInfo = reportRuntime.getDBInfo(); - ds = ConnectionUtils.getDataSet(reportSQL, dbInfo); - if(ds.getRowCount()<=0) { - logger.debug(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - logger.debug(EELFLoggerDelegate.debugLogger, (chartType.toUpperCase()+" - " + "Report ID : " + reportRuntime.getReportID() + " DATA IS EMPTY")); - logger.debug(EELFLoggerDelegate.debugLogger, ("QUERY - " + reportSQL)); - logger.debug(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - } - } else if(chartType.equals(AppConstants.GT_HIERARCHICAL)||chartType.equals(AppConstants.GT_HIERARCHICAL_SUNBURST)) { - String reportSQL = reportRuntime.getWholeSQL(); - String dbInfo = reportRuntime.getDBInfo(); - ds = ConnectionUtils.getDataSet(reportSQL, dbInfo); - } - } catch (RaptorException ex) { - //throw new RaptorException("Error while loading chart data", ex); - logger.error(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - logger.error(EELFLoggerDelegate.debugLogger, (chartType.toUpperCase()+" - " + "Report ID : " + reportRuntime.getReportID() + " ERROR THROWN FOR GIVEN QUERY ")); - logger.error(EELFLoggerDelegate.debugLogger, ("QUERY - " + reportRuntime.getWholeSQL())); - logger.error(EELFLoggerDelegate.debugLogger, ("ERROR STACK TRACE" + ex.getMessage())); - logger.error(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - - } - if(ds==null) { - //displayChart = false; - if(chartType.equals(AppConstants.GT_ANNOTATION_CHART)) - ds = new DataSet(); - else - displayChart = false; - } - if(displayChart) { - - if (chartType.equals(AppConstants.GT_BAR_3D)) { - - // get category if not give the column name for the data column use this to develop series. - boolean hasCategoryAxis = reportRuntime.hasSeriesColumn(); - - boolean hasCustomizedChartColor = false; - int flag = 0; - flag = hasCategoryAxis?1:0; - Object uniqueElements [] = null; - ArrayList uniqueElementsList = new ArrayList(); - Object uniqueXAxisElements[] = null; - ArrayList ts = new ArrayList(); - //Set<String> ts1 = new HashSet(); - ArrayList<String> ts1 = new ArrayList(); - HashMap<String, String> columnMap = new HashMap(); - String uniqueXAxisStr = ""; - if(!timeAxis){ - for (int i = 0; i < ds.getRowCount(); i++) { - uniqueXAxisStr = ds.getString(i, 0); - ts1.add(uniqueXAxisStr); - } - } - uniqueElementsList.addAll(ts1); - uniqueXAxisElements = ts1.toArray(); - - if(flag == 1) { - StringBuffer catStr = new StringBuffer(""); - String color=""; - for (int i = 0; i < ds.getRowCount(); i++) { - catStr = new StringBuffer(""); - catStr.append(ds.getString(i, 2)); - try { - if(ds.getString(i, "chart_color")!=null) { - color = ds.getString(i, "chart_color"); - hasCustomizedChartColor = true; - catStr.append("|"+color); - } - } catch (ArrayIndexOutOfBoundsException ex) { - //System.out.println("No Chart Color"); - } - - if(catStr.length()>0) { - //duplicates are avoided - if(!ts.contains(catStr.toString())) - ts.add(catStr.toString()); - - } - /* Get Chart LeftAxis Label even from Range Axis definition. */ - DataColumnType dct = null; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(nvl(chartLeftAxisLabel).length()<=0) { - chartLeftAxisLabel = nvl(dct.getYAxis()); - chartLeftAxisLabel = (chartLeftAxisLabel.indexOf("|")!=-1)?chartLeftAxisLabel.substring(0,chartLeftAxisLabel.indexOf("|")):""; - } - } - } - - } - //Object uniqueElements [] = ts.toArray(); - //SortedSet s = Collections.synchronizedSortedSet(ts); - uniqueElements = ts.toArray(); - } else { - DataColumnType dct = null; - List yTextSeries = reportRuntime.getChartDisplayNamesList(AppConstants.CHART_ALL_COLUMNS, formValues); - //if(columnValuesList.size() == 1) { - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if((dct.isChartSeries()!=null && dct.isChartSeries().booleanValue()) || (dct.getChartSeq()!=null && dct.getChartSeq()>0) ) { - - if(nvl(dct.getChartColor()).length()>0) hasCustomizedChartColor = true; - if(hasCustomizedChartColor) { - //duplicates are avoided - if(!ts.contains(dct.getDisplayName()+"|"+nvl(dct.getChartColor()))) - ts.add(dct.getDisplayName()+"|"+nvl(dct.getChartColor())); - } else { - //duplicates are avoided - if(!ts.contains(dct.getDisplayName())) - ts.add(dct.getDisplayName()); - } - if(nvl(chartLeftAxisLabel).length()<=0) { - chartLeftAxisLabel = nvl(dct.getYAxis()); - chartLeftAxisLabel = (chartLeftAxisLabel.indexOf("|")!=-1)?chartLeftAxisLabel.substring(0,chartLeftAxisLabel.indexOf("|")):""; - } - columnMap.put(dct.getDisplayName(), dct.getColId()); - /* - ts.add(dct.getDisplayName()); - if(nvl(chartLeftAxisLabel).length()<=0) { - chartLeftAxisLabel = nvl(dct.getYAxis()); - chartLeftAxisLabel = (chartLeftAxisLabel.indexOf("|")!=-1)?chartLeftAxisLabel.substring(0,chartLeftAxisLabel.indexOf("|")):""; - } - columnMap.put(dct.getDisplayName(), dct.getColId()); - */ - } - } - - } - //SortedSet s = Collections.synchronizedSortedSet(ts); - uniqueElements = ts.toArray(); - - } - - wholeScript.append("<!DOCTYPE html>\n"); - wholeScript.append("<html>\n"); - wholeScript.append("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF8\">\n"); - wholeScript.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n"); - wholeScript.append("<link href=\""+ AppUtils.getBaseFolderURL() +"d3/css/nv.d3.css\" rel=\"stylesheet\" type=\"text/css\">\n"); - //wholeScript.append("") - wholeScript.append("<style>\n " + - " body { \n" + - " overflow-y:scroll; \n" + - " } \n" + - " text { \n" + - " font: 12px sans-serif; \n" + - " } \n" + - " svg { \n" + - " display: block;\n" + - " } \n" + - " #chart"+reportRuntime.getReportID()+" svg { \n" + - " height: "+ (nvl(height).length()>0?(height.endsWith("px")?height:height+"px"):"420px") + "; \n" + - " width: "+ (nvl(width).length()>0?(width.endsWith("px")?width:width+"px"):"700px") + "; \n" + - " min-width: 100px; \n" + - " min-height: 100px; \n" + - " } \n" + - " tr.z-row-over > td.z-row-inner, tr.z-row-over > .z-cell {" + - " background-color: rgb(255, 255, 255); "+ - "} \n"); - - wholeScript.append(".nodatadiv {\n"); - wholeScript.append(" display: table-cell;\n"); - wholeScript.append(" width: 700px;\n"); - wholeScript.append(" height:370px;\n"); - wholeScript.append(" text-align:center;\n"); - wholeScript.append(" vertical-align: middle;\n"); - wholeScript.append("}\n"); - wholeScript.append(".nodatainner {\n"); - wholeScript.append(" padding: 10px;\n"); - wholeScript.append("}\n"); - - wholeScript.append(" </style> \n" ); - wholeScript.append("<body> \n"); - if(showTitle) - wholeScript.append("<div align=\"center\"><H3>" + title +"</H3></div>"); - - wholeScript.append("<div id=\"chart"+reportRuntime.getReportID()+"\"> <svg></svg> </div> \n"); - //js files - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/d3.v3.min.js\"></script>"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/nv.d3.min.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/tooltip.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/utils.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/axis.min.js\"></script> \n"); - //wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/discreteBar.js\"></script> \n"); - //wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/discreteBarChart.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/multiChart.js\"></script> \n"); - //json - wholeScript.append("<script> \n"); - wholeScript.append("historicalBarChart = [ \n"); - //wholeScript.append("{ \n"); - // data - ArrayList dataSeries = new ArrayList(); - - String uniqueElement = ""; - for (int i = 0; i < uniqueElements.length; i++) { - uniqueElement = (String)uniqueElements[i]; - if(multipleSeries && (nvl(chartRightAxisLabel).length() > 0)) - dataSeries.add(new StringBuffer(" { \"type\":\"bar\", \"key\": \""+ (hasCustomizedChartColor?(uniqueElement.indexOf("|")!=-1?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement):uniqueElement) +"\", \"yAxis\": \""+(i+1)+"\", "+ (hasCustomizedChartColor?("\"color\": \""+uniqueElement.substring(uniqueElement.indexOf("|")+1) + "\","):"")+"\"values\": [")); - else - dataSeries.add(new StringBuffer(" { \"type\":\"bar\", \"key\": \""+ (hasCustomizedChartColor?(uniqueElement.indexOf("|")!=-1?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement):uniqueElement) +"\", \"yAxis\": \""+(1)+"\", "+ (hasCustomizedChartColor?("\"color\": \""+uniqueElement.substring(uniqueElement.indexOf("|")+1) + "\","):"")+"\"values\": [")); - } - - // added to load all date elements - HashMap<String, HashMap<String, String>> dataSeriesMap = new HashMap<String, HashMap<String, String>>(); - - for (int i = 0; i < uniqueElements.length; i++) { - if(multipleSeries && (nvl(chartRightAxisLabel).length() > 0)) - dataSeriesMap.put((String) uniqueElements[i], new HashMap<String, String>()); - //dataSeries.add(new StringBuffer(" { \"type\":\"bar\", \"key\": \""+ uniqueElements[i] +"\", \"yAxis\": \""+(i+1)+"\", \"values\": [")); - else - dataSeriesMap.put((String) uniqueElements[i], new HashMap<String, String>()); - - //dataSeries.add(new StringBuffer(" { \"type\":\"bar\", \"key\": \""+ uniqueElements[i] +"\", \"yAxis\": \""+(1)+"\", \"values\": [")); - } - - String dateStr = null; - java.util.Date date = null; - - final int YEARFLAG = 1; - final int MONTHFLAG = 2; - final int DAYFLAG = 3; - final int HOURFLAG = 4; - final int MINFLAG = 5; - final int SECFLAG = 6; - final int MILLISECFLAG = 7; - final int DAYOFTHEWEEKFLAG = 8; - final int FLAGDATE = 9; - - int flagNoDate = 0; - - int MAXNUM = 0; - int YAXISNUM = 0; - int flagNull = 0; - - double YAXISDOUBLENUM = 0.0; - double MAXDOUBLENUM = 0.0; - int MAXNUMDECIMALPLACES = 0; - - int formatFlag = 0; - - TreeSet<String> dateStrList = new TreeSet<String>(); - // added to store all date elements - SortedSet<String> sortSet = new TreeSet<String>(); - int count = 0; - if(flag!= 1) { - HashMap dataSeriesStrMap = new HashMap(); - HashMap dataSeriesOverAllMap = new HashMap(); - String valueDataSeries = ""; - - for (int j = 0; j < uniqueElements.length; j++) { - dataSeriesStrMap = new HashMap(); - for (int i = 0; i < ds.getRowCount(); i++) { - flagNoDate = 0; - YAXISNUM = 0; - YAXISDOUBLENUM = 0.0; - flagNull= 0; - dateStr = ds.getString(i, 1); - if(timeAxis) { - date = getDateFromDateStr(dateStr); - formatFlag = getFlagFromDateStr(dateStr); - } - uniqueElement = (String)uniqueElements[j]; - if(date==null) { - //continue; - flagNoDate = 1; - int pos = 0; - //if(!((String)uniqueElementsList.get(i)).equals(dateStr)) { - for (int f=0 ; f< uniqueXAxisElements.length; f++) { - if(uniqueXAxisElements[f].equals(dateStr)){ - pos = f ; - break; - } - } - /*for(int f=0; f<uniqueElementsList.size() && f < pos; f++) - { - StringBuffer strBuf = ((StringBuffer)dataSeries.get(j)); - if(strBuf.indexOf((String)uniqueElementsList.get(f)) < 0 ) { - dataSeriesStrMap.put((String)uniqueElementsList.get(f), value); - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + (String)uniqueElementsList.get(f) + "\" , \"y\": null },"); - } - }*/ - //} - - dateStrList.add("'"+dateStr+"'"); - //uniqueElement = (String)uniqueElements[j]; - try { - YAXISNUM = Integer.parseInt(ds.getString(i, columnMap.get((hasCustomizedChartColor?(uniqueElement.indexOf("|")!=-1?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement):uniqueElement)))); - //if(MAXNUM < YAXISNUM) MAXNUM = YAXISNUM; - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, columnMap.get((hasCustomizedChartColor?(uniqueElement.indexOf("|")!=-1?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement):uniqueElement)))); - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } catch (NumberFormatException ex1) { - flagNull = 1; - } - //flagNull = 1; - } - /* For Non-date type value enclose with double quotes */ - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - if(logScale) { - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():(YAXISNUM>0?new Double(Math.log10(new Integer(YAXISNUM).doubleValue())).toString():null)):null) +"}, "); - valueDataSeries = "{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - } else { - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - valueDataSeries = "{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - - } - - dataSeriesOverAllMap.put(uniqueElements[j], dataSeriesStrMap); - - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":\"" + ds.getString(i, columnMap.get((String)uniqueElements[j])) +"\"}, "); - } else { - - if(!barRealTimeAxis) { // true - non-time - if(!dateStrList.contains(new Long(date.getTime()).toString())) { - dateStrList.add(new Long(date.getTime()).toString()); - for (int k = 0; k < uniqueElements.length; k++) { - //((StringBuffer) dataSeries.get(k)).append ("{ \"x\":" + date.getTime() + " , \"y\":null}, "); - HashMap<String, String> dataMap = dataSeriesMap.get((String) uniqueElements[k]); - dataMap.put(date.getTime()+"", "null"); - - } - } - } - //if(ds.getString(i, 2).equals(uniqueElements[j])) { - /*if(!dateStrList.contains(new Long(date.getTime()).toString())) { - for (int k = 0; k < uniqueElements.length; k++) { - ((StringBuffer) dataSeries.get(k)).append ("{ \"x\":" + date.getTime() + " , \"y\":null}, "); - } - }*/ - //dateStrList.add(new Long(date.getTime()).toString()); - try { - YAXISNUM = Integer.parseInt(ds.getString(i, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - dateStrList.add(new Long(date.getTime()).toString()); - //if(MAXNUM < YAXISNUM) MAXNUM = YAXISNUM; - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } catch (NumberFormatException ex1) { - flagNull = 1; - } - - //flagNull = 1; - } - HashMap<String, String> dataMap = dataSeriesMap.get((String) uniqueElements[j]); - if(logScale) { - dataMap.put(date.getTime()+"", (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():(YAXISNUM>0?new Double(Math.log10(new Integer(YAXISNUM).doubleValue())).toString():null)): "null")); - } else { - dataMap.put(date.getTime()+"", (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(YAXISDOUBLENUM).toString():new Integer(YAXISNUM).toString()): "null")); - } - - - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + ds.getString(i, columnMap.get((String)uniqueElements[j])) +"}, "); - } - //} - } - } - for(int kI = 0; kI < uniqueElements.length; kI++) { - HashMap dataSeriesStrMap1 = (HashMap) dataSeriesOverAllMap.get(uniqueElements[kI]); - for (int kL = 0; kL < uniqueXAxisElements.length; kL++) { - if(dataSeriesStrMap1.containsKey(uniqueXAxisElements[kL])) { - ((StringBuffer) dataSeries.get(kI)).append ((String)dataSeriesStrMap1.get(uniqueXAxisElements[kL])); - } else { - ((StringBuffer) dataSeries.get(kI)).append ("{ \"x\":\"" + uniqueXAxisElements[kL] + "\" , \"y\": null }, "); - } - } - } - - } else { - HashMap dataSeriesStrMap = new HashMap(); - HashMap dataSeriesOverAllMap = new HashMap(); - String valueDataSeries = ""; - for (int j = 0; j < uniqueElements.length; j++) { - dataSeriesStrMap = new HashMap(); - - for (int i = 0; i < ds.getRowCount(); i++) { - flagNoDate = 0; - YAXISNUM = 0; - YAXISDOUBLENUM = 0.0; - flagNull= 0; - //flagSecondNull = 0; - dateStr = ds.getString(i, 1); - if(timeAxis) { - date = getDateFromDateStr(dateStr); - formatFlag = getFlagFromDateStr(dateStr); - } - uniqueElement = (String)uniqueElements[j]; - if(date==null) { - //continue; - flagNoDate = 1; - int pos = 0; - //if(!((String)uniqueElementsList.get(i)).equals(dateStr)) { - for (int f=0 ; f< uniqueXAxisElements.length; f++) { - if(uniqueXAxisElements[f].equals(dateStr)){ - pos = f ; - break; - } - } - /*for(int f=0; f<uniqueElementsList.size() && f < pos; f++) - { - StringBuffer strBuf = ((StringBuffer)dataSeries.get(j)); - if(strBuf.indexOf((String)uniqueElementsList.get(f)) < 0 ) { - dataSeriesStrMap.put((String)uniqueElementsList.get(f), value); - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + (String)uniqueElementsList.get(f) + "\" , \"y\": null },"); - } - }*/ - //} - - if(ds.getString(i, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement))) { - dateStrList.add("'"+dateStr+"'"); - try { - YAXISNUM = Integer.parseInt(ds.getString(i, 3)); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, 3)); - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } catch (NumberFormatException ex1) { - flagNull = 1; - } - - //flagNull = 1; - } - - if(logScale) { - if(timeAxis) { - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + dateStr + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): null) +"}, "); - valueDataSeries = "{ \"x\":" + dateStr + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - } else { - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): null) +"}, "); - valueDataSeries = "{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - } - } else { - if(timeAxis) { - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + dateStr + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "); - valueDataSeries = "{ \"x\":" + dateStr + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - - } else { - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "); - valueDataSeries = "{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "; - dataSeriesStrMap.put(dateStr, valueDataSeries); - - } - } - - /*if(ds.getString(i, 2).equals(uniqueElements[j])) { - dateStrList.add("'"+dateStr+"'"); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":\"" + ds.getString(i, 3) +"\"}, "); - */ - } - dataSeriesOverAllMap.put(uniqueElements[j], dataSeriesStrMap); - } else { - //date = MMDDYYYYFormat.parse(ds.getString(i, 1), new ParsePosition(0)); - if(!barRealTimeAxis) { // true - non-time - if(!dateStrList.contains(new Long(date.getTime()).toString())) { - dateStrList.add(new Long(date.getTime()).toString()); - for (int k = 0; k < uniqueElements.length; k++) { - //((StringBuffer) dataSeries.get(k)).append ("{ \"x\":" + date.getTime() + " , \"y\":null}, "); - HashMap<String, String> dataMap = dataSeriesMap.get((String) uniqueElements[k]); - dataMap.put(date.getTime()+"", "null"); - - } - } - } - if(ds.getString(i, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement))) { - dateStrList.add(new Long(date.getTime()).toString()); - try { - YAXISNUM = Integer.parseInt(ds.getString(i, 3)); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, 3)); - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } catch (NumberFormatException ex1) { - flagNull = 1; - } - - //flagNull = 1; - } - - //if(ds.getString(i, 2).equals(uniqueElements[j])) { - // dateStrList.add("'"+dateStr+"'"); - HashMap<String, String> dataMap = dataSeriesMap.get((String) uniqueElements[j]); - if(logScale) { - dataMap.put(date.getTime()+"", (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(Math.log10(YAXISDOUBLENUM)).toString():new Double(Math.log10(new Double(YAXISNUM>0?YAXISNUM:1).doubleValue())).toString()): "null")); - } else { - if(dataMap.containsKey(new String(""+date.getTime())) && dataMap.get(new String(""+date.getTime())).equals("null")) { - dataMap.remove(date.getTime()); - } - dataMap.put(date.getTime()+"", (flagNull == 0 ? (YAXISDOUBLENUM>0?new Double(YAXISDOUBLENUM).toString():new Integer(YAXISNUM).toString()): "null")); - //System.out - // .println(dataMap + " " + dataSeriesMap); - //} - } - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "); - - - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + ds.getString(i, 3) +"}, "); - } else if (AppUtils.nvl(ds.getString(i, 2)).length()<=0) { - dateStrList.add(new Long(date.getTime()).toString()); - HashMap<String, String> dataMap1 = null; - String uniqueElement1 = ""; - for (int j1 = 0; j1 < uniqueElements.length; j1++) { - uniqueElement1 = (String)uniqueElements[j]; - if(ds.getString(i, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement1.lastIndexOf("|") != -1) ?uniqueElement1.substring(0, uniqueElement1.lastIndexOf("|")):uniqueElement1))) { - dataMap1 = dataSeriesMap.get((String) uniqueElements[j1]); - if(!dataMap1.containsKey(new String(""+date.getTime()))) - dataMap1.put(date.getTime()+"", "null"); - } - } - } - } - // dataSeriesOverAllMap.put(uniqueElements[j], dataSeriesMap); - } - - } - for(int kI = 0; kI < uniqueElements.length; kI++) { - HashMap dataSeriesStrMap1 = (HashMap) dataSeriesOverAllMap.get(uniqueElements[kI]); - for (int kL = 0; kL < uniqueXAxisElements.length; kL++) { - if(dataSeriesStrMap1.containsKey(uniqueXAxisElements[kL])) { - ((StringBuffer) dataSeries.get(kI)).append ((String)dataSeriesStrMap1.get(uniqueXAxisElements[kL])); - } else { - ((StringBuffer) dataSeries.get(kI)).append ("{ \"x\":\"" + uniqueXAxisElements[kL] + "\" , \"y\": null }, "); - } - } - } - } - - StringBuffer dateStrBuf = new StringBuffer(""); - /*if(count == 1) { - Long initialDate = Long.parseLong((String)ds.getString(0, 0)); - Long endDate = Long.parseLong((String) ds.getString(ds.getRowCount(), 0)); - java.util.Date date1 = null; - - while ( initialDate <= endDate) { - //System.out.println("********** " + df.format(initialDate)); - date1 = new java.util.Date(initialDate.longValue() * 1000); - initialDate = initialDate + HOUR; - - dateStrBuf.append(initialDate+","); - sortSet.add(""+initialDate); - //DateUtils.addHours(date1, 1); - } - }*/ - - if(dateStrList.size()>0) { - SortedSet<String> s = Collections.synchronizedSortedSet(dateStrList); - Object[] dateElements = (Object[]) s.toArray(); - - String element = ""; - /* if not date value */ - if(!timeAxis) { - for (int i = 0; i < dateElements.length; i++) { - dateStrBuf.append(dateElements[i]+","); - } - } else { - if(!barRealTimeAxis || (flagNoDate == 1)) { // non-time - for (int i = 0; i < dateElements.length; i++) { - dateStrBuf.append(dateElements[i]+","); - } - } else { - Long initialDate = Long.parseLong((String)dateElements[0]); - Long endDate = Long.parseLong((String) dateElements[dateElements.length-1]); - java.util.Date date1 = null; - //first value - date1 = new java.util.Date(initialDate.longValue()); - /* DateFormat formatter = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss Z"); - System.out.println(formatter.format(new java.util.Date(initialDate.longValue()))); - */ //initialDate = initialDate + HOUR; - - dateStrBuf.append(initialDate+","); - sortSet.add(""+initialDate); - - // DateUtils. - - while ( initialDate <= endDate) { - //System.out.println("********** " + df.format(initialDate)); - //date1 = new java.util.Date(initialDate.longValue() * 1000); - date1 = new java.util.Date(initialDate.longValue()); - if(formatFlag==HOURFLAG) - date1 = DateUtils.addHours(date1, 1); - else if (formatFlag == DAYFLAG) - date1 = DateUtils.addDays(date1, 1); - else if (formatFlag == MONTHFLAG) - date1 = DateUtils.addMonths(date1, 1); - else if (formatFlag == YEARFLAG) - date1 = DateUtils.addMonths(date1, 1); - initialDate = date1.getTime(); - - if(initialDate <= endDate) { - dateStrBuf.append(initialDate+","); - sortSet.add(""+initialDate); - } - //DateUtils.addHours(date1, 1); - } - //DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); - //df.setTimeZone(TimeZone.getTimeZone("UTC")); - //java.util.Date date1 = new java.util.Date(initialDate.longValue() * 1000); - //java.util.Date d = df. - //for () - } - } - dateStrBuf.deleteCharAt(dateStrBuf.length()-1); - } - - if(timeAxis) { - //if(!barRealTimeAxis) { // false - non-time - Object[] dateAllElements = (Object[]) sortSet.toArray(); - - for (int i = 0; i < uniqueElements.length; i++) { - HashMap<String, String> dataMap = dataSeriesMap.get((String)uniqueElements[i]); - for (int j=0; j<dateAllElements.length;j++) { - //if(strBuf.toString().indexOf((String) dateAllElements[j]) == -1) { - if(!dataMap.containsKey((String) dateAllElements[j])) { - dataMap.put((String) dateAllElements[j], "null"); - //((StringBuffer) dataSeries.get(i)).append ("{ \"x\":" + dateAllElements[j] + " , \"y\":null}, "); - } - } - } - //} - } - String valueStr = ""; - for (int i = 0; i < uniqueElements.length; i++) { - HashMap<String, String> dataMap = dataSeriesMap.get((String)uniqueElements[i]); - Set<String> keySet = dataMap.keySet(); - ArrayList<String> keySortedList = new ArrayList<String>(new TreeSet<String>(keySet)); - - for (int k=0; k < keySortedList.size(); k++) { - valueStr = dataSeriesMap.get((String)uniqueElements[i]).get(keySortedList.get(k)); - if(valueStr.equals("null")) - valueStr = null; - else { - //if(logScale) - //valueStr = new Double(Math.log10(new Double(valueStr).doubleValue())).toString(); - } - ((StringBuffer) dataSeries.get(i)).append ("{ \"x\":" + keySortedList.get(k) + " , \"y\":" + valueStr +"}, "); - // ((StringBuffer) dataSeries.get(i)).append ("{ \"x\":" + keySortedList.get(k) + " , \"y\":" + valueStr +"}, "); - } - - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + (flagNull == 0 ? (YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM): null) +"}, "); - } - - for (int i = 0; i < uniqueElements.length; i++) { - StringBuffer strBuf = ((StringBuffer) dataSeries.get(i)); - ((StringBuffer) dataSeries.get(i)).deleteCharAt(((StringBuffer) dataSeries.get(i)).lastIndexOf(",")); - if(i < (uniqueElements.length -1) ) { - ((StringBuffer) dataSeries.get(i)).append("] } , \n"); - } - else { - ((StringBuffer) dataSeries.get(i)).append("] } \n"); - } - } - if(ds.getRowCount() > 0) { - for (int i = 0; i < uniqueElements.length; i++) { - wholeScript.append((StringBuffer)dataSeries.get(i)); - } - } - - - wholeScript.append("]; \n"); - - //add global variable - wholeScript.append("var chart; \n"); - //javascript to create Bar Chart - wholeScript.append("nv.addGraph(function() { \n"); - if(horizontalBar /*&& flagNoDate == 1*/) - wholeScript.append(" chart = nv.models.multiBarHorizontalChart() \n"); - else /*if (flagNoDate == 1)*/ - wholeScript.append(" chart = nv.models.multiBarChart() \n"); - /*else - wholeScript.append(" var chart = nv.models.multiBarTimeSeriesChart() \n");*/ - - wholeScript.append(" .margin({top: "+ topMargin +", right: "+ rightMargin +", bottom: "+ bottomMargin +", left: " + leftMargin +"}) \n"); - if(showLegend) { - wholeScript.append(" .showLegend(true) \n "); - } else { - wholeScript.append(" .showLegend(false) \n "); - } - if(!horizontalBar && barReduceXAxisLabels) - wholeScript.append(" .reduceXTicks(true) \n "); - else if (!horizontalBar) { - wholeScript.append(" .reduceXTicks(false) \n "); - //wholeScript.append(" chart.lines1.forceY(["+(nvl(reportRuntime.getRangeAxisLowerLimit()).length()<=0?"0":reportRuntime.getRangeAxisLowerLimit()) +", "+ (nvl(reportRuntime.getRangeAxisUpperLimit()).length()<=0?UPPER_RANGE:reportRuntime.getRangeAxisUpperLimit()) + "]); \n" + - double UPPER_RANGE = 0; - if(Math.ceil((MAXDOUBLENUM+(MAXDOUBLENUM*25/100))/100) * 100 >= 1) { - UPPER_RANGE = Math.ceil(MAXDOUBLENUM+(MAXDOUBLENUM*25/100)); - } else UPPER_RANGE = 1; - wholeScript.append(" .forceY(["+(nvl(reportRuntime.getRangeAxisLowerLimit()).length()<=0?"0":reportRuntime.getRangeAxisLowerLimit()) +", "+ (nvl(reportRuntime.getRangeAxisUpperLimit()).length()<=0?UPPER_RANGE:reportRuntime.getRangeAxisUpperLimit()) + "])\n"); - } - if(!animation) { - wholeScript.append(" .delay(0) \n "); - } - if(showControls) { - wholeScript.append(" .showControls(true) \n "); - } else if (!showControls){ - wholeScript.append(" .showControls(false) \n "); - } - if(stacked && !logScale) - wholeScript.append(" .stacked(true)\n "); - else if(!stacked || logScale) - wholeScript.append(" .stacked(false)\n "); - if(logScale) { - wholeScript.append(" .logScale(true)\n "); - } else { - wholeScript.append(" .logScale(false)\n "); - } - - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append(" .legendPos('right')\n" ); - } else { - wholeScript.append(" .legendPos('top')\n" ); - } - if(uniqueElements.length <= 10) { - wholeScript.append(" .color(d3.scale.category10().range()); \n" + - " chart.xAxis\n"); - } else if (uniqueElements.length <= 20) { - wholeScript.append(" .color(d3.scale.category50().range()); \n" + - " chart.xAxis\n"); - } else { - wholeScript.append(" .color(d3.scale.category50().range()); \n" + - " chart.xAxis\n"); - - } - - if(flagNoDate == 0) - wholeScript.append(" .tickValues(["+ dateStrBuf.toString() + "])\n "); - else { - wholeScript.append(" .tickValues(["+ dateStrBuf.toString() + "])\n "); - } - if(staggerLabels) { - wholeScript.append(" .staggerLabels(true) \n"); - } else { - wholeScript.append(" .staggerLabels(false) \n"); - } - if(!horizontalBar) { - if(showMaxMin) { - wholeScript.append(" .showMaxMin(true) \n "); - } else { - wholeScript.append(" .showMaxMin(false) \n "); - } - } - if(nvl(rotateLabels).length()>0) { - wholeScript.append(" .rotateLabels("+ rotateLabels+ ") \n "); - } else { - wholeScript.append(" .rotateLabels(\"0\") \n "); - } - //wholeScript.append(" .axisLabel('" + legendColumnName + "')"); - if(flagNoDate == 1 || !timeAxis) { - wholeScript.append(";\n"); - } else { - wholeScript.append("\n .tickFormat(function(d) { \n"); - if(timeAxis) { - if(formatFlag==HOURFLAG) - wholeScript.append(" return d3.time.format('%x %H')(new Date(d)) }); \n"); - else if(formatFlag==MINFLAG) - wholeScript.append(" return d3.time.format('%x %H:%M')(new Date(d)) }); \n"); - else if(formatFlag==SECFLAG) - wholeScript.append(" return d3.time.format('%X')(new Date(d)) }); \n"); - else if(formatFlag==MONTHFLAG) - wholeScript.append(" return d3.time.format('%b %y')(new Date(d)) }); \n"); - else - wholeScript.append(" return d3.time.format('%x')(new Date(d)) }); \n"); - - } else { - wholeScript.append(" return d; }); \n"); - } - } - - if(nvl(chartRightAxisLabel).length() > 0) { - //if(flagNoDate == 1) - wholeScript.append(" chart.yAxis\n"); - //else - // wholeScript.append(" chart.yAxis1\n"); - if(logScale) { - wholeScript.append(" .logScale(true)\n "); - } else { - wholeScript.append(" .logScale(false)\n "); - } - - wholeScript.append(" .axisLabel('" + chartLeftAxisLabel + "') \n" + - " .tickFormat(d3.format(',.0f')); \n"); - /*" chart.yAxis2\n " + - " .axisLabel('" + chartRightAxisLabel + "') \n" + - " .tickFormat(d3.format(',.0f')); \n");*/ - - - } else { - //if(flagNoDate == 1) - wholeScript.append(" chart.yAxis\n"); - //else - // wholeScript.append(" chart.yAxis1\n"); - if(logScale) { - wholeScript.append(" .logScale(true)\n "); - } else { - wholeScript.append(" .logScale(false)\n "); - } - wholeScript.append(" .axisLabel('" + chartLeftAxisLabel + "') \n"); - - if(MAXDOUBLENUM <=5 && MAXNUMDECIMALPLACES == 0 ) MAXNUMDECIMALPLACES = 2; - if( MAXNUMDECIMALPLACES >=3 ) MAXNUMDECIMALPLACES = 2; - if(!logScale) - wholeScript.append(" .tickFormat(d3.format(',."+MAXNUMDECIMALPLACES+"f')); \n"); - else - wholeScript.append(" .tickFormat(d3.format(',." + precision + "f')); \n"); - //" .tickFormat(d3.format(',.0f')); \n"); - } - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n" + - " .datum(historicalBarChart) \n" ); - if(animation) - wholeScript.append(" .transition().duration(1000) \n" ); - else - wholeScript.append(" .transition().duration(0) \n" ); - wholeScript.append(" .call(chart); \n" + - "nv.utils.windowResize(chart.update); \n" + - "return chart; \n" + - "}); \n"); - wholeScript.append("function redraw() { \n"); - //wholeScript.append(" nv.utils.windowResize(chart.update); \n"); - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n") ; - wholeScript.append(" .datum(historicalBarChart) \n"); - wholeScript.append(" .transition().duration(500) \n"); - wholeScript.append(" .call(chart); \n"); - wholeScript.append("} \n"); - wholeScript.append("\n"); - wholeScript.append(" setInterval(function () { \n"); - wholeScript.append(" redraw(); \n"); - wholeScript.append(" }, 1500) \n"); - - wholeScript.append("if(historicalBarChart.length <= 0 ) {\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").innerHTML = \"<div id='noData'><b>No Data Available</b></div>\";\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").className=\"nodatadiv\";\n"); - wholeScript.append(" document.getElementById(\"nodata\").className=\"nodatainner\";\n"); - wholeScript.append("}\n"); - wholeScript.append("</script> </body></html> \n"); - - } else if (chartType.equals(AppConstants.GT_TIME_SERIES)) { - - // get category if not give the column name for the data column use this to develop series. - boolean hasCategoryAxis = reportRuntime.hasSeriesColumn(); - - - final int YEARFLAG = 1; - final int MONTHFLAG = 2; - final int DAYFLAG = 3; - final int HOURFLAG = 4; - final int MINFLAG = 5; - final int SECFLAG = 6; - final int MILLISECFLAG = 7; - final int DAYOFTHEWEEKFLAG = 8; - final int FLAGDATE = 9; - - int flag = 0; - flag = hasCategoryAxis?1:0; - String uniqueElements [] = null; - //TreeSet ts = new TreeSet(); - ArrayList ts = new ArrayList<String>(); - HashMap<String, String> columnMap = new HashMap(); - //check timeAxis - String dateStr = null; - java.util.Date date = null; - if( ds.getRowCount() > 0) { - dateStr = ds.getString(0, 1); - if(!timeAxis) { - date = getDateFromDateStr(dateStr); - if(date!=null) { - reportRuntime.setTimeAxis(true); - timeAxis = reportRuntime.isTimeAxis(); - - - } - } - } - - ArrayList<String> ts1 = new ArrayList(); - ArrayList uniqueElementsList = new ArrayList(); - Object uniqueXAxisElements[] = null; - String uniqueXAxisStr = ""; - if(!timeAxis){ - for (int i = 0; i < ds.getRowCount(); i++) { - uniqueXAxisStr = ds.getString(i, 0); - ts1.add(uniqueXAxisStr); - } - } - uniqueElementsList.addAll(ts1); - uniqueXAxisElements = ts1.toArray(); - //test start - /* int TOTAL = 0; - int VALUE = 0; - int flagNull = 0; - String KEY = ""; - String COLOR = ""; - TreeSet<String> colorList = new TreeSet<String>(); - for (int i = 0; i < ds.getRowCount(); i++) { - VALUE = 0; - try { - VALUE = Integer.parseInt(ds.getString(i, 2)); - TOTAL = TOTAL+VALUE; - } catch (NumberFormatException ex) { - flagNull = 1; - } - KEY = ds.getString(i, 0); - try { - if(ds.getString(i, "chart_color")!=null) { - colorList.add(KEY+"|"+ds.getString(i, "chart_color")); - } - } catch (ArrayIndexOutOfBoundsException ex) { - System.out.println("No Chart Color"); - } - wholeScript.append("{ \""+ "key" +"\":\""+ KEY+"\", \""+ "y" +"\":"+VALUE+"}, \n"); - - } - StringBuffer color = new StringBuffer(""); - if(colorList.size()>0) { - SortedSet<String> s = Collections.synchronizedSortedSet(colorList); - Object[] colorElements = (Object[]) s.toArray(); - - String element = ""; - - for (int i = 0; i < colorElements.length; i++) { - element = ((String)colorElements[i]); - color.append("'"+element.substring(element.indexOf("|")+1)+"',"); - } - color.deleteCharAt(color.length()-1); - }*/ - - //test end - boolean hasCustomizedChartColor = false; - if(flag == 1) { - StringBuffer catStr = new StringBuffer(""); - String color=""; - for (int i = 0; i < ds.getRowCount(); i++) { - catStr = new StringBuffer(""); - catStr.append(ds.getString(i, 2)); - try { - if(ds.getString(i, "chart_color")!=null) { - color = ds.getString(i, "chart_color"); - hasCustomizedChartColor = true; - catStr.append("|"+color); - } - } catch (ArrayIndexOutOfBoundsException ex) { - //System.out.println("No Chart Color"); - } - - if(catStr.length()>0) { - //duplicates are avoided - if(!ts.contains(catStr.toString())) - ts.add(catStr.toString()); - - } - } - //Object uniqueElements [] = ts.toArray(); - //SortedSet s = Collections.synchronizedSortedSet(ts); - //uniqueElements = (String[]) ts.toArray(); - DataColumnType dct = null; - List yTextSeries = reportRuntime.getChartDisplayNamesList(AppConstants.CHART_ALL_COLUMNS, formValues); - if(yTextSeries.size()==1) { - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - //System.out.println(dct.getDisplayName() + " " + yText); - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(nvl(chartLeftAxisLabel).length()<=0) { - chartLeftAxisLabel = nvl(dct.getYAxis()); - chartLeftAxisLabel = (chartLeftAxisLabel.indexOf("|")!=-1)?chartLeftAxisLabel.substring(0,chartLeftAxisLabel.indexOf("|")):""; - } - } - } - } - Object tempArray[] = ts.toArray(); - uniqueElements = Arrays.copyOf(tempArray, tempArray.length, String[].class); - - } else { - DataColumnType dct = null; - - List yTextSeries = reportRuntime.getChartDisplayNamesList(AppConstants.CHART_ALL_COLUMNS, formValues); - //if(columnValuesList.size() == 1) { - int dctIndex = 0; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - //System.out.println(dct.getDisplayName() + " " + yText); - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(yTextSeries.contains((String)dct.getDisplayName())) { - if(nvl(dct.getChartColor()).length()>0) hasCustomizedChartColor = true; - if(hasCustomizedChartColor) { - //duplicates are avoided - if(!ts.contains(dct.getDisplayName()+"|"+nvl(dct.getChartColor()))) - ts.add(dct.getDisplayName()+"|"+nvl(dct.getChartColor())); - } else { - //duplicates are avoided - if(!ts.contains(dct.getDisplayName())) - ts.add(dct.getDisplayName()); - } - if(nvl(chartLeftAxisLabel).length()<=0) { - chartLeftAxisLabel = nvl(dct.getYAxis()); - chartLeftAxisLabel = (chartLeftAxisLabel.indexOf("|")!=-1)?chartLeftAxisLabel.substring(0,chartLeftAxisLabel.indexOf("|")):""; - } - if(nvl(chartRightAxisLabel).length()>0) { - String dctYAxis = nvl(dct.getYAxis()); - String yAxis = (dctYAxis.indexOf("|")!=-1)?dctYAxis.substring(0,dctYAxis.indexOf("|")):dctYAxis; - if(chartRightAxisLabel.equals(yAxis)) { - if(ts.contains(dct.getDisplayName())) { - if(hasCustomizedChartColor) { - ts.set(dctIndex, dct.getDisplayName()+"|R|"+nvl(dct.getChartColor())); - } else { - ts.set(dctIndex, dct.getDisplayName()+"|R"); - } - } - } - } - columnMap.put(dct.getDisplayName(), dct.getColId()); - } - dctIndex++; - } - - } - - //SortedSet s = Collections.synchronizedSortedSet(ts); - Object tempArray[] = ts.toArray(); - uniqueElements = Arrays.copyOf(tempArray, tempArray.length, String[].class); - //uniqueElements = (String[]) ts.toArray(); - - } - - wholeScript.append("<!DOCTYPE html>\n"); - wholeScript.append("<html>\n"); - wholeScript.append("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF8\">\n"); - wholeScript.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n"); - wholeScript.append("<link href=\""+ AppUtils.getBaseFolderURL() +"d3/css/nv.d3.css\" rel=\"stylesheet\" type=\"text/css\">\n"); - wholeScript.append("<style>\n " + - " body { \n" + - " overflow-y:scroll; \n" + - " } \n" + - " text { \n" + - " font: 12px sans-serif; \n" + - " } \n" + - " svg { \n" + - " display: block;\n" + - " } \n" + - " #chart"+reportRuntime.getReportID()+" svg { \n" + - " height: "+ (nvl(height).length()>0?(height.endsWith("px")?height:height+"px"):"420px") + "; \n" + - " width: "+ (nvl(width).length()>0?(width.endsWith("px")?width:width+"px"):"700px") + "; \n" + - " min-width: 100px; \n" + - " min-height: 100px; \n" + - " } \n" + - " tr.z-row-over > td.z-row-inner, tr.z-row-over > .z-cell {" + - " background-color: rgb(255, 255, 255); "+ - "}\n"); - wholeScript.append(".nodatadiv {\n"); - wholeScript.append(" display: table-cell;\n"); - wholeScript.append(" width: 700px;\n"); - wholeScript.append(" height:370px;\n"); - wholeScript.append(" text-align:center;\n"); - wholeScript.append(" vertical-align: middle;\n"); - wholeScript.append("}\n"); - wholeScript.append(".nodatainner {\n"); - wholeScript.append(" padding: 10px;\n"); - wholeScript.append("}\n"); - - wholeScript.append(" </style> \n" ); - - wholeScript.append("<body> \n"); - - if(showTitle) - wholeScript.append("<div align=\"center\"><H3>" + title +"</H3></div>"); - - - wholeScript.append("<div id=\"chart"+reportRuntime.getReportID()+"\"> <svg></svg> </div> \n"); - //js files - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/d3.v3.min.js\"></script>\n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/nv.d3.min.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/axis.min.js\"></script> \n"); - //wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/cumulativeLineChart.js\"></script> \n"); - //if(multipleSeries) - //wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/multiChart.js\"></script> \n"); - - //json - wholeScript.append("<script> \n"); - - wholeScript.append("historicalBarChart = [ \n"); - //wholeScript.append("{ \n"); - ArrayList dataSeries = new ArrayList(); - String uniqueElement = ""; - - String [] uniqueRevElements = null; - //Added to make sure order appears same as legend - /*if(nvl(subType).length() > 0 && subType.equals("area")) { - uniqueRevElements = reverse((String[])uniqueElements); - } else {*/ - uniqueRevElements = (String[])uniqueElements; - //} - - int RIGHTAXISSERIES = 0; - for (int i = 0; i < uniqueRevElements.length; i++) { - //element.substring(element.indexOf("|")+1) - uniqueElement = (String)uniqueRevElements[i]; - if(multipleSeries && (nvl(chartRightAxisLabel).length() > 0)) { - if(nvl(subType).length() > 0 && subType.equals("area")) { - if(nvl(uniqueElement).indexOf("|R") !=-1) - dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((uniqueElement.indexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement) +"\", \"yAxis\": \""+(2)+"\", "+ (hasCustomizedChartColor && (uniqueElement.lastIndexOf("|") != -1) ?("\"color\": \""+uniqueElement.substring(uniqueElement.lastIndexOf("|")+1) + "\","):"")+" \"values\": [")); - else - dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((uniqueElement.indexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement) +"\", \"yAxis\": \""+(1)+"\", "+ (hasCustomizedChartColor && (uniqueElement.lastIndexOf("|") != -1) ?("\"color\": \""+uniqueElement.substring(uniqueElement.lastIndexOf("|")+1) + "\","):"")+" \"values\": [")); - } else { - if(nvl(uniqueElement).indexOf("|R") !=-1) - dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((uniqueElement.indexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement) +"\", \"yAxis\": \""+(2)+"\","+ (hasCustomizedChartColor && (uniqueElement.lastIndexOf("|") != -1) ?("\"color\": \""+uniqueElement.substring(uniqueElement.lastIndexOf("|")+1) + "\","):"")+" \"values\": [")); - else - dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((uniqueElement.indexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement) +"\", \"yAxis\": \""+(1)+"\","+ (hasCustomizedChartColor && (uniqueElement.lastIndexOf("|") != -1) ?("\"color\": \""+uniqueElement.substring(uniqueElement.lastIndexOf("|")+1) + "\","):"")+" \"values\": [")); - } - RIGHTAXISSERIES = dataSeries.size()-1; - //dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((DataColumnType)columnMap.get(i)).getDisplayName() +"\", \"yAxis\": \""+(i+1)+"\", \"values\": [")); - } - else { - dataSeries.add(new StringBuffer(" { \"type\":\"line\", \"key\": \""+ ((uniqueElement.indexOf("|")!= -1)?uniqueElement.substring(0, uniqueElement.indexOf("|")):uniqueElement) +"\", \"yAxis\": \""+(1)+"\","+ (hasCustomizedChartColor && (uniqueElement.lastIndexOf("|") != -1)?("\"color\": \""+uniqueElement.substring(uniqueElement.lastIndexOf("|")+1) + "\","):"")+"\"values\": [")); - } - - } - /*StringBuffer dataSeries1 = new StringBuffer(""); - dataSeries1.append(" { key: \"Series1\",values: ["); - StringBuffer dataSeries2 = new StringBuffer(""); - dataSeries2.append(" { key: \"Series2\", values: ["); - StringBuffer dataSeries3 = new StringBuffer(""); - dataSeries3.append(" { key: \"Series3\", values: ["); - */ - - - //long minTime = 1000000000000000L; - int MAXNUM = 0; - double MAXDOUBLENUM = 0.0; - int YAXISNUM = 0; - double YAXISDOUBLENUM = 0.0; - int MAXNUMDECIMALPLACES = 0; - int flagNull = 0; - int flagSecondNull = 0; - TreeSet dateList = new TreeSet(); - int formatFlag = 0; - if(flag!= 1) { - for (int j = 0; j < uniqueRevElements.length; j++) { - for (int i = 0; i < ds.getRowCount(); i++) { - flagNull = 0; - flagSecondNull=0; - YAXISNUM = 0; - YAXISDOUBLENUM = 0.0; - dateStr = ""; - date = null; - dateStr = ds.getString(i, 1); - if(timeAxis) { - date = getDateFromDateStr(dateStr); - formatFlag = getFlagFromDateStr(dateStr); - } - if(date==null && timeAxis) continue; - - - //if(ds.getString(i, 2).equals(uniqueElements[j])) { - //if(minTime > date.getTime()) - // minTime = date.getTime(); - uniqueElement = (String)uniqueRevElements[j]; - try { - YAXISNUM = Integer.parseInt(ds.getString(i, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - if(RIGHTAXISSERIES!=j) { - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } - } catch (NumberFormatException ex1) { - flagNull = 1; - } - } - - if(date==null) { - dateList.add(dateStr); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - } else { - dateList.add(new Long(date.getTime()).toString()); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + (flagNull==0?(YAXISDOUBLENUM>0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - } - - - - if(nvl(subType).length() > 0 && subType.equals("area")) { - - if(flagNull!=1) { - if(i<ds.getRowCount()-1) { - try { - YAXISNUM = Integer.parseInt(ds.getString(i+1, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1)?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i+1, columnMap.get(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement)))); - if(RIGHTAXISSERIES!=j) { - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } - } catch (NumberFormatException ex1) { - flagSecondNull = 1; - } - } - - if(flagSecondNull==1 && date == null) { - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + null +"}, "); - } else if( flagSecondNull == 1){ - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - } - } - } else { - if(i<ds.getRowCount()-1) { - dateStr = ds.getString(i+1, 1); - - if(!timeAxis) { - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":\"" + dateStr + "\" , \"y\":" + null +"}, "); - } else { - date = getDateFromDateStr(dateStr); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - } - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - } - } - - } - - - //} - } - //((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + minTime + " , \"y\":" + 0 +"}, "); - } - - } else { - for (int j = 0; j < uniqueRevElements.length; j++) { - for (int i = 0; i < ds.getRowCount(); i++) { - YAXISNUM = 0; - YAXISDOUBLENUM = 0.0; - flagNull= 0; - flagSecondNull = 0; - dateStr = ds.getString(i, 1); - if(timeAxis) { - date = getDateFromDateStr(dateStr); - formatFlag = getFlagFromDateStr(dateStr); - } - - if(date==null && timeAxis) continue; - - uniqueElement = (String)uniqueRevElements[j]; - //date = MMDDYYYYFormat.parse(ds.getString(i, 1), new ParsePosition(0)); - if(ds.getString(i, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement))) { - //if(minTime > date.getTime()) - // minTime = date.getTime(); - try { - YAXISNUM = Integer.parseInt(ds.getString(i, 3)); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(i, 3)); - if(RIGHTAXISSERIES!=j) { - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - - } - } catch (NumberFormatException ex1) { - flagNull = 1; - } - } - - if(date==null) { - dateList.add(dateStr); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + dateStr + " , \"y\":" + (flagNull==0?(YAXISDOUBLENUM!=0.0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - } else { - dateList.add(new Long(date.getTime()).toString()); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + (flagNull==0?(YAXISDOUBLENUM!=0.0?YAXISDOUBLENUM:YAXISNUM):null) +"}, "); - } - - - if(nvl(subType).length() > 0 && subType.equals("area")) { - - if(flagNull!=1) { - if(i<ds.getRowCount()-1) { - for (int k = i+1; k < ds.getRowCount(); k++) { - if (ds.getString(k, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement))) { - try { - YAXISNUM = Integer.parseInt(ds.getString(k, 3)); - if(MAXDOUBLENUM < YAXISNUM) MAXDOUBLENUM = YAXISNUM; - } catch (NumberFormatException ex) { - try { - YAXISDOUBLENUM = Double.parseDouble(ds.getString(k, 3)); - if(RIGHTAXISSERIES!=j) { - MAXNUMDECIMALPLACES = getNumberOfDecimalPlaces(YAXISDOUBLENUM); - if(MAXDOUBLENUM < YAXISDOUBLENUM) MAXDOUBLENUM = YAXISDOUBLENUM; - } - } catch (NumberFormatException ex1) { - flagSecondNull = 1; - } - } - break; - } - } - - if(date==null && flagSecondNull==1){ - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + dateStr + " , \"y\":" + null +"}, "); - } else if(flagSecondNull == 1){ - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - } - //} - } - } else { - if(i<ds.getRowCount()-1) { - for (int k = i+1; k < ds.getRowCount(); k++) { - if (ds.getString(k, 2).equals(((hasCustomizedChartColor||nvl(chartRightAxisLabel).length()>0) && (uniqueElement.lastIndexOf("|") != -1) ?uniqueElement.substring(0, uniqueElement.lastIndexOf("|")):uniqueElement))) { - dateStr = ds.getString(k, 1); - if(!timeAxis) { - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - break; - } else { - date = getDateFromDateStr(dateStr); - ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + date.getTime() + " , \"y\":" + null +"}, "); - break; - } - } - } - } - } - } - - } - } - // ((StringBuffer) dataSeries.get(j)).append ("{ \"x\":" + minTime + " , \"y\":" + 0 +"}, "); - - } -/* if(ds.getString(i, 2).equals("Series1")) { - dataSeries1.append("[ " + date.getTime() + " , " + ds.getString(i, 3) +"], "); - } else if (ds.getString(i, 2).equals("Series2")) { - dataSeries2.append("[ " + date.getTime() + " , " + ds.getString(i, 3) +"], "); - } else if (ds.getString(i, 2).equals("Series3")) { - dataSeries3.append("[ " + date.getTime() + " , " + ds.getString(i, 3) +"], "); - } -*/ } - - for (int i = 0; i < uniqueRevElements.length; i++) { - StringBuffer strBuf = ((StringBuffer) dataSeries.get(i)); - ((StringBuffer) dataSeries.get(i)).deleteCharAt(((StringBuffer) dataSeries.get(i)).lastIndexOf(",")); - if(i < (uniqueRevElements.length -1) ) { - ((StringBuffer) dataSeries.get(i)).append("] } , \n"); - } - else { - ((StringBuffer) dataSeries.get(i)).append("] } \n"); - } - } - - for (int i = 0; i < uniqueRevElements.length; i++) { - wholeScript.append((StringBuffer)dataSeries.get(i)); - } -/* wholeScript.append(dataSeries1); - wholeScript.append(dataSeries2); - wholeScript.append(dataSeries3); -*/ wholeScript.append("];\n"); - - /* Sorting is commented out.*/ - StringBuffer dateStrBuf = new StringBuffer(""); - if(dateList.size()>0) { - //SortedSet<String> s = Collections.synchronizedSortedSet(dateList); - Object[] dateElements = (Object[]) dateList.toArray(); - - String element = ""; - - for (int i = 0; i < dateElements.length; i++) { - dateStrBuf.append(dateElements[i]+","); - } - dateStrBuf.deleteCharAt(dateStrBuf.length()-1); - } - - wholeScript.append(" var chart;\n"); - wholeScript.append("nv.addGraph(function() { \n"); - //" var chart = nv.models.cumulativeLineChart() \n" + nv.models.lineWithFocusChart() -// " chart = nv.models.lineChart() \n" + - if(nvl(subType).length() > 0 && subType.equals("area")) { - wholeScript.append(" chart = nv.models.stackedAreaChart() \n"); - if(showControls) { - wholeScript.append(" .showControls(true) \n "); - } else { - wholeScript.append(" .showControls(false) \n "); - } - } else { - wholeScript.append(" chart = nv.models.multiChart() \n"); - if(nvl(chartRightAxisLabel).length() > 0) { - wholeScript.append(" .dualaxis(true) \n "); - } else { - wholeScript.append(" .dualaxis(false) \n "); - } - - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append(" .legendPos('right')\n" ); - } else { - wholeScript.append(" .legendPos('top')\n" ); - } - - - } - - wholeScript.append(" .margin({top: "+ topMargin +", right: "+ rightMargin +", bottom: "+ bottomMargin +", left: " + leftMargin +"}) \n"); - if(showLegend) { - wholeScript.append(" .showLegend(true) \n "); - } else { - wholeScript.append(" .showLegend(false) \n "); - } - - if(nvl(subType).length() > 0 && subType.equals("area")) { - if( MAXNUMDECIMALPLACES >=3 ) { - wholeScript.append(" .yAxisTooltipFormat(d3.format(',.3f')) \n"); - } else { - wholeScript.append(" .yAxisTooltipFormat(d3.format(',."+MAXNUMDECIMALPLACES+ "f')) \n"); - } - - wholeScript.append(".x (function(d) {return d.x;}) \n" + - ".y (function(d) {return d.y;}) \n"); - } - - //" .x(function(d) { return d[0] }) \n" + - //" .y(function(d) { return d[1] }) \n" + - //" .forceY("+(nvl(reportRuntime.getRangeAxisLowerLimit()).length()<=0?"0":reportRuntime.getRangeAxisLowerLimit()) +", "+ Math.ceil((MAXNUM+(MAXNUM*25/100))/100) * 100 + ") \n" + // reportRuntime.getRangeAxisUpperLimit()+") \n" + - wholeScript.append(" .color(d3.scale.category10().range()); \n"); - if(!(nvl(subType).length() > 0 && subType.equals("area"))) { - double UPPER_RANGE = 0; - if(Math.ceil((MAXDOUBLENUM+(MAXDOUBLENUM*25/100))/100) * 100 >= 1) { - UPPER_RANGE = Math.ceil(MAXDOUBLENUM+(MAXDOUBLENUM*25/100)); - } else UPPER_RANGE = 1; - - wholeScript.append(" chart.lines1.forceY(["+(nvl(reportRuntime.getRangeAxisLowerLimit()).length()<=0?"0":reportRuntime.getRangeAxisLowerLimit()) +", "+ (nvl(reportRuntime.getRangeAxisUpperLimit()).length()<=0?UPPER_RANGE:reportRuntime.getRangeAxisUpperLimit()) + "]); \n" + - " chart.lines2.forceY([0,1]); \n"); - } - wholeScript.append(" chart.xAxis\n"); - if(reportRuntime.isShowXaxisLabel()) { - // X axis label is commented for time-being. This should be derived from request parameter. - //" .axisLabel('" + legendColumnName + "') \n" + - wholeScript.append(" .axisLabel('" + legendColumnName + "') \n"); - } else { - wholeScript.append(" .axisLabel('') \n"); - } - if(reportRuntime.isAddXAxisTickers()) { - wholeScript.append(" .tickValues(["+ dateStrBuf.toString()+ "])\n "); - } else { - //wholeScript.append(" .tickValues([])\n "); - } - if(staggerLabels) { - wholeScript.append(" .staggerLabels(true) \n"); - } else { - wholeScript.append(" .staggerLabels(false) \n"); - } - if(showMaxMin) { - wholeScript.append(" .showMaxMin(true) \n "); - } else { - wholeScript.append(" .showMaxMin(false) \n "); - } - - if(nvl(rotateLabels).length()>0) { - wholeScript.append(" .rotateLabels("+ rotateLabels+ ") \n "); - } else { - wholeScript.append(" .rotateLabels(\"0\") \n "); - } - - wholeScript.append(" .tickFormat(function(d) { \n"); - if(formatFlag==HOURFLAG) - wholeScript.append(" return d3.time.format('%x %H')(new Date(d)) }); \n"); - else if(formatFlag==MINFLAG) - wholeScript.append(" return d3.time.format('%x %H:%M')(new Date(d)) }); \n"); - else if(formatFlag==SECFLAG) - wholeScript.append(" return d3.time.format('%x %X')(new Date(d)) }); \n"); - else if(formatFlag==MONTHFLAG) - wholeScript.append(" return d3.time.format('%b %y')(new Date(d)) }); \n"); - - else if(timeAxis) - wholeScript.append(" return d3.time.format('%x')(new Date(d)) }); \n"); - else - wholeScript.append(" return d; }); \n"); - if(nvl(chartRightAxisLabel).length() > 0) { - if(nvl(subType).length() > 0 && subType.equals("area")) { - wholeScript.append(" chart.yAxis\n"); - } else { - wholeScript.append(" chart.yAxis1\n"); - } - wholeScript.append(" .axisLabel('" + chartLeftAxisLabel + "') \n"); - //if(nvl(subType).length() > 0 && subType.equals("area")) { - if(MAXDOUBLENUM <=5 && MAXNUMDECIMALPLACES == 0 ) MAXNUMDECIMALPLACES = 2; - if( MAXNUMDECIMALPLACES >=3 ) MAXNUMDECIMALPLACES = 2; - wholeScript.append(" .tickFormat(d3.format(',."+MAXNUMDECIMALPLACES+"f')); \n"); - /*} else { - wholeScript.append(" .tickFormat(d3.format(',.2f')); \n"); - }*/ - // " .tickFormat(function (d) {return d;} ); \n"); - //" .tickFormat(function(d) {if (d >= 1000) return Math.round(d/1000)+\"K\"; else return d;}); \n"); - if(!(nvl(subType).length() > 0 && subType.equals("area"))) { - wholeScript.append(" chart.yAxis2\n " + - " .axisLabel('" + chartRightAxisLabel + "') \n" + - " .tickFormat(d3.format(',.02f')); \n"); - //" .tickFormat(function(d) {if (d >= 1000) return Math.round(d/1000)+\"K\"; else return d;}); \n"); - //" .tickFormat(function(d) {if( d <= 1) return Math.round(d*100)+\"%\"; else return d;}); \n"); - // " .tickFormat(function(d) { return d;}); \n"); - } - - - } else { - if(nvl(subType).length() > 0 && subType.equals("area")) { - wholeScript.append(" chart.yAxis\n"); - } else { - wholeScript.append(" chart.yAxis1\n"); - } - wholeScript.append(" .axisLabel('" + chartLeftAxisLabel + "') \n"); - //if(nvl(subType).length() > 0 && subType.equals("area")) { - if(MAXDOUBLENUM <=5 && MAXNUMDECIMALPLACES == 0 ) MAXNUMDECIMALPLACES = 2; - if( MAXNUMDECIMALPLACES >=3 ) { - MAXNUMDECIMALPLACES = 2; - } - wholeScript.append(" .tickFormat(d3.format(',."+MAXNUMDECIMALPLACES+"f')); \n"); - /*} else { - wholeScript.append(" .tickFormat(d3.format(',.2f')); \n"); - }*/ - //" .tickFormat(function(d) {if (d >= 1000) return Math.round(d/1000)+\"K\"; else return d;}); \n"); - } - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n" + - " .datum(historicalBarChart) \n" ); - if(animation) - wholeScript.append(" .transition().duration(1000) \n" ); - wholeScript.append(" .call(chart); \n" + - "nv.utils.windowResize(chart.update); \n" + - "return chart; \n" + - "}); \n"); - - wholeScript.append("function redraw() { \n"); - //wholeScript.append(" nv.utils.windowResize(chart.update); \n"); - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n") ; - wholeScript.append(" .datum(historicalBarChart) \n"); - wholeScript.append(" .transition().duration(500) \n"); - wholeScript.append(" .call(chart); \n"); - wholeScript.append("} \n"); - wholeScript.append("\n"); - wholeScript.append(" setInterval(function () { \n"); - wholeScript.append(" redraw(); \n"); - wholeScript.append(" }, 1500) \n"); - - wholeScript.append("if(historicalBarChart.length <= 0 ) {\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").innerHTML = \"<div id='noData'><b>No Data Available</b></div>\";\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").className=\"nodatadiv\";\n"); - wholeScript.append(" document.getElementById(\"nodata\").className=\"nodatainner\";\n"); - wholeScript.append("}\n"); - - wholeScript.append("</script> </body> </html> \n"); - - } else if (chartType.equals(AppConstants.GT_PIE) || chartType.equals(AppConstants.GT_PIE_3D)) { - wholeScript.append("<!DOCTYPE html>\n"); - wholeScript.append("<html>\n"); - wholeScript.append("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF8\">\n"); - wholeScript.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n"); - wholeScript.append("<link href=\""+ AppUtils.getBaseFolderURL() +"d3/css/nv.d3.css\" rel=\"stylesheet\" type=\"text/css\">\n"); - wholeScript.append("<style>\n " + - " body { \n" + - " overflow-y:scroll; \n" + - " } \n" + - " text { \n" + - " font: 12px sans-serif; \n" + - " } \n" + - " tr.z-row-over > td.z-row-inner, tr.z-row-over > .z-cell {" + - " background-color: rgb(255, 255, 255); "+ - "} "+ - " svg { display: block; } " + - " #chart"+reportRuntime.getReportID()+" svg { \n" + - " height: "+ (nvl(height).length()>0?(height.endsWith("px")?height:height+"px"):"420px") + "; \n" + - " width: "+ (nvl(width).length()>0?(width.endsWith("px")?width:width+"px"):"700px") + "; \n" + - " min-width: 100px; \n" + - " min-height: 100px; \n" + - " } \n" + - " </style> \n" ); - wholeScript.append("<body> \n"); - - if(showTitle) - wholeScript.append("<div align=\"center\"><H3>" + title +"</H3></div>"); - - wholeScript.append("<div id=\"chart"+reportRuntime.getReportID()+"\"><svg></svg></div>"); - //"<svg id=\"test2\"></svg>\n"); - //js files - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/d3.v3.min.js\"></script>\n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/nv.d3.min.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/legend.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/pie.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/pieChart.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/utils.js\"></script> \n"); - wholeScript.append("<script> \n"); - - wholeScript.append("historicalBarChart = [ \n"); - double TOTAL = 0; - double VALUE = 0; - int flagNull = 0; - String KEY = ""; - String COLOR = ""; - TreeSet<String> colorList = new TreeSet<String>(); - for (int i = 0; i < ds.getRowCount(); i++) { - VALUE = 0; - try { - VALUE = Double.parseDouble(ds.getString(i, 2)); - TOTAL = TOTAL+VALUE; - } catch (NumberFormatException ex) { - flagNull = 1; - } - KEY = ds.getString(i, 0); - try { - if(ds.getString(i, "chart_color")!=null) { - colorList.add(KEY+"|"+ds.getString(i, "chart_color")); - } - } catch (ArrayIndexOutOfBoundsException ex) { - //System.out.println("No Chart Color"); - } - wholeScript.append("{ \""+ "key" +"\":\""+ KEY+"\", \""+ "y" +"\":"+VALUE+"}, \n"); - - } - StringBuffer color = new StringBuffer(""); - if(colorList.size()>0) { - SortedSet<String> s = Collections.synchronizedSortedSet(colorList); - Object[] colorElements = (Object[]) s.toArray(); - - String element = ""; - - for (int i = 0; i < colorElements.length; i++) { - element = ((String)colorElements[i]); - color.append("'"+element.substring(element.lastIndexOf("|")+1)+"',"); - } - color.deleteCharAt(color.length()-1); - } - - wholeScript.append("];\n"); - - - wholeScript.append("var chart; \n"); - wholeScript.append("nv.addGraph(function() { \n" + - " var width1= 700, height1=720; \n" + - " chart = nv.models.pieChart() \n" + - " .margin({top: "+ topMargin +", right: "+ rightMargin +", bottom: "+ bottomMargin +", left: " + leftMargin +"}) \n" + - - //" .x(function(d) { return d.key +\" \"+ Math.round(d.y/"+TOTAL+" *100) + \"%\" }) \n" + - " .x(function(d) { return d.key }) \n" + - " .y(function(d) { return d.y }) \n"); - if(colorList.size()>0) { - wholeScript.append(" .color(["+ color.toString() + "] ) \n"); - } - //wholeScript.append(" .values(function(d) { return d }) \n"); - //" .color(d3.scale.category10().range()); \n" + - if(showLegend) { - wholeScript.append(" chart.showLegend(true);\n "); - } else { - wholeScript.append(" chart.showLegend(false);\n "); - } - - //wholeScript.append("chart.showLegend(false);\n" + - //" .width(width1) \n" + - //" .height(height1); \n" + - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n" + - " .datum(historicalBarChart) \n"); - if(animation) - wholeScript.append(" .transition().duration(1200) \n" ); -/* " .attr(\"width\", width1) \n" + - " .attr(\"height\", height1) \n" + -*/ wholeScript.append(" .call(chart); \n" + - " nv.utils.windowResize(chart.update);\n"+ - "return chart; \n" + - "}); \n"); - - wholeScript.append("function redraw() { \n"); - //wholeScript.append(" nv.utils.windowResize(chart.update); \n"); - wholeScript.append(" d3.select('#chart"+reportRuntime.getReportID()+" svg') \n") ; - wholeScript.append(" .datum(historicalBarChart) \n"); - wholeScript.append(" .transition().duration(500) \n"); - wholeScript.append(" .call(chart); \n"); - wholeScript.append("} \n"); - wholeScript.append("\n"); - wholeScript.append(" setInterval(function () { \n"); - wholeScript.append(" redraw(); \n"); - wholeScript.append(" }, 1500) \n"); - - - - wholeScript.append("if(historicalBarChart.length <= 0 ) {\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").innerHTML = \"<div id='noData'><b>No Data Available</b></div>\";\n"); - wholeScript.append(" document.getElementById(\"chart"+reportRuntime.getReportID()+"\").className=\"nodatadiv\";\n"); - wholeScript.append(" document.getElementById(\"nodata\").className=\"nodatainner\";\n"); - wholeScript.append("}\n"); - - wholeScript.append("</script> </body> </html> \n"); - - } else if (chartType.equals(AppConstants.GT_ANNOTATION_CHART) || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) { - - boolean timeCharts = chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS); - - String dateStr = null; - java.util.Date date = null; - - final int YEARFLAG = 1; - final int MONTHFLAG = 2; - final int DAYFLAG = 3; - final int HOURFLAG = 4; - final int MINFLAG = 5; - final int SECFLAG = 6; - final int MILLISECFLAG = 7; - final int DAYOFTHEWEEKFLAG = 8; - final int FLAGDATE = 9; - - int flagNoDate = 0; - - int MAXNUM = 0; - int YAXISNUM = 0; - int flagNull = 0; - - double YAXISDOUBLENUM = 0.0; - double MAXDOUBLENUM = 0.0; - int MAXNUMDECIMALPLACES = 0; - - int formatFlag = 0; - - TreeSet<String> dateStrList = new TreeSet<String>(); - // added to store all date elements - SortedSet<String> sortSet = new TreeSet<String>(); - int count = 0; - - int flag = 0; - boolean hasCategoryAxis = reportRuntime.hasSeriesColumn(); - flag = hasCategoryAxis?1:0; - - - String anomalyText = ""; - - StringBuffer dataStrBuf = new StringBuffer(""); - StringBuffer annotationsStrBuf = new StringBuffer(""); - - String xAxisLabel = (reportRuntime.getChartLegendColumn()!=null)?reportRuntime.getChartLegendColumn().getDisplayName():""; - - //finding actual string - String actualText = ""; - DataColumnType dct = null; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if((dct.getChartSeq()!=null && dct.getChartSeq() >=0) && !AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) { - //if(AppUtils.nvl(dct.getDisplayName()).toLowerCase().contains("actual")) { - actualText = dct.getDisplayName(); - break; - //} - } - } - - int anomalyRec = 0; - int columnIndex = 1; - ArrayList columnNames = new ArrayList(); - ArrayList columnValues = new ArrayList(); - Set set = null; - String columnName = ""; - String columnValue = ""; - long minDate = 0L; - long maxDate = 0L; - StringBuffer seriesBuffer = new StringBuffer(""); - - for (int i = 0; i < ds.getRowCount(); i++) { - columnNames = new ArrayList(); - columnValues = new ArrayList(); - columnName = ""; - columnValue = ""; - columnIndex = 1; - anomalyText = ""; - dateStr = ds.getString(i, 0); - date = getDateFromDateStr(dateStr); - if(date.getTime() > maxDate ) - maxDate = date.getTime(); - - formatFlag = getFlagFromDateStr(dateStr); - - - for (;columnIndex<ds.getColumnCount();columnIndex++) { - columnName = ds.getColumnName(columnIndex); - if(!timeCharts && !columnName.toLowerCase().equals("anomaly_text")) { - columnNames.add(columnName); - columnValues.add(AppUtils.nvls(ds.getString(i, columnIndex), "null")); - } else if (timeCharts) { - columnNames.add(columnName); - columnValues.add(AppUtils.nvls(ds.getString(i, columnIndex), "null")); - } - } -/* actual = ds.getString(i, "actual"); - //forecast = ds.getString(i, "forecast"); - upperBound = ds.getString(i, "upperBound"); - lowerBound = ds.getString(i, "lowerBound"); - -*/ if(!timeCharts) - anomalyText = ds.getString(i, "anomaly_text"); - //dataStrBuf.append(" [new Date(moment(\""+dateStr+"\")),"+ actual /*+","+ forecast*/+","+ lowerBound +","+ upperBound +"],\n"); - dataStrBuf.append(" [new Date(moment(\""+dateStr+"\"))"); - for(int c=0; c< columnNames.size(); c++ ) { - columnName = (String) columnNames.get(c); - columnValue = (String) columnValues.get(c); - for (Iterator iter1 = l.iterator(); iter1.hasNext();) { - dct = (DataColumnType) iter1.next(); - if((dct.getChartSeq()!=null && dct.getChartSeq() >=0) && !AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) { - if((!timeCharts && !AppUtils.nvl(dct.getColId()).toLowerCase().equals("anomaly_text")) && AppUtils.nvl(dct.getColId()).toLowerCase().equals(columnName.toLowerCase())) { - dataStrBuf.append(","+columnValue); - break; - } else if(timeCharts && AppUtils.nvl(dct.getColId()).toLowerCase().equals(columnName.toLowerCase())){ - dataStrBuf.append(","+columnValue); - //break; - } - } - } - } - - dataStrBuf.append("],\n"); - if(!timeCharts) { - if(AppUtils.nvl(anomalyText).length()>0) { - ++anomalyRec; - annotationsStrBuf.append("anns.push( {\n"); - annotationsStrBuf.append(" series: '"+actualText+"',\n"); - annotationsStrBuf.append(" x: moment(\""+dateStr+"\"),\n"); - annotationsStrBuf.append(" shortText: '"+ IntToLetter(anomalyRec).toUpperCase() +"',\n"); - annotationsStrBuf.append(" text: '"+ anomalyText + "'\n"); - annotationsStrBuf.append("});\n"); - //anomalyRec++; - } - - } - } - - //if(!timeCharts) - //anomalyRec = anomalyRec - 1; - - minDate = maxDate - (new Long(reportRuntime.getZoomIn()).longValue()*60*60*1000); - System.out.println(new java.util.Date(maxDate) + " " + new java.util.Date(minDate) + " " + reportRuntime.getZoomIn()); - if(dataStrBuf.lastIndexOf(",")!= -1) - dataStrBuf.deleteCharAt(dataStrBuf.lastIndexOf(",")); - - wholeScript = new StringBuffer(""); - wholeScript.append("<!DOCTYPE html>\n"); - wholeScript.append("<html>\n"); - wholeScript.append(" <head>\n"); - //wholeScript.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7; IE=EmulateIE9\">\n"); - wholeScript.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n"); - wholeScript.append("<script type=\"text/javascript\" src=\""+ AppUtils.getBaseFolderURL() +"dy3/js/dygraph-combined.js\"></script>\n"); - wholeScript.append("<script type=\"text/javascript\" src=\""+ AppUtils.getBaseFolderURL() +"dy3/js/moment.min.js\"></script>\n"); - wholeScript.append("<script type=\"text/javascript\" src=\""+ AppUtils.getBaseFolderURL() +"dy3/js/interaction.min.js\"></script>\n"); - - wholeScript.append("<script type=\"text/javascript\">\n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("30min")) { - wholeScript.append("var click=2;\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) { - wholeScript.append("var click=3;\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("daily")) { - wholeScript.append("var click=3;\n"); - } else - wholeScript.append("var click=3;\n"); - //wholeScript.append(" var click=0;\n"); - wholeScript.append(" function downV3(event, g, context) { \n"); - wholeScript.append(" context.initializeMouseDown(event, g, context); \n"); - wholeScript.append(" if (event.altKey || event.shiftKey) { \n"); - wholeScript.append(" var minDate = g.xAxisRange()[0]; \n"); - wholeScript.append(" var maxDate = g.xAxisRange()[1]; \n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("daily")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*24)) > 6) \n"); - wholeScript.append(" Dygraph.startZoom(event, g, context); \n"); - } else if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) > 6) \n"); - wholeScript.append(" Dygraph.startZoom(event, g, context); \n"); - } else if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("30min")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*2)) > 6) \n"); - wholeScript.append(" Dygraph.startZoom(event, g, context); \n"); - - } else { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) > 6) \n"); - wholeScript.append(" Dygraph.startZoom(event, g, context); \n"); - } - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("30min")) { - wholeScript.append(" click=2;\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) { - wholeScript.append(" click=3;\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("daily")) { - wholeScript.append(" click=3;\n"); - } else - wholeScript.append(" click=3;\n"); - wholeScript.append(" } else if (event.ctrlKey) {\n"); - - - wholeScript.append(" click++;\n"); - wholeScript.append(" if(click == 1)\n"); - wholeScript.append(" zoom_custom(3600);\n"); - wholeScript.append(" else if(click == 2)\n"); - wholeScript.append(" zoom_custom(12*3600);\n"); - wholeScript.append(" else if(click == 3)\n"); - wholeScript.append(" zoom_custom(86400);\n"); - wholeScript.append(" else if (click == 4)\n"); - wholeScript.append(" zoom_custom(7*86400);\n"); - wholeScript.append(" else if (click == 5)\n"); - wholeScript.append(" zoom_custom(30*86400);\n"); - wholeScript.append(" else if (click == 6)\n"); - wholeScript.append(" zoom_custom(90*86400);\n"); - wholeScript.append(" else if (click == 7)\n"); - wholeScript.append(" zoom_custom(180*86400);\n"); - wholeScript.append(" else if (click == 8)\n"); - wholeScript.append(" zoom_custom(365*86400);\n"); - wholeScript.append(" else if (click == 10)\n"); - wholeScript.append(" zoom_custom(5*365*86400);\n"); - wholeScript.append(" else { \n"); - wholeScript.append(" reset();\n"); - wholeScript.append(" }\n"); - //wholeScript.append(" \n"); - wholeScript.append(" } else {\n"); - wholeScript.append(" Dygraph.startPan(event, g, context); \n"); - wholeScript.append(" } \n"); - wholeScript.append(" } \n"); - wholeScript.append("</script>\n "); - wholeScript.append("<style type=\"text/css\">\n"); - wholeScript.append(".annotation {\n"); - wholeScript.append("}"); - wholeScript.append(".dygraph-title {\n"); - wholeScript.append("color: black;\n"); - wholeScript.append("font-weight:bold; \n"); - wholeScript.append("}\n"); - wholeScript.append(".dygraph-axis-label-x { "); - wholeScript.append("-webkit-transform:rotate(-0deg);"); - wholeScript.append("display:block;"); - /*position:absolute; - right:-5px; - top:15px;*/ - wholeScript.append("}\n"); - - int widthInt = 0; - if(nvl(width).length() > 0) { - try { - widthInt = new Integer(width).intValue(); - } catch(Exception ex) { - if(width.endsWith("px")) { - try { - widthInt = new Integer(width.substring(0, width.indexOf("px"))); - } catch (Exception ex1) { - widthInt = 700; - } - } else { - widthInt = 700; - } - } - } else widthInt = 700; - - wholeScript.append(".dygraph-legend {\n"); - wholeScript.append(" left: "+(widthInt-200)+"px !important;\n"); - wholeScript.append(" top: 5px !important;\n"); - wholeScript.append("}\n"); - - wholeScript.append(".nodatadiv {\n"); - wholeScript.append(" display: table-cell;\n"); - wholeScript.append(" width: 700px;\n"); - wholeScript.append(" height:370px;\n"); - wholeScript.append(" text-align:center;\n"); - wholeScript.append(" vertical-align: middle;\n"); - wholeScript.append("}\n"); - wholeScript.append(".nodatainner {\n"); - wholeScript.append(" padding: 10px;\n"); - wholeScript.append("}\n"); - - wholeScript.append("canvas {\n"); - wholeScript.append(" -webkit-touch-callout: none; \n"); - wholeScript.append(" -webkit-user-select: none;\n"); - wholeScript.append(" -khtml-user-select: none;\n"); - wholeScript.append(" -moz-user-select: none;\n"); - wholeScript.append(" user-select: none;\n"); - wholeScript.append(" user-select: none;\n"); - wholeScript.append(" outline: none;\n"); - wholeScript.append(" -webkit-tap-highlight-color: rgba(255, 255, 255, 0); /* mobile webkit */\n"); - wholeScript.append("}\n"); - wholeScript.append("</style>\n"); - wholeScript.append("</head>\n"); - wholeScript.append("<body> \n"); - -/* if(showTitle) - wholeScript.append(" <p align=\"center\"><b> " + (AppUtils.nvl(reportRuntime.getReportTitle()).length()>0?reportRuntime.getReportTitle():reportRuntime.getReportName()) + "</b></p>\n"); -*/ - wholeScript.append(" <table>\n"); - if(showTitle) { - wholeScript.append(" <tr> \n "); - wholeScript.append(" <td> \n "); - wholeScript.append(" <div class=\"dygraph-label dygraph-title\" align=\"center\">"+title+"</div> \n"); - wholeScript.append(" </td> \n "); - } - - wholeScript.append(" </tr> \n "); - - wholeScript.append(" <tr> \n "); - wholeScript.append(" <td> \n "); - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()<=0 || reportRuntime.getLegendPosition().equals("top")) { - wholeScript.append(" <div id=\"labelDiv"+reportRuntime.getReportID()+"\"></div>\n"); - } - wholeScript.append(" <div id=\"message"+reportRuntime.getReportID()+"\"></div> \n"); - wholeScript.append(" </td> \n "); - - wholeScript.append(" </tr> \n "); - wholeScript.append(" <tr>\n"); - wholeScript.append(" <td>\n"); - - int heightInt = 0; - if(nvl(height).length() > 0) { - try { - heightInt = new Integer(height).intValue(); - heightInt -= 50; - } catch(Exception ex) { - if(height.endsWith("px")) { - try { - heightInt = new Integer(height.substring(0, height.indexOf("px"))); - heightInt -= 50; - } catch (Exception ex1) { - heightInt = 420; - } - } else { - heightInt = 420; - } - } - } else heightInt = 420; - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append(" <div id=\"div_g"+reportRuntime.getReportID()+"\" style=\"width:"+ (widthInt-250)+ "px; \n" ); - } else { - wholeScript.append(" <div id=\"div_g"+reportRuntime.getReportID()+"\" style=\"width:"+ (widthInt)+ "px; \n" ); - } - wholeScript.append(" height:"+ heightInt +"px;\"></div> \n"); - wholeScript.append(" </td>\n"); - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append(" <td valign=\"top\">\n"); - wholeScript.append(" <div id=\"labelDiv3716\" valign=\"top\" style=\"width:250px;height:"+ heightInt +"px;\"></div>\n"); - wholeScript.append(" </td>\n"); - } - wholeScript.append(" </tr>\n"); - if(anomalyRec > 0) { - wholeScript.append(" <tr>\n"); - wholeScript.append(" <td>\n"); - wholeScript.append(" <table>\n"); - wholeScript.append(" <tr>\n"); - wholeScript.append(" <td align=\"center\"><font size=\"2px\"><B><align=\"center\">Anomaly Description</align></B></font></td>\n"); - wholeScript.append(" </tr>\n"); - wholeScript.append(" <tr>\n"); - wholeScript.append(" <td><div id=\"list"+reportRuntime.getReportID()+"\" style=\"width:" + widthInt + "px; height:50px;\"></div></td>\n" ); - wholeScript.append(" </tr>\n"); - wholeScript.append(" </table>\n"); - wholeScript.append(" </td>\n"); - wholeScript.append(" </tr>\n"); - } - wholeScript.append(" </table>\n"); - - wholeScript.append(" <script type=\"text/javascript\">\n"); - wholeScript.append(" Dygraph.addEvent(document, \"mousewheel\", function() { lastClickedGraph = null; });\n"); - wholeScript.append(" Dygraph.addEvent(document, \"click\", function() { lastClickedGraph = null; });\n"); - wholeScript.append(" var data = []; \n"); - wholeScript.append(" data = [\n "); - wholeScript.append( dataStrBuf.toString()); - wholeScript.append(" ];\n"); - wholeScript.append(" if(data.length > 0 ) { \n"); - wholeScript.append(" var orig_range = [ data[0][0].valueOf(), data[data.length - 1][0].valueOf() ];\n"); - if(!timeCharts) { - wholeScript.append(" function nameAnnotation(ann) { \n"); - wholeScript.append(" return ann.shortText; \n"); - //wholeScript.append(" var m = moment(ann.x);\n"); - //wholeScript.append(" return \"(\" + ann.series + \", \" + m.format(\"YYYY-MM-DD HH\"); + \")\"; \n"); - wholeScript.append(" }\n"); - wholeScript.append(" anns = [];\n"); - } - wholeScript.append(" var graph_initialized = false;\n"); - wholeScript.append(" if(navigator.platform == 'iPad') { "); - wholeScript.append(" g = new Dygraph(\n"); - wholeScript.append(" document.getElementById(\"div_g"+reportRuntime.getReportID()+"\"),\n"); - //data here - /*wholeScript.append(" [\n"); - wholeScript.append(dataStrBuf.toString()); - wholeScript.append(" ],\n");*/ - wholeScript.append(" data , \n"); - wholeScript.append(" {\n"); - - //Labels here - - dct = null; - StringBuffer labelStrBuf = new StringBuffer(""); - StringBuffer colorsStrBuf = new StringBuffer(""); - StringBuffer visibilityStrBuf = new StringBuffer(""); - int countChartValues = 0; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if((dct.getChartSeq()!=null && dct.getChartSeq() >=0) || AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) { - if(!AppUtils.nvl(dct.getDisplayName()).toLowerCase().equals("anomaly_text")) { - countChartValues++; - labelStrBuf.append("'"+ dct.getDisplayName()+"',"); - if(!AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) - colorsStrBuf.append("'"+ AppUtils.nvl(dct.getChartColor())+"',"); - visibilityStrBuf.append("true,"); - } - } - } - if(labelStrBuf.indexOf(",")!=-1) { - labelStrBuf.deleteCharAt(labelStrBuf.lastIndexOf(",")); - visibilityStrBuf.deleteCharAt(visibilityStrBuf.lastIndexOf(",")); - } - if(colorsStrBuf.indexOf(",")!=-1) - colorsStrBuf.deleteCharAt(colorsStrBuf.lastIndexOf(",")); - //if(showTitle) - //wholeScript.append("title: '" + (AppUtils.nvl(reportRuntime.getReportTitle()).length()>0?reportRuntime.getReportTitle():reportRuntime.getReportName()) + "',\n"); - wholeScript.append("maxNumberWidth:6,\n"); - wholeScript.append("xAxisHeight: 70,\n"); - wholeScript.append("yAxisLabelWidth: 70,\n"); - wholeScript.append("xAxisLabelWidth: 45,\n"); - wholeScript.append("axes: {\n"); - wholeScript.append("x: {\n"); - wholeScript.append(" axisLabelFormatter: function(d, gran) {\n"); - wholeScript.append(" var month = d.getMonth()+1;\n"); - wholeScript.append(" var day = d.getDate();\n"); - wholeScript.append(" var year = d.getFullYear();\n"); - wholeScript.append(" var hour = d.getHours();\n"); - wholeScript.append(" var minutes = d.getMinutes();\n"); - wholeScript.append(" var seconds = d.getSeconds();\n"); - wholeScript.append(" var wholeString = Dygraph.zeropad(month)+'/'+Dygraph.zeropad(day);\n"); - // wholeScript.append(" if(hour >= 0 && minutes > 0 && seconds > 0) {\n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes)+':'+Dygraph.zeropad(seconds);\n"); - //wholeScript.append(" } else if (hour >= 0 && minutes > 0 && seconds == 0) {\n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).length()==0 || AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) - wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes);\n"); - //wholeScript.append(" } else if (hour >= 0 && (minutes >= 0 && seconds > 0)) {\n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes)+':'+Dygraph.zeropad(seconds);\n"); - //wholeScript.append(" } else if (hour >= 0) { \n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour); \n"); - //wholeScript.append(" } \n"); - wholeScript.append(" return wholeString; \n"); - wholeScript.append(" },\n"); - wholeScript.append(" ticker: function (a, b, pixels, opts, dygraph, vals) { \n "); - wholeScript.append(" if(((b-a)/(1000*60*60)) <= 6) { \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.THIRTY_MINUTELY, opts, dygraph); \n"); - wholeScript.append(" } else if(((b-a)/(1000*60*60)) <= 12) { \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.HOURLY, opts, dygraph); \n"); - wholeScript.append(" } else if (((b-a)/(1000*60*60)) <= 25) \n "); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.TWO_HOURLY, opts, dygraph); \n "); - wholeScript.append(" else if(((b-a)/(1000*60*60)) <= 78) \n "); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.SIX_HOURLY, opts, dygraph); \n "); - wholeScript.append(" else if(((b-a)/(1000*60*60*24)) <= 12)\n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.DAILY, opts, dygraph); \n"); - wholeScript.append(" else if(((b-a)/(1000*60*60*24)) <= 90) \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.WEEKLY, opts, dygraph); \n"); - wholeScript.append(" else \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.MONTHLY, opts, dygraph); \n"); - wholeScript.append(" }, \n"); - wholeScript.append(" valueFormatter: function(ms) { \n"); - wholeScript.append(" return new Date(ms).strftime(\"%m/%d/%Y %H:%M\"); \n"); - wholeScript.append( " }\n" ); - wholeScript.append(" }\n"); - wholeScript.append("},\n"); - wholeScript.append(" interactionModel : { \n"); - wholeScript.append(" 'mousedown' : downV4,\n"); - wholeScript.append(" touchstart : newDygraphTouchstart,\n"); - wholeScript.append(" touchend : Dygraph.defaultInteractionModel.touchend,\n"); - wholeScript.append(" touchmove : Dygraph.defaultInteractionModel.touchmove\n"); - //wholeScript.append(" 'dblclick' : dblClickV3,\n"); - //wholeScript.append(" 'mousewheel' : scrollV3\n"); - - /*wholeScript.append(" 'mousedown' : downV3,\n"); - wholeScript.append(" 'mousemove' : moveV3,\n"); - wholeScript.append(" 'mouseup' : upV3,\n"); - wholeScript.append(" 'click' : clickV3,\n"); - wholeScript.append(" 'dblclick' : dblClickV3,\n"); - wholeScript.append(" 'mousewheel' : scrollV3\n");*/ - wholeScript.append("},\n"); - /*wholeScript.append(" zoomCallback: function(minDate, maxDate, yRanges) { \n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("daily")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*24)) < 6) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(6*24*60);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) <= 6) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(360);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("30min")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) <= 3) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(180);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("weekly")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*24)) < 7) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(7*24*60);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } - wholeScript.append(" } else {\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel : {\n"); - wholeScript.append(" 'mousedown' : downV3,\n"); - wholeScript.append(" 'mousemove' : moveV3,\n"); - wholeScript.append(" 'mouseup' : upV3,\n"); - wholeScript.append(" 'click' : clickV3,\n"); - wholeScript.append(" 'dblclick' : dblClickV3,\n"); - wholeScript.append(" 'mousewheel' : scrollV3\n"); - wholeScript.append(" }\n"); - wholeScript.append(" });\n"); - wholeScript.append(" } \n"); - wholeScript.append(" } ,\n");*/ - wholeScript.append("dateWindow: ["+minDate+", "+maxDate+"],\n"); - wholeScript.append("labels: ["+ labelStrBuf +"],\n"); - wholeScript.append("labelsDiv: \"labelDiv"+reportRuntime.getReportID()+"\",\n"); - wholeScript.append("labelsShowZeroValues: true,\n"); - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append("labelsSeparateLines: true,\n"); - } - wholeScript.append("labelsDivWidth: 200,\n"); - - wholeScript.append("animatedZooms: true,\n"); - wholeScript.append("strokeWidth: 3.0,\n"); - wholeScript.append("strokeBorderWidth: 2.0,\n"); - /*wholeScript.append(" labelsDivStyles: { \n"); - wholeScript.append(" 'backgroundColor': 'rgba(200, 200, 255, 0.75)',\n"); - wholeScript.append(" 'padding': '4px',\n"); - wholeScript.append(" 'border': '1px solid black',\n"); - wholeScript.append(" 'borderRadius': '10px',\n"); - wholeScript.append(" 'boxShadow': '4px 4px 4px #888',\n"); - wholeScript.append(" 'width': '50px'\n"); - wholeScript.append("}, \n"); - */ - wholeScript.append("visibility: ["+ visibilityStrBuf +"],\n"); - if(colorsStrBuf.length() > 0 && colorsStrBuf.length()>=(countChartValues*3+5)) - wholeScript.append("colors: ["+ colorsStrBuf +"],\n"); - - wholeScript.append(" legend: 'always', \n"); - //Yaxis label here - wholeScript.append(" ylabel: '"+ chartLeftAxisLabel +"' , \n"); - - //Xaxis label here - wholeScript.append(" xlabel: '"+ xAxisLabel +"' , \n"); - - //draw points - wholeScript.append(" drawPoints: true, \n"); - - //stacked graph - wholeScript.append(" stackedGraph: false, \n"); - - dct = null; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(!AppUtils.nvl(dct.getDisplayName()).toLowerCase().equals("anomaly_text")) { - if(dct.getChartSeq()!=null && dct.getChartSeq() >=0) { - wholeScript.append(" '"+ dct.getDisplayName() + "': {\n"); - if(AppUtils.nvl(dct.getChartLineType()).length()>0) - wholeScript.append(" strokePattern: Dygraph.DASHED_LINE,\n"); - if(dct.isIsRangeAxisFilled()!=null && dct.isIsRangeAxisFilled().booleanValue()) { - wholeScript.append(" fillGraph: true\n"); - } - wholeScript.append(" },\n"); - } - } - } - } - -/* //each labels - wholeScript.append(" 'Forecast': {\n"); - - //if dashed line - wholeScript.append(" strokePattern: Dygraph.DASHED_LINE,\n"); - - //if fillable - wholeScript.append(" fillGraph: true\n"); - - // close each labels - wholeScript.append(" }\n"); -*/ - // callback method - if(anomalyRec > 0) { - wholeScript.append(" drawCallback: function(g, is_initial) { \n"); - wholeScript.append(" if (is_initial) { \n"); - wholeScript.append(" graph_initialized = true; \n"); - wholeScript.append(" if (anns.length > 0) { \n"); - wholeScript.append(" g.setAnnotations(anns); \n"); - wholeScript.append(" }\n"); - wholeScript.append(" }\n"); - - wholeScript.append(" var anns1 = g.annotations();\n"); - //wholeScript.append(" var html = \"\";\n"); - wholeScript.append(" var html = \"<select id='x' size='1' style='width: "+ widthInt +"px; font-family : courier; font-size:8pt; font-weight:bold;'>\";\n"); - wholeScript.append(" for (var i = anns1.length-1; i >= 0 ; i--) {\n"); - wholeScript.append(" var name = nameAnnotation(anns1[i]);\n"); - //wholeScript.append(" html += \"<span id='\" + name + \"'>\"\n"); - wholeScript.append(" if(i==anns1.length-1)\n"); - wholeScript.append(" html += \"<option value='\" + name + \"' selected ><font size=1>\" \n"); - wholeScript.append(" else \n"); - wholeScript.append(" html += \"<option value='\" + name + \"'><font size=1>\" \n"); - wholeScript.append(" html += name \n"); - //wholeScript.append(" html += name + \": \" + (anns1[i].shortText || '(icon)')\n"); - //wholeScript.append(" html += \" -> \" + anns1[i].text + \"</span><br/>\";\n"); - wholeScript.append(" html += \" : \" + anns1[i].text + \"</font></option>\";\n"); - wholeScript.append(" }\n"); - wholeScript.append(" html += \"</select>\" \n"); - wholeScript.append(" document.getElementById(\"list"+reportRuntime.getReportID()+"\").innerHTML = html;\n"); - wholeScript.append(" }\n"); - - - wholeScript.append(" }\n"); - wholeScript.append(" )\n"); - - //push annotations - wholeScript.append(annotationsStrBuf.toString()); - - wholeScript.append(" if (graph_initialized) {\n"); - wholeScript.append(" g.setAnnotations(anns);\n"); - wholeScript.append(" } \n"); - //upate handler script - - wholeScript.append(" var saveBg = '';\n"); - wholeScript.append(" var num = 0;\n"); - wholeScript.append(" g.updateOptions( {\n"); - wholeScript.append(" annotationMouseOverHandler: function(ann) { \n"); - //wholeScript.append(" document.getElementById(nameAnnotation(ann)).style.fontWeight = 'bold';\n"); - //wholeScript.append(" saveBg = ann.div.style.backgroundColor;\n"); - //wholeScript.append(" ann.div.style.backgroundColor = '#ddd';\n"); - wholeScript.append(" var selectobject = document.getElementById(\"x\");\n"); - wholeScript.append(" for(var i=0; i<selectobject.length;i++) {\n "); - wholeScript.append(" if(selectobject.options[i].value == nameAnnotation(ann)) {\n "); - wholeScript.append(" selectobject.options[i].selected = true; \n "); - wholeScript.append(" } "); - wholeScript.append(" } "); - - wholeScript.append(" },\n"); - wholeScript.append(" annotationMouseOutHandler: function(ann) {\n"); - wholeScript.append(" document.getElementById(nameAnnotation(ann)).style.fontWeight = 'normal';\n"); - wholeScript.append(" ann.div.style.backgroundColor = saveBg;\n"); - //wholeScript.append(" var selectobject = document.getElementById(\"x\");\n"); - //wholeScript.append(" for(var i=0; i<selectobject.length;i++) {\n "); - //wholeScript.append(" if(selectobject.options[i].value == nameAnnotation(ann)) {\n "); - //wholeScript.append(" selectobject.options[i].selected = false; \n "); - //wholeScript.append(" } "); - //wholeScript.append(" } "); - - wholeScript.append(" }\n"); - } - wholeScript.append(" });\n"); - - //Other devices - wholeScript.append("} else { \n"); - - wholeScript.append(" g = new Dygraph(\n"); - wholeScript.append(" document.getElementById(\"div_g"+reportRuntime.getReportID()+"\"),\n"); - //data here - /*wholeScript.append(" [\n"); - wholeScript.append(dataStrBuf.toString()); - wholeScript.append(" ],\n");*/ - wholeScript.append(" data , \n"); - wholeScript.append(" {\n"); - - //Labels here - - dct = null; - labelStrBuf = new StringBuffer(""); - colorsStrBuf = new StringBuffer(""); - visibilityStrBuf = new StringBuffer(""); - countChartValues = 0; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if((dct.getChartSeq()!=null && dct.getChartSeq() >=0) || AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) { - if(!AppUtils.nvl(dct.getDisplayName()).toLowerCase().equals("anomaly_text")) { - countChartValues++; - labelStrBuf.append("'"+ dct.getDisplayName()+"',"); - if(!AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) - colorsStrBuf.append("'"+ AppUtils.nvl(dct.getChartColor())+"',"); - visibilityStrBuf.append("true,"); - } - } - } - if(labelStrBuf.indexOf(",")!=-1) { - labelStrBuf.deleteCharAt(labelStrBuf.lastIndexOf(",")); - visibilityStrBuf.deleteCharAt(visibilityStrBuf.lastIndexOf(",")); - } - if(colorsStrBuf.indexOf(",")!=-1) - colorsStrBuf.deleteCharAt(colorsStrBuf.lastIndexOf(",")); - //if(showTitle) - //wholeScript.append("title: '" + (AppUtils.nvl(reportRuntime.getReportTitle()).length()>0?reportRuntime.getReportTitle():reportRuntime.getReportName()) + "',\n"); - wholeScript.append("maxNumberWidth:6,\n"); - wholeScript.append("xAxisHeight: 70,\n"); - wholeScript.append("yAxisLabelWidth: 70,\n"); - wholeScript.append("xAxisLabelWidth: 45,\n"); - wholeScript.append("axes: {\n"); - wholeScript.append("x: {\n"); - wholeScript.append(" axisLabelFormatter: function(d, gran) {\n"); - wholeScript.append(" var month = d.getMonth()+1;\n"); - wholeScript.append(" var day = d.getDate();\n"); - wholeScript.append(" var year = d.getFullYear();\n"); - wholeScript.append(" var hour = d.getHours();\n"); - wholeScript.append(" var minutes = d.getMinutes();\n"); - wholeScript.append(" var seconds = d.getSeconds();\n"); - wholeScript.append(" var wholeString = Dygraph.zeropad(month)+'/'+Dygraph.zeropad(day);\n"); - // wholeScript.append(" if(hour >= 0 && minutes > 0 && seconds > 0) {\n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes)+':'+Dygraph.zeropad(seconds);\n"); - //wholeScript.append(" } else if (hour >= 0 && minutes > 0 && seconds == 0) {\n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).length()==0 || AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) - wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes);\n"); - //wholeScript.append(" } else if (hour >= 0 && (minutes >= 0 && seconds > 0)) {\n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour) + ':'+Dygraph.zeropad(minutes)+':'+Dygraph.zeropad(seconds);\n"); - //wholeScript.append(" } else if (hour >= 0) { \n"); - //wholeScript.append(" wholeString += ' ' + Dygraph.zeropad(hour); \n"); - //wholeScript.append(" } \n"); - wholeScript.append(" return wholeString; \n"); - wholeScript.append(" },\n"); - wholeScript.append(" ticker: function (a, b, pixels, opts, dygraph, vals) { \n "); - wholeScript.append(" if(((b-a)/(1000*60*60)) <= 6) { \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.THIRTY_MINUTELY, opts, dygraph); \n"); - wholeScript.append(" } else if(((b-a)/(1000*60*60)) <= 12) { \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.HOURLY, opts, dygraph); \n"); - wholeScript.append(" } else if (((b-a)/(1000*60*60)) <= 25) \n "); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.TWO_HOURLY, opts, dygraph); \n "); - wholeScript.append(" else if(((b-a)/(1000*60*60)) <= 78) \n "); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.SIX_HOURLY, opts, dygraph); \n "); - wholeScript.append(" else if(((b-a)/(1000*60*60*24)) <= 12)\n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.DAILY, opts, dygraph); \n"); - wholeScript.append(" else if(((b-a)/(1000*60*60*24)) <= 90) \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.WEEKLY, opts, dygraph); \n"); - wholeScript.append(" else \n"); - wholeScript.append(" return Dygraph.getDateAxis(a, b, Dygraph.MONTHLY, opts, dygraph); \n"); - wholeScript.append(" }, \n"); - wholeScript.append(" valueFormatter: function(ms) { \n"); - wholeScript.append(" return new Date(ms).strftime(\"%m/%d/%Y %H:%M\"); \n"); - wholeScript.append( " }\n" ); - wholeScript.append(" }\n"); - wholeScript.append("},\n"); - wholeScript.append(" interactionModel : { \n"); - - wholeScript.append(" 'mousedown' : downV3,\n"); - wholeScript.append(" 'mousemove' : moveV3,\n"); - wholeScript.append(" 'mouseup' : upV3,\n"); - wholeScript.append(" 'click' : clickV3,\n"); - wholeScript.append(" 'dblclick' : dblClickV3,\n"); - wholeScript.append(" 'mousewheel' : scrollV3\n"); - wholeScript.append("},\n"); - wholeScript.append(" zoomCallback: function(minDate, maxDate, yRanges) { \n"); - if(AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("daily")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*24)) < 6) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(6*24*60);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("hourly")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) <= 6) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(360);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("30min")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60)) <= 3) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(180);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } else if (AppUtils.nvl(reportRuntime.getTimeAxisType()).equals("weekly")) { - wholeScript.append(" if(((maxDate-minDate)/(1000*60*60*24)) < 7) { \n"); - wholeScript.append(" maxDate = new Date(minDate).setMinutes(7*24*60);\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel: {},\n"); - wholeScript.append(" dateWindow: [minDate, maxDate]\n"); - wholeScript.append(" });\n"); - } - wholeScript.append(" } else {\n"); - wholeScript.append(" g.updateOptions({\n"); - wholeScript.append(" interactionModel : {\n"); - wholeScript.append(" 'mousedown' : downV3,\n"); - wholeScript.append(" 'mousemove' : moveV3,\n"); - wholeScript.append(" 'mouseup' : upV3,\n"); - wholeScript.append(" 'click' : clickV3,\n"); - wholeScript.append(" 'dblclick' : dblClickV3,\n"); - wholeScript.append(" 'mousewheel' : scrollV3\n"); - wholeScript.append(" }\n"); - wholeScript.append(" });\n"); - wholeScript.append(" } \n"); - wholeScript.append(" } ,\n"); - wholeScript.append("dateWindow: ["+minDate+", "+maxDate+"],\n"); - wholeScript.append("labels: ["+ labelStrBuf +"],\n"); - wholeScript.append("labelsDiv: \"labelDiv"+reportRuntime.getReportID()+"\",\n"); - wholeScript.append("labelsShowZeroValues: true,\n"); - if(AppUtils.nvl(reportRuntime.getLegendPosition()).length()>=0 && reportRuntime.getLegendPosition().equals("right")) { - wholeScript.append("labelsSeparateLines: true,\n"); - } - wholeScript.append("labelsDivWidth: 200,\n"); - - - wholeScript.append("animatedZooms: true,\n"); - wholeScript.append("strokeWidth: 3.0,\n"); - wholeScript.append("strokeBorderWidth: 2.0,\n"); - - /*wholeScript.append(" labelsDivStyles: { \n"); - wholeScript.append(" 'backgroundColor': 'rgba(200, 200, 255, 0.75)',\n"); - wholeScript.append(" 'padding': '4px',\n"); - wholeScript.append(" 'border': '1px solid black',\n"); - wholeScript.append(" 'borderRadius': '10px',\n"); - wholeScript.append(" 'boxShadow': '4px 4px 4px #888',\n"); - wholeScript.append(" 'width': '50px'\n"); - wholeScript.append("}, \n"); - */ - wholeScript.append("visibility: ["+ visibilityStrBuf +"],\n"); - if(colorsStrBuf.length() > 0 && colorsStrBuf.length()>=(countChartValues*3+5)) - wholeScript.append("colors: ["+ colorsStrBuf +"],\n"); - - wholeScript.append(" legend: 'always', \n"); - //Yaxis label here - wholeScript.append(" ylabel: '"+ chartLeftAxisLabel +"' , \n"); - - //Xaxis label here - wholeScript.append(" xlabel: '"+ xAxisLabel +"' , \n"); - - - //draw points - wholeScript.append(" drawPoints: true, \n"); - - //stacked graph - wholeScript.append(" stackedGraph: false, \n"); - - dct = null; - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - if(!(nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(!AppUtils.nvl(dct.getDisplayName()).toLowerCase().equals("anomaly_text")) { - if(dct.getChartSeq()!=null && dct.getChartSeq() >=0) { - wholeScript.append(" '"+ dct.getDisplayName() + "': {\n"); - if(AppUtils.nvl(dct.getChartLineType()).length()>0) - wholeScript.append(" strokePattern: Dygraph.DASHED_LINE,\n"); - if(dct.isIsRangeAxisFilled()!=null && dct.isIsRangeAxisFilled().booleanValue()) { - wholeScript.append(" fillGraph: true\n"); - } - wholeScript.append(" },\n"); - } - } - } - } - -/* //each labels - wholeScript.append(" 'Forecast': {\n"); - - //if dashed line - wholeScript.append(" strokePattern: Dygraph.DASHED_LINE,\n"); - - //if fillable - wholeScript.append(" fillGraph: true\n"); - - // close each labels - wholeScript.append(" }\n"); -*/ - // callback method - if(anomalyRec > 0) { - wholeScript.append(" drawCallback: function(g, is_initial) { \n"); - wholeScript.append(" if (is_initial) { \n"); - wholeScript.append(" graph_initialized = true; \n"); - wholeScript.append(" if (anns.length > 0) { \n"); - wholeScript.append(" g.setAnnotations(anns); \n"); - wholeScript.append(" }\n"); - wholeScript.append(" }\n"); - - wholeScript.append(" var anns1 = g.annotations();\n"); - //wholeScript.append(" var html = \"\";\n"); - wholeScript.append(" var html = \"<select id='x' size='1' style='width: "+ widthInt +"px; font-family : courier; font-size:8pt; font-weight:bold;'>\";\n"); - wholeScript.append(" for (var i = anns1.length-1; i >= 0 ; i--) {\n"); - wholeScript.append(" var name = nameAnnotation(anns1[i]);\n"); - //wholeScript.append(" html += \"<span id='\" + name + \"'>\"\n"); - wholeScript.append(" if(i==anns1.length-1)\n"); - wholeScript.append(" html += \"<option value='\" + name + \"' selected ><font size=1>\" \n"); - wholeScript.append(" else \n"); - wholeScript.append(" html += \"<option value='\" + name + \"'><font size=1>\" \n"); - wholeScript.append(" html += name \n"); - //wholeScript.append(" html += name + \": \" + (anns1[i].shortText || '(icon)')\n"); - //wholeScript.append(" html += \" -> \" + anns1[i].text + \"</span><br/>\";\n"); - wholeScript.append(" html += \" : \" + anns1[i].text + \"</font></option>\";\n"); - wholeScript.append(" }\n"); - wholeScript.append(" html += \"</select>\" \n"); - wholeScript.append(" document.getElementById(\"list"+reportRuntime.getReportID()+"\").innerHTML = html;\n"); - wholeScript.append(" }\n"); - - - wholeScript.append(" }\n"); - wholeScript.append(" )\n"); - - //push annotations - wholeScript.append(annotationsStrBuf.toString()); - - wholeScript.append(" if (graph_initialized) {\n"); - wholeScript.append(" g.setAnnotations(anns);\n"); - wholeScript.append(" } \n"); - //upate handler script - - wholeScript.append(" var saveBg = '';\n"); - wholeScript.append(" var num = 0;\n"); - wholeScript.append(" g.updateOptions( {\n"); - wholeScript.append(" annotationMouseOverHandler: function(ann) { \n"); - //wholeScript.append(" document.getElementById(nameAnnotation(ann)).style.fontWeight = 'bold';\n"); - //wholeScript.append(" saveBg = ann.div.style.backgroundColor;\n"); - //wholeScript.append(" ann.div.style.backgroundColor = '#ddd';\n"); - wholeScript.append(" var selectobject = document.getElementById(\"x\");\n"); - wholeScript.append(" for(var i=0; i<selectobject.length;i++) {\n "); - wholeScript.append(" if(selectobject.options[i].value == nameAnnotation(ann)) {\n "); - wholeScript.append(" selectobject.options[i].selected = true; \n "); - wholeScript.append(" } "); - wholeScript.append(" } "); - - wholeScript.append(" },\n"); - wholeScript.append(" annotationMouseOutHandler: function(ann) {\n"); - //wholeScript.append(" document.getElementById(nameAnnotation(ann)).style.fontWeight = 'normal';\n"); - wholeScript.append(" ann.div.style.backgroundColor = saveBg;\n"); - //wholeScript.append(" var selectobject = document.getElementById(\"x\");\n"); - //wholeScript.append(" for(var i=0; i<selectobject.length;i++) {\n "); - //wholeScript.append(" if(selectobject.options[i].value == nameAnnotation(ann)) {\n "); - //wholeScript.append(" selectobject.options[i].selected = false; \n "); - //wholeScript.append(" } "); - //wholeScript.append(" } "); - - wholeScript.append(" }\n"); - } - wholeScript.append(" });\n"); - - - wholeScript.append("} \n"); - //} - wholeScript.append("} else {\n"); - wholeScript.append("document.getElementById(\"message"+ reportRuntime.getReportID()+"\").display = \"none\";\n"); - wholeScript.append("document.getElementById(\"labelDiv"+ reportRuntime.getReportID()+"\").display=\"none\";\n"); - wholeScript.append("document.getElementById(\"div_g"+reportRuntime.getReportID()+"\").display=\"none\";\n"); - - wholeScript.append("document.getElementById(\"div_g"+reportRuntime.getReportID()+"\").innerHTML = \"<div id='noData'><b>No Data Available</b></div>\";\n"); - wholeScript.append("document.getElementById(\"div_g"+reportRuntime.getReportID()+"\").className=\"nodatadiv\";\n"); - wholeScript.append("document.getElementById(\"nodata\").className=\"nodatainner\";\n"); - if(!timeCharts) - wholeScript.append("document.getElementById(\"list"+reportRuntime.getReportID()+"\").display=\"none\";\n"); - wholeScript.append("}\n"); - wholeScript.append(" </script>\n"); - wholeScript.append(" </body>\n"); - wholeScript.append("</html>"); - - - } else if (chartType.equals(AppConstants.GT_SCATTER)) { - - wholeScript.append("<link href=\""+ AppUtils.getBaseFolderURL() +"d3/css/nv.d3.css\" rel=\"stylesheet\" type=\"text/css\">\n"); - wholeScript.append("<style>\n " + - " body { \n" + - " overflow-y:scroll; \n" + - " } \n" + - " text { \n" + - " font: 12px sans-serif; \n" + - " } \n" + - " tr.z-row-over > td.z-row-inner, tr.z-row-over > .z-cell {" + - " background-color: rgb(255, 255, 255); "+ - "} "+ - " svg { display: block; } " + - " #chart1 svg { \n" + - " height: 420px; \n" + - " width: 800px; \n" + - " min-width: 100px; \n" + - " min-height: 100px; \n" + - " } \n" + - - " </style> \n" ); - wholeScript.append("<body> \n"); - wholeScript.append("<div id=\"chart1\"><svg></svg></div>"); - //js files - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/d3.v2.js\"></script>\n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/nv.d3.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/tooltip.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/utils.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/legend.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/axis.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/distribution.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/scatter.js\"></script> \n"); - wholeScript.append("<script src=\""+ AppUtils.getBaseFolderURL() +"d3/js/models/scatterChart.js\"></script> \n"); - wholeScript.append("<script> \n"); - wholeScript.append("nv.addGraph(function() { \n" + - " var width1=900, height1=220; \n" + - " var chart = nv.models.scatterChart() \n" + - " .showDistX(true) \n" + - " .showDistY(true) \n" + - " .useVoronoi(true) \n" + - " .color(d3.scale.category10().range()); \n" + -/* " .width(width1) \n" + - " .height(height1); \n" + -*/ " chart.xAxis\n" + - " .axisLabel('" +legendColumnName + "')\n" + - " .tickFormat(d3.format('.02f'));\n" + - " chart.yAxis\n" + - " .axisLabel('" + chartLeftAxisLabel + "')\n" + - " .tickFormat(d3.format('.02f'));\n" + - " d3.select('#chart1 svg') \n" + - " .datum(getData()) \n" ); - if(animation) - wholeScript.append(" .transition().duration(1200) \n" ); -/* " .attr(\"width\", width1) \n" + - " .attr(\"height\", height1) \n" + -*/ wholeScript.append(" .call(chart); \n" + - " nv.utils.windowResize(chart.update);\n"+ - "return chart; \n" + - "}); \n"); - - String dateStr = ""; - Object uniqueElements [] = null; - TreeSet ts = new TreeSet(); - for (int i = 0; i < ds.getRowCount(); i++) { - dateStr = ds.getString(i, 2); - if(dateStr.length()>0) - ts.add(dateStr); - } - SortedSet s = Collections.synchronizedSortedSet(ts); - uniqueElements = s.toArray(); - - wholeScript.append(" function getData() { \n " + - " var data = [];\n "); - for (int i = 0; i < uniqueElements.length; i++) { - wholeScript.append(" data.push( {key:'"+ uniqueElements[i]+ "', values:[]})\n"); - } - - - for (int i = 0; i < ds.getRowCount(); i++) { - for (int k = 0; k < uniqueElements.length; k++) { - if(ds.getString(i, 2).equals(uniqueElements[k])) { - wholeScript.append("data["+k+"].values.push({x:"+ ds.getString(i, 1) +",y:"+ds.getString(i, 3) + ", size: Math.random() });\n"); - } - } - } - - wholeScript.append("return data; } </script></body>\n"); - } else if (chartType.equals(AppConstants.GT_HIERARCHICAL_SUNBURST)) { - - StringBuffer dataStr = new StringBuffer(""); - StringBuffer groupBuffer = new StringBuffer(""); - StringBuffer s = new StringBuffer(""); - dataStr.append("{"); - dataStr.append(" \"ss4262\":{\n"); - String mid = ""; - String mid_old = ""; - String level = "-1"; - String level_old = "-1"; - String eid = ""; - for (int i = 0; i < ds.getRowCount(); i++) { - mid = ds.getString(i, "mid"); - level = ds.getString(i, "level1"); - eid = ds.getString(i, "eid"); - if(mid.equals(mid_old)) { - dataStr.append("\""+ eid +"\": 9956,\n"); - } else { - if(dataStr.lastIndexOf(",")!= -1) - dataStr.deleteCharAt(dataStr.lastIndexOf(",")); - //if(Integer.parseInt(level_old)==Integer.parseInt(level)) - //dataStr.append("},\n"); - if (Integer.parseInt(level_old)<Integer.parseInt(level)) - dataStr.append("},\n"); - dataStr.append("\""+ mid +"\": { \n"); - } - - mid_old = mid; - level_old = level; - } - if(dataStr.toString().endsWith(",")) - dataStr.deleteCharAt(dataStr.lastIndexOf(",")); - dataStr.append("}\n"); - dataStr.append("}\n"); - try { - String formattedReportName = new HtmlStripper().stripSpecialCharacters(reportRuntime.getReportName()); - String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new java.util.Date()); - String filename=formattedReportName+formattedDate+user_id+".json"; - String filenamepath = AppUtils.getExcelTemplatePath()+"../../json/"+filename; - System.out.println("filenamepath " + filenamepath); - BufferedWriter out = new BufferedWriter(new FileWriter(filenamepath)); - out.write(dataStr.toString()); - out.close(); - request.getSession().setAttribute("jsonFileName", filename); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Exception "); - } - } else if (chartType.equals(AppConstants.GT_HIERARCHICAL)) { - - StringBuffer dataStr = new StringBuffer(""); - StringBuffer groupBuffer = new StringBuffer(""); - StringBuffer s = new StringBuffer(""); - dataStr.append("{"); - dataStr.append(" \"groups\":["); - - for (int i = 0; i < ds.getRowCount(); i++) { - if(ds.getString(i,"group_ind").equals("Y")) { - groupBuffer.append(" { \"name\": \""+ ds.getString(i,"ei1") +"\" },\n"); - } - - } - groupBuffer.deleteCharAt(groupBuffer.lastIndexOf(",")); - dataStr.append(groupBuffer.toString()); - dataStr.append("],"); - dataStr.append("\"nodes\":["); - int rowCount = ds.getRowCount(); - for (int i = 0; i < ds.getRowCount(); i++) { - s.append("{ \"name\": \""+ ds.getString(i,"ei1") +"\" , \"group\":"+ ds.getString(i,"groups") +", \"level\":2 }"); - if (i < (rowCount-1)) s.append(","); - dataStr.append(s); - s = new StringBuffer(""); - } - - dataStr.append("],"); - dataStr.append("\"links\":["); - for (int i = 0; i < ds.getRowCount(); i++) { - s.append("{ \"source\": "+ ds.getString(i,"source") +" , \"target\":"+ ds.getString(i,"target") +", \"value\":2 }"); - if (i < (rowCount-1)) s.append(","); - dataStr.append(s); - s = new StringBuffer(""); - } - dataStr.append("]}"); - try { - String formattedReportName = new HtmlStripper().stripSpecialCharacters(reportRuntime.getReportName()); - String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new java.util.Date()); - String filename=formattedReportName+formattedDate+user_id+".json"; - String filenamepath = AppUtils.getExcelTemplatePath()+"../../json/"+filename; - System.out.println("filenamepath " + filenamepath); - BufferedWriter out = new BufferedWriter(new FileWriter(filenamepath)); - out.write(dataStr.toString()); - out.close(); - request.getSession().setAttribute("jsonFileName", filename); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Exception "); - } - } - - } - } - try { - BufferedWriter out = new BufferedWriter(new FileWriter("test.txt")); - out.write(wholeScript.toString()); - out.close(); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Exception "); - } - return wholeScript.toString(); - } - - public String nvl(String s) { - return (s == null) ? "" : s; - } - - public String nvl(String s, String sDefault) { - return nvl(s).equals("") ? sDefault : s; - } - - public static String nvls(String s) { - return (s == null) ? "" : s; - } - - public static String nvls(String s, String sDefault) { - return nvls(s).equals("") ? sDefault : s; - } - - public boolean getFlagInBoolean(String s) { - return nvl(s).toUpperCase().startsWith("Y") || nvl(s).toLowerCase().equals("true"); - } - - public DataSet loadChartData(String userId, HttpServletRequest request) throws RaptorException { - if (nvl(getChartType()).length() == 0) - return null; - //TODO: display chart function to be added. - //if (!getDisplayChart()) - // return null; - - String sql = null; - sql = generateChartSQL(userId, request); - logger.debug(EELFLoggerDelegate.debugLogger, ("SQL generated " + sql)); - String dbInfo = reportRuntime.getDBInfo(); - DataSet ds = ConnectionUtils.getDataSet(sql, dbInfo); - if(ds.getRowCount()<=0) { - logger.debug(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - logger.debug(EELFLoggerDelegate.debugLogger, (getChartType().toUpperCase()+" - " + "Report ID : " + reportRuntime.getReportID() + " DATA IS EMPTY" )); - logger.debug(EELFLoggerDelegate.debugLogger, ("QUERY - " + sql)); - logger.debug(EELFLoggerDelegate.debugLogger, ("********************************************************************************")); - } - - return ds; - } // loadChartData - - public String generateChartSQL(String userId, HttpServletRequest request ) throws RaptorException { - List reportCols = reportRuntime.getAllColumns(); - List chartValueCols = getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null); // parameter is 0 has this requires all columns. - String reportSQL = reportRuntime.getWholeSQL(); - - //Add order by clause - Pattern re1 = Pattern.compile("(^[\r\n]*|([\\s]))[Oo][Rr][Dd][Ee][Rr](.*?[^\r\n]*)[Bb][Yy]",Pattern.DOTALL); - //Pattern re1 = Pattern.compile("order(.*?[^\r\n]*)by", Pattern.DOTALL); - Matcher matcher = re1.matcher(reportSQL); - //Pattern re1 = Pattern.compile("(^[\r\n]*|([\\s]))[Oo][Rr][Dd][Ee][Rr][Tt](.*?[^\r\n]*)[Bb][Yy]",Pattern.DOTALL); - //int startPoint = sql.length()-30; - - reportSQL = reportSQL + " "; - reportSQL = Pattern.compile("(^[\r\n]*|([\\s]))[Ss][Ee][Ll][Ee][Cc][Tt]([\r\n]*|[\\s]*)",Pattern.DOTALL).matcher(reportSQL).replaceAll(" SELECT "); - //reportSQL = Pattern.compile("(^[\r\n]*|([\\s]))[Ff][Rr][Oo][Mm]([\r\n]*|[\\s]*)",Pattern.DOTALL).matcher(reportSQL).replaceAll(" FROM "); - reportSQL = Pattern.compile("(^[\r\n]*|([\\s]))[Ww][Hh][Ee][Rr][Ee]([\r\n]*|[\\s]*)",Pattern.DOTALL).matcher(reportSQL).replaceAll(" WHERE "); - reportSQL = Pattern.compile("(^[\r\n]*|([\\s]))[Ww][Hh][Ee][Nn]([\r\n]*|[\\s]*)",Pattern.DOTALL).matcher(reportSQL).replaceAll(" WHEN "); - reportSQL = Pattern.compile("(^[\r\n]*|([\\s]))[Aa][Nn][Dd]([\r\n]*|[\\s]*)",Pattern.DOTALL).matcher(reportSQL).replaceAll(" AND "); - - if(!reportRuntime.getReportType().equals(AppConstants.RT_HIVE)) { - int startPoint = reportSQL.lastIndexOf(" FROM "); - if(startPoint <= 0) { - startPoint = reportSQL.lastIndexOf(" from "); - } - if(startPoint <= 0) { - startPoint = reportSQL.lastIndexOf("from "); - } - if(startPoint <= 0) { - startPoint = reportSQL.lastIndexOf("FROM "); - } - - if (!matcher.find(startPoint)) { - reportSQL = reportSQL + " ORDER BY 1" ; - } - } - reportRuntime.setWholeSQL(reportSQL); - - logger.debug(EELFLoggerDelegate.debugLogger, (" *************************************************************************************** ")); - logger.debug(EELFLoggerDelegate.debugLogger, ("WHOLE_SQL" + reportSQL)); - logger.debug(EELFLoggerDelegate.debugLogger, (" *************************************************************************************** ")); - - if (reportRuntime.getFormFieldList() != null) { - for (Iterator iter = reportRuntime.getFormFieldList().getFormField().iterator(); iter.hasNext();) { - FormFieldType fft = (FormFieldType) iter.next(); - String fieldId = fft.getFieldId(); - String fieldDisplay = reportRuntime.getFormFieldDisplayName(fft); - String formfield_value = ""; - formfield_value = AppUtils.getRequestNvlValue(request, fieldId); - String paramValue = nvl(formfield_value); - if(paramValue.length()>0) { - /*sql = Utils.replaceInString(sql, "'" + fieldDisplay + "'", nvl( - paramValue, "NULL"));*/ - reportSQL = Utils.replaceInString(reportSQL, fieldDisplay, nvl( - paramValue, "NULL")); - } - /*sql = Utils.replaceInString(sql, "'" + fieldDisplay + "'", nvl( - paramValue, "NULL"));*/ - reportSQL = Utils.replaceInString(reportSQL, "'" + fieldDisplay + "'", nvl( - paramValue, "NULL")); - reportSQL = Utils.replaceInString(reportSQL, fieldDisplay , nvl( - paramValue, "NULL")); - } - } - logger.debug(EELFLoggerDelegate.debugLogger, ("SQL " + reportSQL)); - String legendCol = "1 a"; - // String valueCol = "1"; - StringBuffer groupCol = new StringBuffer(); - StringBuffer seriesCol = new StringBuffer(); - StringBuffer valueCols = new StringBuffer(); - - for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - String colName = getColumnSelectStr(dc, request); - if (nvl(dc.getColOnChart()).equals(AppConstants.GC_LEGEND)) - legendCol = getSelectExpr(dc, colName)+" " + dc.getColId(); - // if(dc.getChartSeq()>0) - // valueCol = "NVL("+colName+", 0) "+dc.getColId(); - if ((!nvl(dc.getColOnChart()).equals(AppConstants.GC_LEGEND)) - && (dc.getChartSeq()!=null && dc.getChartSeq().intValue() <= 0) && dc.isGroupBreak()) { - groupCol.append(", "); - groupCol.append(colName + " " + dc.getColId()); - } - } // for - for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - if(dc.isChartSeries()!=null && dc.isChartSeries().booleanValue()) { - //System.out.println("*****************, "+ " " +getColumnSelectStr(dc, paramValues)+ " "+ getSelectExpr(dc,getColumnSelectStr(dc, paramValues))); - seriesCol.append(", "+ getSelectExpr(dc,getColumnSelectStr(dc, request))+ " " + dc.getColId()); - } - } - - /*for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - if(!dc.isChartSeries() && !(nvl(dc.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - //System.out.println("*****************, "+ " " +getColumnSelectStr(dc, paramValues)+ " "+ getSelectExpr(dc,getColumnSelectStr(dc, paramValues))); - seriesCol.append(", "+ formatChartColumn(getSelectExpr(dc,getColumnSelectStr(dc, paramValues)))+ " " + dc.getColId()); - } - }*/ - - for (Iterator iter = chartValueCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - String colName = getColumnSelectStr(dc, request); - String paramValue = ""; - if(AppUtils.nvl(colName).startsWith("[")) { - if (reportRuntime.getFormFieldList() != null) { - for (Iterator iterC = reportRuntime.getFormFieldList().getFormField().iterator(); iterC.hasNext();) { - FormFieldType fft = (FormFieldType) iterC.next(); - String fieldId = fft.getFieldId(); - String fieldDisplay = reportRuntime.getFormFieldDisplayName(fft); - String formfield_value = ""; - if(AppUtils.nvl(fieldDisplay).equals(colName)) { - formfield_value = AppUtils.getRequestNvlValue(request, fieldId); - paramValue = nvl(formfield_value); - } - } - - } - - seriesCol.append("," + (AppUtils.nvl(paramValue).length()>0? paramValue:"null") + " " + dc.getColId()); - } else { - //valueCols.append(", NVL(" + formatChartColumn(colName) + ",0) " + dc.getColId()); - seriesCol.append("," + (AppUtils.nvl(paramValue).length()>0? paramValue:formatChartColumn(colName)) + " " + dc.getColId()); - } - } // for - - for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - String colName = dc.getDisplayName(); - String colValue = getColumnSelectStr(dc, request); - //String colName = getColumnSelectStr(dc, formGrid); - if(colName.equals(AppConstants.RI_CHART_TOTAL_COL)) - seriesCol.append(", " + AppConstants.RI_CHART_TOTAL_COL + " " + AppConstants.RI_CHART_TOTAL_COL ); - if (colName.equals(AppConstants.RI_CHART_COLOR)) - seriesCol.append(", " + colValue + " " + AppConstants.RI_CHART_COLOR ); - if(colName.equals(AppConstants.RI_CHART_MARKER_START)) - seriesCol.append(", " + AppConstants.RI_CHART_MARKER_START + " " + AppConstants.RI_CHART_MARKER_START ); - if(colName.equals(AppConstants.RI_CHART_MARKER_END)) - seriesCol.append(", " + AppConstants.RI_CHART_MARKER_END + " " + AppConstants.RI_CHART_MARKER_END ); - if(colName.equals(AppConstants.RI_CHART_MARKER_TEXT_LEFT)) - seriesCol.append(", " + AppConstants.RI_CHART_MARKER_TEXT_LEFT + " " + AppConstants.RI_CHART_MARKER_TEXT_LEFT ); - if(colName.equals(AppConstants.RI_CHART_MARKER_TEXT_RIGHT)) - seriesCol.append(", " + AppConstants.RI_CHART_MARKER_TEXT_RIGHT + " " + AppConstants.RI_CHART_MARKER_TEXT_RIGHT ); - //if(colName.equals(AppConstants.RI_ANOMALY_TEXT)) - //seriesCol.append(", " + AppConstants.RI_ANOMALY_TEXT + " " + AppConstants.RI_ANOMALY_TEXT ); - } - - //debugLogger.debug("ReportSQL Chart " + reportSQL ); - /*for (Iterator iter = chartValueCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - String colName = getColumnSelectStr(dc, paramValues); - //valueCols.append(", NVL(" + formatChartColumn(colName) + ",0) " + dc.getColId()); - valueCols.append("," + formatChartColumn(colName) + " " + dc.getColId()); - } // for - for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - DataColumnType dc = (DataColumnType) iter.next(); - String colName = getColumnSelectStr(dc, paramValues); - //if(colName.equals(AppConstants.RI_CHART_TOTAL_COL) || colName.equals(AppConstants.RI_CHART_COLOR)) { - if(colName.equals(AppConstants.RI_CHART_TOTAL_COL)) - valueCols.append(", " + AppConstants.RI_CHART_TOTAL_COL + " " + AppConstants.RI_CHART_TOTAL_COL ); - if (colName.equals(AppConstants.RI_CHART_COLOR)) - valueCols.append(", " + AppConstants.RI_CHART_COLOR + " " + AppConstants.RI_CHART_COLOR ); - if (colName.equals(AppConstants.RI_CHART_INCLUDE)) - valueCols.append(", " + AppConstants.RI_CHART_INCLUDE + " " + AppConstants.RI_CHART_INCLUDE ); - //} - }*/ - String final_sql = ""; - reportSQL = Utils.replaceInString(reportSQL, " from ", " FROM "); - reportSQL = Utils.replaceInString(reportSQL, " From ", " FROM "); - reportSQL = Utils.replaceInString(reportSQL, " select ", " SELECT "); - reportSQL = Utils.replaceInString(reportSQL, " union ", " UNION "); - //reportSQL = reportSQL.replaceAll("[\\s]*\\(", "("); -// if(reportSQL.indexOf("UNION") != -1) { -// if(reportSQL.indexOf("FROM(")!=-1) -// final_sql += " "+reportSQL.substring(reportSQL.indexOf("FROM(") ); -// else if (reportSQL.indexOf("FROM (")!=-1) -// final_sql += " "+reportSQL.substring(reportSQL.indexOf("FROM (") ); -// //TODO ELSE THROW ERROR -// } -// else { -// final_sql += " "+reportSQL.substring(reportSQL.toUpperCase().indexOf(" FROM ")); -// } - int pos = 0; - int pos_first_select = 0; - int pos_dup_select = 0; - int pos_prev_select = 0; - int pos_last_select = 0; - if (reportSQL.indexOf("FROM", pos)!=-1) { - pos = reportSQL.indexOf("FROM", pos); - pos_dup_select = reportSQL.lastIndexOf("SELECT",pos); - pos_first_select = reportSQL.indexOf("SELECT");//,pos); - logger.debug(EELFLoggerDelegate.debugLogger, ("pos_select " + pos_first_select + " " + pos_dup_select)); - if(pos_dup_select > pos_first_select) { - logger.debug(EELFLoggerDelegate.debugLogger, ("********pos_dup_select ********" + pos_dup_select)); - //pos_dup_select1 = pos_dup_select; - pos_prev_select = pos_first_select; - pos_last_select = pos_dup_select; - while (pos_last_select > pos_prev_select) { - logger.debug(EELFLoggerDelegate.debugLogger, ("pos_last , pos_prev " + pos_last_select + " " + pos_prev_select)); - pos = reportSQL.indexOf("FROM", pos+2); - pos_prev_select = pos_last_select; - pos_last_select = reportSQL.lastIndexOf("SELECT",pos); - logger.debug(EELFLoggerDelegate.debugLogger, ("in WHILE LOOP LAST " + pos_last_select)); - } - } - - } - final_sql += " "+reportSQL.substring(pos); - logger.debug(EELFLoggerDelegate.debugLogger, ("Final SQL " + final_sql)); - String sql = "SELECT " + legendCol + ", " + legendCol+"_1" + seriesCol.toString()+ nvl(valueCols.toString(), ", 1") - + groupCol.toString() - + final_sql; - logger.debug(EELFLoggerDelegate.debugLogger, ("Final sql in generateChartSQL " +sql)); - - return sql; - } // generateChartSQL - - private String getColumnSelectStr(DataColumnType dc, HttpServletRequest request) { - //String colName = dc.isCalculated() ? dc.getColName() - // : ((nvl(dc.getTableId()).length() > 0) ? (dc.getTableId() + "." + dc - // .getColName()) : dc.getColName()); - String colName = dc.getColName(); - String paramValue = null; - //if (dc.isCalculated()) { - if (reportRuntime.getFormFieldList() != null) { - for (Iterator iter = reportRuntime.getFormFieldList().getFormField().iterator(); iter.hasNext();) { - FormFieldType fft = (FormFieldType) iter.next(); - String fieldId = fft.getFieldId(); - String fieldDisplay = reportRuntime.getFormFieldDisplayName(fft); - String formfield_value = ""; - formfield_value = AppUtils.getRequestNvlValue(request, fieldId); - paramValue = nvl(formfield_value); - if(paramValue.length()>0) { - /*sql = Utils.replaceInString(sql, "'" + fieldDisplay + "'", nvl( - paramValue, "NULL"));*/ - colName = Utils.replaceInString(colName, "'" + fieldDisplay + "'", "'"+nvl( - paramValue, "NULL")+"'"); - colName = Utils.replaceInString(colName, fieldDisplay, nvl( - paramValue, "NULL")); - } - } - return colName; - } - //} - return colName; - } // getColumnSelectStr - - - - public String getSelectExpr(DataColumnType dct) { - // String colName = - // dct.isCalculated()?dct.getColName():((nvl(dct.getTableId()).length()>0)?(dct.getTableId()+"."+dct.getColName()):dct.getColName()); - return getSelectExpr(dct, dct.getColName() /* colName */); - } // getSelectExpr - - private String getSelectExpr(DataColumnType dct, String colName) { - String colType = dct.getColType(); - if (colType.equals(AppConstants.CT_CHAR) - || ((nvl(dct.getColFormat()).length() == 0) && (!colType - .equals(AppConstants.CT_DATE)))) - return colName; - else - return "DATE_FORMAT(" + colName + ", '" - + nvl(dct.getColFormat(), AppConstants.DEFAULT_DATE_FORMAT) + "')"; - } // getSelectExpr - - private String formatChartColumn(String colName) { - logger.debug(EELFLoggerDelegate.debugLogger, ("Format Chart Column Input colName " + colName)); - colName = colName.trim(); - colName = Utils.replaceInString(colName, "TO_CHAR", "to_char"); - colName = Utils.replaceInString(colName, "to_number", "TO_NUMBER"); - //reportSQL = reportSQL.replaceAll("[\\s]*\\(", "("); - colName = colName.replaceAll(",[\\s]*\\(", ",("); - StringBuffer colNameBuf = new StringBuffer(colName); - int pos = 0, posFormatStart = 0, posFormatEnd = 0; - String format = ""; - - if(colNameBuf.indexOf("999")==-1 && colNameBuf.indexOf("990")==-1) { - logger.debug(EELFLoggerDelegate.debugLogger, (" return colName " + colNameBuf.toString())); - return colNameBuf.toString(); - } - - while (colNameBuf.indexOf("to_char")!=-1) { - if(colNameBuf.indexOf("999")!=-1 || colNameBuf.indexOf("990")!=-1) { - pos = colNameBuf.indexOf("to_char"); - colNameBuf.insert(pos, " TO_NUMBER ( CR_RAPTOR.SAFE_TO_NUMBER ("); - pos = colNameBuf.indexOf("to_char"); - colNameBuf.replace(pos, pos+7, "TO_CHAR"); - //colName = Utils.replaceInString(colNameBuf.toString(), "to_char", " TO_NUMBER ( CR_RAPTOR.SAFE_TO_NUMBER ( TO_CHAR "); - logger.debug(EELFLoggerDelegate.debugLogger, ("After adding to_number " + colNameBuf.toString())); - //posFormatStart = colNameBuf.lastIndexOf(",'")+1; - posFormatStart = colNameBuf.indexOf(",'", pos)+1; - posFormatEnd = colNameBuf.indexOf(")",posFormatStart); - logger.debug(EELFLoggerDelegate.debugLogger, (posFormatStart + " " + posFormatEnd + " "+ pos)); - format = colNameBuf.substring(posFormatStart, posFormatEnd); - //posFormatEnd = colNameBuf.indexOf(")",posFormatEnd); - colNameBuf.insert(posFormatEnd+1, " ," + format + ") , "+ format + ")"); - logger.debug(EELFLoggerDelegate.debugLogger, ("colNameBuf " + colNameBuf.toString())); - } - } - logger.debug(EELFLoggerDelegate.debugLogger, (" return colName " + colNameBuf.toString())); - return colNameBuf.toString(); - } - - public List getChartValueColumnsList( int filter, HashMap formValues) { /*filter; all=0;create without new chart =1; createNewChart=2 */ - List reportCols = reportRuntime.getAllColumns(); - - ArrayList chartValueCols = new ArrayList(); - int flag = 0; - for (Iterator iter = reportCols.iterator(); iter.hasNext();) { - flag = 0; - DataColumnType dc = (DataColumnType) iter.next(); -// if(filter == 2 || filter == 1) { - flag = reportRuntime.getDependsOnFormFieldFlag(dc, formValues); - - if( (dc.getChartSeq()!=null && dc.getChartSeq()> 0) && flag == 0 && !(nvl(dc.getColOnChart()).equals(AppConstants.GC_LEGEND))) { - if(nvl(dc.getChartGroup()).length()<=0) { - if( filter == 2 && (dc.isCreateInNewChart()!=null && dc.isCreateInNewChart().booleanValue())) { - chartValueCols.add(dc); - } else if (filter == 1 && (dc.isCreateInNewChart()==null || !dc.isCreateInNewChart().booleanValue())) { - chartValueCols.add(dc); - } - else if(filter == 0) chartValueCols.add(dc); - } else chartValueCols.add(dc); - } -// } else -// chartValueCols.add(dc); - } // for - Collections.sort(chartValueCols, new ChartSeqComparator()); - return chartValueCols; - } // getChartValueColumnsList - - public String parseTitle(String title, HashMap formValues) { - Set set = formValues.entrySet(); - for(Iterator iter = set.iterator(); iter.hasNext(); ) { - Map.Entry entry = (Entry<String,String>) iter.next(); - if(title.indexOf("["+ entry.getKey() + "]")!= -1) { - title = Utils.replaceInString(title, "["+entry.getKey()+"]", nvl( - (String) entry.getValue(), "")); - } - } - return title; - } - - public java.util.Date getDateFromDateStr(String dateStr) { - SimpleDateFormat MMDDYYYYFormat = new SimpleDateFormat("MM/dd/yyyy"); - SimpleDateFormat EEEMMDDYYYYFormat = new SimpleDateFormat("EEE, MM/dd/yyyy"); //2012-11-01 00:00:00 - SimpleDateFormat YYYYMMDDFormat = new SimpleDateFormat("yyyy/MM/dd"); - SimpleDateFormat MONYYYYFormat = new SimpleDateFormat("MMM yyyy"); - SimpleDateFormat MMYYYYFormat = new SimpleDateFormat("MM/yyyy"); - SimpleDateFormat MMMMMDDYYYYFormat = new SimpleDateFormat("MMMMM dd, yyyy"); - SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - SimpleDateFormat timestampHrFormat = new SimpleDateFormat("yyyy-MM-dd HH"); - SimpleDateFormat timestampDayFormat = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat DDMONYYYYFormat = new SimpleDateFormat("dd-MMM-yyyy"); - SimpleDateFormat MONTHYYYYFormat = new SimpleDateFormat("MMMMM, yyyy"); - SimpleDateFormat MMDDYYYYHHFormat = new SimpleDateFormat("MM/dd/yyyy HH"); - SimpleDateFormat MMDDYYYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); - SimpleDateFormat MMDDYYYYHHMMFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm"); - SimpleDateFormat YYYYMMDDHHMMSSFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - SimpleDateFormat YYYYMMDDHHMMFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - SimpleDateFormat DDMONYYYYHHMMSSFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); - SimpleDateFormat DDMONYYYYHHMMFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); - SimpleDateFormat MMDDYYFormat = new SimpleDateFormat("MM/dd/yy"); - SimpleDateFormat MMDDYYHHMMFormat = new SimpleDateFormat("MM/dd/yy HH:mm"); - SimpleDateFormat MMDDYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); - SimpleDateFormat timestampFormat1 = new SimpleDateFormat("yyyy-M-d.HH.mm. s. S"); - SimpleDateFormat timestamp_W_dash = new SimpleDateFormat("yyyyMMddHHmmss"); - SimpleDateFormat MMDDYYYYHHMMZFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm z"); - SimpleDateFormat YYYYFormat = new SimpleDateFormat("yyyy"); - java.util.Date date = null; - - int formatFlag = 0; - - final int YEARFLAG = 1; - final int MONTHFLAG = 2; - final int DAYFLAG = 3; - final int HOURFLAG = 4; - final int MINFLAG = 5; - final int SECFLAG = 6; - final int MILLISECFLAG = 7; - final int DAYOFTHEWEEKFLAG = 8; - final int FLAGDATE = 9; - /*int yearFlag = 1; - int monthFlag = 2; - int dayFlag = 3; - int hourFlag = 4; - int minFlag = 5; - int secFlag = 6; - int milliSecFlag = 7; - int dayoftheweekFlag = 8; - int flagDate = 10; - */ - - date = MMDDYYYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - if(date==null) { - date = EEEMMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYOFTHEWEEKFLAG; - } - if(date==null) { - date = MMDDYYYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - if(date==null) { - //MMDDYYYYHHFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - date = MMDDYYYYHHFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = HOURFLAG; - } - if(date==null) { - date = MMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = YYYYMMDDFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = timestampFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - if(date==null) { - date = timestampHrFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = HOURFLAG; - } - if(date==null) { - date = timestampDayFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - - if(date==null) { - date = MONYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - if(date==null) { - date = MMYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - if(date==null) { - date = MMMMMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = MONTHYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - - if(date==null) { - date = YYYYMMDDHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = YYYYMMDDHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = DDMONYYYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = DDMONYYYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = DDMONYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - - if(date==null) { - date = MMDDYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = MMDDYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = MMDDYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - - if(date==null) { - date = timestampFormat1.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = MMDDYYYYHHMMZFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = YYYYFormat.parse(dateStr, new ParsePosition(0)); - /* Some random numbers should not satisfy this year format. */ - if(dateStr.length()>4) date = null; - if(date!=null) formatFlag = YEARFLAG; - } - if(date==null) { - date = timestamp_W_dash.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - if(date==null) - date = null; - return date; - } - - public int getFlagFromDateStr(String dateStr) { - SimpleDateFormat MMDDYYYYFormat = new SimpleDateFormat("MM/dd/yyyy"); - SimpleDateFormat EEEMMDDYYYYFormat = new SimpleDateFormat("EEE, MM/dd/yyyy"); //2012-11-01 00:00:00 - SimpleDateFormat YYYYMMDDFormat = new SimpleDateFormat("yyyy/MM/dd"); - SimpleDateFormat MONYYYYFormat = new SimpleDateFormat("MMM yyyy"); - SimpleDateFormat MMYYYYFormat = new SimpleDateFormat("MM/yyyy"); - SimpleDateFormat MMMMMDDYYYYFormat = new SimpleDateFormat("MMMMM dd, yyyy"); - SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - SimpleDateFormat timestampHrFormat = new SimpleDateFormat("yyyy-MM-dd HH"); - SimpleDateFormat timestampDayFormat = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat DDMONYYYYFormat = new SimpleDateFormat("dd-MMM-yyyy"); - SimpleDateFormat MONTHYYYYFormat = new SimpleDateFormat("MMMMM, yyyy"); - SimpleDateFormat MMDDYYYYHHFormat = new SimpleDateFormat("MM/dd/yyyy HH"); - SimpleDateFormat MMDDYYYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); - SimpleDateFormat MMDDYYYYHHMMFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm"); - SimpleDateFormat YYYYMMDDHHMMSSFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - SimpleDateFormat YYYYMMDDHHMMFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm"); - SimpleDateFormat DDMONYYYYHHMMSSFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); - SimpleDateFormat DDMONYYYYHHMMFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); - SimpleDateFormat MMDDYYFormat = new SimpleDateFormat("MM/dd/yy"); - SimpleDateFormat MMDDYYHHMMFormat = new SimpleDateFormat("MM/dd/yy HH:mm"); - SimpleDateFormat MMDDYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); - SimpleDateFormat timestampFormat1 = new SimpleDateFormat("yyyy-M-d.HH.mm. s. S"); - SimpleDateFormat timestamp_W_dash = new SimpleDateFormat("yyyyMMddHHmmss"); - SimpleDateFormat MMDDYYYYHHMMZFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm z"); - SimpleDateFormat YYYYFormat = new SimpleDateFormat("yyyy"); - java.util.Date date = null; - - int formatFlag = 0; - - final int YEARFLAG = 1; - final int MONTHFLAG = 2; - final int DAYFLAG = 3; - final int HOURFLAG = 4; - final int MINFLAG = 5; - final int SECFLAG = 6; - final int MILLISECFLAG = 7; - final int DAYOFTHEWEEKFLAG = 8; - final int FLAGDATE = 9; - /*int yearFlag = 1; - int monthFlag = 2; - int dayFlag = 3; - int hourFlag = 4; - int minFlag = 5; - int secFlag = 6; - int milliSecFlag = 7; - int dayoftheweekFlag = 8; - int flagDate = 10; - */ - - date = MMDDYYYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - if(date==null) { - date = EEEMMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYOFTHEWEEKFLAG; - } - if(date==null) { - date = MMDDYYYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - if(date==null) { - //MMDDYYYYHHFormat.setTimeZone(TimeZone.getTimeZone("UTC")); - date = MMDDYYYYHHFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = HOURFLAG; - } - if(date==null) { - date = MMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = YYYYMMDDFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = timestampFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - if(date==null) { - date = timestampHrFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = HOURFLAG; - } - if(date==null) { - date = timestampDayFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = MONYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - if(date==null) { - date = MMYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - if(date==null) { - date = MMMMMDDYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - if(date==null) { - date = MONTHYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MONTHFLAG; - } - - if(date==null) { - date = YYYYMMDDHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = YYYYMMDDHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = DDMONYYYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = DDMONYYYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = DDMONYYYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - - if(date==null) { - date = MMDDYYHHMMSSFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = MMDDYYHHMMFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = MMDDYYFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = DAYFLAG; - } - - if(date==null) { - date = timestampFormat1.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - - if(date==null) { - date = MMDDYYYYHHMMZFormat.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = MINFLAG; - } - - if(date==null) { - date = YYYYFormat.parse(dateStr, new ParsePosition(0)); - /* Some random numbers should not satisfy this year format. */ - if(dateStr.length()>4) date = null; - if(date!=null) formatFlag = YEARFLAG; - } - if(date==null) { - date = timestamp_W_dash.parse(dateStr, new ParsePosition(0)); - if(date!=null) formatFlag = SECFLAG; - } - if(date==null) - date = null; - return formatFlag; - } - - public static String[] reverse(String[] arr) { - List<String> list = Arrays.asList(arr); - Collections.reverse(list); - return (String[])list.toArray(); - } - - public int getNumberOfDecimalPlaces(double num) { - Double d = num; - String[] splitter = d.toString().split("\\."); - splitter[0].length(); // Before Decimal Count - splitter[1].length(); // After Decimal Count - return splitter[1].length(); - } - - public boolean getBooleanValue(String s) { - return getBooleanValue(s,null); - } - - public boolean getBooleanValue(String s, Boolean defaultValue) { - s = nvl(s); - if(s.length()<=0 && defaultValue!=null) return defaultValue.booleanValue(); - else if(s.length()<=0) return false; - else { - if(s.toUpperCase().startsWith("Y") || s.toLowerCase().equals("true")) - return true; - else - return false; - } - } - - - public String IntToLetter(int Int) { - if (Int<27){ - return Character.toString((char)(Int+96)); - } else { - if (Int%26==0) { - return IntToLetter((Int/26)-1)+IntToLetter((Int%26)+1); - } else { - return IntToLetter(Int/26)+IntToLetter(Int%26); - } - } - } - - - - - private void clearReportRuntimeBackup(HttpServletRequest request) { - //Session sess = Sessions.getCurrent(true)getCurrent(); - //HttpSession session = (HttpSession)sess.getNativeSession(); - HttpSession session = request.getSession(); - session.removeAttribute(AppConstants.DRILLDOWN_REPORTS_LIST); - request.removeAttribute(AppConstants.DRILLDOWN_INDEX); - session.removeAttribute(AppConstants.DRILLDOWN_INDEX); - request.removeAttribute(AppConstants.FORM_DRILLDOWN_INDEX); - session.removeAttribute(AppConstants.FORM_DRILLDOWN_INDEX); - Enumeration<String> enum1 = session.getAttributeNames(); - String attributeName = ""; - while(enum1.hasMoreElements()) { - attributeName = enum1.nextElement(); - if(attributeName.startsWith("parent_")) { - session.removeAttribute(attributeName); - } - } - session.removeAttribute(AppConstants.DRILLDOWN_REPORTS_LIST); - session.removeAttribute(AppConstants.SI_BACKUP_FOR_REP_ID); - session.removeAttribute(AppConstants.SI_COLUMN_LOOKUP); - session.removeAttribute(AppConstants.SI_DASHBOARD_REP_ID); - session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP); - session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME); - session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP); - session.removeAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP); - session.removeAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP); - session.removeAttribute(AppConstants.SI_DATA_SIZE_FOR_TEXTFIELD_POPUP); - session.removeAttribute(AppConstants.SI_MAP); - session.removeAttribute(AppConstants.SI_MAP_OBJECT); - session.removeAttribute(AppConstants.SI_REPORT_DEFINITION); - session.removeAttribute(AppConstants.SI_REPORT_RUNTIME); - session.removeAttribute(AppConstants.SI_REPORT_RUN_BACKUP); - session.removeAttribute(AppConstants.SI_REPORT_SCHEDULE); - session.removeAttribute(AppConstants.RI_REPORT_DATA); - session.removeAttribute(AppConstants.RI_CHART_DATA); - session.removeAttribute(AppConstants.SI_FORMFIELD_INFO); - session.removeAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO); - - } // clearReportRuntimeBackup - - - public static synchronized java.util.HashMap getRequestParametersMap(ReportRuntime rr, HttpServletRequest request) - { - HashMap valuesMap = new HashMap(); - - ReportFormFields rff = rr.getReportFormFields(); - - int idx = 0; - FormField ff = null; - - Map fieldNameMap = new HashMap(); - int countOfFields = 0 ; - - - for(rff.resetNext(); rff.hasNext(); idx++) { - ff = rff.getNext(); - fieldNameMap.put(ff.getFieldName(), ff.getFieldDisplayName()); - countOfFields++; - } - - List formParameter = new ArrayList(); - String formField = ""; - for(int i = 0 ; i < rff.size(); i++) { - ff = ((FormField)rff.getFormField(i)); - formField = ff.getFieldName(); - boolean isMultiValue = false; - isMultiValue = ff.getFieldType().equals(FormField.FFT_CHECK_BOX) - || ff.getFieldType().equals(FormField.FFT_LIST_MULTI); - boolean isTextArea = (ff.getFieldType().equals(FormField.FFT_TEXTAREA) && rr.getReportDefType() - .equals(AppConstants.RD_SQL_BASED)); - - if(request.getParameterValues(formField) != null && isMultiValue ) { - String[] vals = request.getParameterValues(formField); - StringBuffer value = new StringBuffer(""); - if(!AppUtils.getRequestFlag(request, AppConstants.RI_RESET_ACTION)) { - - if ( isMultiValue ) { - value.append("("); - } - for(int j = 0 ; j < vals.length; j++) { - if(isMultiValue) value.append("'"); - try { - if(vals[j] !=null && vals[j].length() > 0) { - vals[j] = Utils.oracleSafe(vals[j]); - value.append(java.net.URLDecoder.decode(vals[j], "UTF-8"));// + ","; - } - else - value.append(vals[j]); - } catch (UnsupportedEncodingException ex) {value.append(vals[j]);} - catch (IllegalArgumentException ex1){value.append(vals[j]);} - catch (Exception ex2){ - value.append(vals[j]); - } - - - if(isMultiValue) value.append("'"); - - if(j != vals.length -1) { - value.append(","); - } - } - if(vals.length > 0) { - value.append(")"); - } - } - - //value = value.substring(0 , value.length()); - - valuesMap.put(fieldNameMap.get(formField), value.toString()); - value = new StringBuffer(""); - } else if(request.getParameter(formField) != null) { - if(isTextArea) { - String value = ""; - value = request.getParameter(formField); - - value = Utils.oracleSafe(value); - value = "('" + Utils.replaceInString(value, ",", "'|'") + "')"; - value = Utils.replaceInString(value, "|", ","); - valuesMap.put(fieldNameMap.get(formField), value); - value = ""; - } else { - String value = ""; - if(!AppUtils.getRequestFlag(request, AppConstants.RI_RESET_ACTION)) - value = request.getParameter(formField); - valuesMap.put(fieldNameMap.get(formField), Utils.oracleSafe(value)); - } - - } else { - valuesMap.put(fieldNameMap.get(formField), "" ); - } - - } - - return valuesMap; - - } - -} |