首页>代码>Flash插件FusionCharts,可以做动态报表 包含各种图>/FusionCharts_Evaluation/FusionCharts_Evaluation/Code/JSP/SourceCode/com/infosoftglobal/fusioncharts/FusionChartsCreator.java
/*
 * Created on Oct 25, 2006
 * 
 */
package com.infosoftglobal.fusioncharts;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * Contains methods to add no cache string to a url,creating the charts.<br>
 * This class can be used to create chart xml given the swf filename and other<br> 
 * parameters.<br>
 * In order to use this class in your jsps,import this class and<br> 
 * call the appropriate method directly as follows:<br>
 * FusionChartsCreator.createChart(...);<br>
 * 
 * @deprecated Please use classes from com.fusioncharts package
 * 
 * @author InfoSoft Global (P) Ltd.
 * 
 */
public class FusionChartsCreator {

    /**
     * Adds additional string to the url to and encodes the parameters,<br>
     * so as to disable caching of data.<br>  
     * @param strDataURL -
     *                dataURL to be fed to chart
     * @return cachedURL - URL with the additional string added
     */

    public static String addCacheToDataURL(String strDataURL) {
	String cachedURL = strDataURL;
	// Add the no-cache string if required

	// We add ?FCCurrTime=xxyyzz
	// If the dataURL already contains a ?, we add &FCCurrTime=xxyyzz
	// We replace : with _, as FusionCharts cannot handle : in URLs
	Calendar nowCal = Calendar.getInstance();
	Date now = nowCal.getTime();
	SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH_mm_ss a");
	String strNow = sdf.format(now);

	try {

	    if (strDataURL.indexOf("?") > 0) {
		cachedURL = strDataURL + "&FCCurrTime="
		+ URLEncoder.encode(strNow, "UTF-8");
	    } else {
		cachedURL = strDataURL + "?FCCurrTime="
		+ URLEncoder.encode(strNow, "UTF-8");
	    }

	} catch (UnsupportedEncodingException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	    cachedURL = strDataURL + "?FCCurrTime=" + strNow;
	}

	return cachedURL;
    }

    /**
     * Creates the JavaScript + HTML code required to embed a chart.<br>
     * Uses the javascript FusionCharts class to create the chart by supplying <br>
     * the required parameters to it.<br>
     * Note: Only one of the parameters strURL or strXML has to be not null for this<br>
     * method to work. If both the parameters are provided then strURL is used for further processing.<br>
     * 
     * @param chartSWF -
     *                SWF File Name (and Path) of the chart which you intend
     *                to plot
     * @param strURL -
     *                If you intend to use dataURL method for this chart,
     *                pass the URL as this parameter. Else, set it to "" (in
     *                case of dataXML method)
     * @param strXML -
     *                If you intend to use dataXML method for this chart,
     *                pass the XML data as this parameter. Else, set it to ""
     *                (in case of dataURL method)
     * @param chartId -
     *                Id for the chart, using which it will be recognized in
     *                the HTML page. Each chart on the page needs to have a
     *                unique Id.
     * @param chartWidth -
     *                Intended width for the chart (in pixels)
     * @param chartHeight -
     *                Intended height for the chart (in pixels)
     * @param debugMode -
     *                Whether to start the chart in debug mode
     * @param registerWithJS -
     *                Whether to ask chart to register itself with
     *                JavaScript
     */
    public static String createChart(String chartSWF, String strURL,
	    String strXML, String chartId, int chartWidth, int chartHeight,
	    boolean debugMode, boolean registerWithJS) {
	StringBuffer strBuf = new StringBuffer();
	// First we create a new DIV for each chart. We specify the name of DIV
	// as "chartId"Div.
	// DIV names are case-sensitive.

	strBuf.append("\t\t<!-- START Script Block for Chart-->\n");
	strBuf.append("\t\t<div id='" + chartId + "Div' align='center'>\n");
	strBuf.append("\t\t\t\tChart.\n");

	/*
	 * The above text "Chart" is shown to users before the chart has started
	 * loading (if there is a lag in relaying SWF from server). This text is
	 * also shown to users who do not have Flash Player installed. You can
	 * configure it as per your needs.
	 */

	strBuf.append("\t\t</div>\n");

	/*
	 * Now, we create the chart using FusionCharts js class. Each chart's
	 * instance (JavaScript) Id is named as chart_"chartId".
	 */

	strBuf.append("\t\t<script type='text/javascript'>\n");
	// Instantiate the Chart
	Boolean registerWithJSBool = new Boolean(registerWithJS);
	Boolean debugModeBool = new Boolean(debugMode);
	int regWithJSInt = boolToNum(registerWithJSBool);
	int debugModeInt = boolToNum(debugModeBool);

	strBuf.append("\t\t\t\tvar chart_" + chartId + " = new FusionCharts('"
		+ chartSWF + "', '" + chartId + "', '" + chartWidth + "', '"
		+ chartHeight + "', '" + debugModeInt + "', '" + regWithJSInt
		+ "');\n");
	// Check whether we've to provide data using dataXML method or dataURL
	// method
	if (strXML.equals("")) {
	    strBuf.append("\t\t\t\t// Set the dataURL of the chart\n");
	    strBuf.append("\t\t\t\tchart_" + chartId + ".setDataURL(\"" + strURL
		    + "\");\n");
	} else {
	    strBuf.append("\t\t\t\t// Provide entire XML data using dataXML method\n");
	    strBuf.append("\t\t\t\tchart_" + chartId + ".setDataXML(\"" + strXML
		    + "\");\n");
	}
	strBuf.append("\t\t\t\t// Finally, render the chart.\n");
	strBuf.append("\t\t\t\tchart_" + chartId + ".render(\"" + chartId + "Div\");\n");
	strBuf.append("\t\t</script>\n");
	strBuf.append("\t\t<!--END Script Block for Chart-->\n");
	return strBuf.substring(0);
    }

    /**
     * Creates the object tag required to embed a chart.
     * Generates the object tag to embed the swf directly into the html page.<br>
     * Note: Only one of the parameters strURL or strXML has to be not null for this<br>
     * method to work. If both the parameters are provided then strURL is used for further processing.<br>
     *  
     * @param chartSWF -
     *                SWF File Name (and Path) of the chart which you intend
     *                to plot
     * @param strURL -
     *                If you intend to use dataURL method for this chart,
     *                pass the URL as this parameter. Else, set it to "" (in
     *                case of dataXML method)
     * @param strXML -
     *                If you intend to use dataXML method for this chart,
     *                pass the XML data as this parameter. Else, set it to ""
     *                (in case of dataURL method)
     * @param chartId -
     *                Id for the chart, using which it will be recognized in
     *                the HTML page. Each chart on the page needs to have a
     *                unique Id.
     * @param chartWidth -
     *                Intended width for the chart (in pixels)
     * @param chartHeight -
     *                Intended height for the chart (in pixels)
     * @param debugMode -
     *                Whether to start the chart in debug mode
     */
    public static String createChartHTML(String chartSWF, String strURL,
	    String strXML, String chartId, int chartWidth, int chartHeight,
	    boolean debugMode) { /*
	     * Generate the FlashVars string based
	     * on whether dataURL has been provided
	     * or dataXML.
	     */
	String strFlashVars = "";
	Boolean debugModeBool = new Boolean(debugMode);

	if (strXML.equals("")) {
	    // DataURL Mode
	    strFlashVars = "chartWidth=" + chartWidth + "&chartHeight="
	    + chartHeight + "&debugMode=" + boolToNum(debugModeBool)
	    + "&dataURL=" + strURL + "";
	} else {
	    // DataXML Mode
	    strFlashVars = "chartWidth=" + chartWidth + "&chartHeight="
	    + chartHeight + "&debugMode=" + boolToNum(debugModeBool)
	    + "&dataXML=" + strXML + "";
	}
	StringBuffer strBuf = new StringBuffer();

	strBuf.append("\t\t<!--START Code Block for Chart-->\n");
	strBuf
	.append("\t\t<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='"
		+ chartWidth
		+ "' height='"
		+ chartHeight
		+ "' id='"
		+ chartId + "'>\n");
	strBuf.append("\t\t\t\t<param name='allowScriptAccess' value='always' />\n");
	strBuf.append("\t\t\t\t<param name='movie' value='" + chartSWF + "'/>\n");
	strBuf.append("\t\t\t\t<param name='FlashVars' value=\"" + strFlashVars
		+ "\" />\n");
	strBuf.append("\t\t\t\t<param name='quality' value='high' />\n");
	strBuf
	.append("\t\t\t\t<embed src='"
		+ chartSWF
		+ "' FlashVars=\""
		+ strFlashVars
		+ "\" quality='high' width='"
		+ chartWidth
		+ "' height='"
		+ chartHeight
		+ "' name='"
		+ chartId
		+ "' allowScriptAccess='always' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' />\n");
	strBuf.append("\t\t</object>\n");
	strBuf.append("\t\t<!--END Code Block for Chart-->\n");
	return strBuf.substring(0);
    }

    /**
     * Converts a Boolean value to int value<br>
     * 
     * @param bool Boolean value which needs to be converted to int value 
     * @return int value correspoding to the boolean : 1 for true and 0 for false
     */
   public static int boolToNum(Boolean bool) {
	int num = 0;
	if (bool.booleanValue()) {
	    num = 1;
	}
	return num;
    }
}
最近下载更多
smallmicro  LV3 2021年1月24日
caozongan  LV19 2020年4月17日
jiqingxings  LV4 2020年3月10日
wanglong_wang  LV13 2019年8月1日
15239218175  LV7 2019年4月22日
lwf626888  LV16 2017年12月6日
dagf113225  LV68 2017年12月1日
chenzheng  LV1 2017年11月27日
wupujian  LV17 2017年11月10日
1324488732  LV27 2017年7月30日
最近浏览更多
fesfefe  LV13 2023年11月1日
yz2810790 2023年7月5日
暂无贡献等级
张顺利  LV6 2023年2月3日
无花空折枝  LV9 2021年6月28日
17558420274  LV16 2021年5月28日
长得丑活得久  LV3 2021年3月4日
smallmicro  LV3 2021年1月24日
daishu14 2020年12月10日
暂无贡献等级
清欢hello  LV3 2020年6月18日
hxx88781143  LV8 2020年5月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友