- 浏览: 430017 次
- 性别:
- 来自: 珠海
-
文章分类
- 全部博客 (364)
- oracle (23)
- java (39)
- birt (10)
- uml (0)
- android (10)
- ubuntu (12)
- mysql (21)
- ant (1)
- lucence (1)
- Design Pattern (0)
- Data Struct (0)
- cvs svn vss (1)
- javascript (2)
- css (1)
- qtp (2)
- LoadRunner (0)
- spring3.0源码分析 (1)
- 编程经验 (2)
- 工作日志 (1)
- svn apache (2)
- vbscript (3)
- jbpm4.0-5.0 (0)
- 百度百科 (1)
- ivy (1)
- jni (0)
- drools5.1 (2)
- vss (1)
- 联系方式 (1)
- maven (2)
- jetty (1)
- webservice (0)
- Flex (45)
- 开发工具 (3)
- json (1)
- 项目配置应注意的问题 (1)
- freemarker 代码生成 (1)
- 自考 (0)
- 脚本语言 (0)
- weblogic (4)
- jar包冲突 (0)
- Nginx (2)
- Zxing (1)
- 嵌入式开发 (2)
- C# (4)
- 开发经验总结 注意事项 (1)
- CentOS 6.0 (4)
- BI (0)
- Hadoop (2)
- tomcat (3)
- db2 (1)
- sqlserver (1)
- php (5)
- thinkphp (0)
- amfphp (0)
- cognos (0)
- nutch (0)
- mongodb (9)
- nodejs (3)
- webrtc (0)
- websocket (0)
- html5 (0)
- css3 (0)
- nosql (2)
- ssdb (1)
- icommet (0)
- memcached (0)
- protocal (1)
- Linux --ssh (8)
- postgresql (8)
- sequoiadb (1)
- jquery (1)
- jvm jmx (1)
- spark (0)
- hbase (0)
- storm (0)
- netty (0)
- mina (0)
- shell (2)
- sacala (0)
- go (0)
- mac (1)
- netbean (1)
- mysql_postgresql (4)
- 消息队列 (0)
- neo4j (0)
- git (1)
- python (1)
- Perl (0)
- docker (4)
- video audio (1)
- actionscript (1)
- tensorflow (0)
- 机器学习 (0)
- 人工智能 (0)
- cas (1)
- 协程 (1)
- http (1)
- window (1)
- 内网穿透 (1)
- angular5 (0)
- vpn (2)
- AI (0)
- NLP (0)
- Spring Clound (0)
- mongoldb (1)
- 前端 (0)
最新评论
-
ping2010:
哥们最后如何解决的?
neo4j 未修改jdbc驱动中的连接用户名与密码错识 -
Gedo:
小菜求指点 ivy.xml里面怎么声明 能不说详细点 大 ...
ivy + ant+eclipse -
dongguang1082:
[color=red][/color][img][/]
条形码的工作原理和详细的内容 -
JadeLuo:
要将项目转化成Flex的项目类型才会自动生成
Flex4项目html-template文件夹解析 -
quentinyu777:
你好,我在创建Flex4SDK的Project为什么不生成ht ...
Flex4项目html-template文件夹解析
http://www.eclipse.org/birt/phoenix/deploy/reportEngineAPI.php
/************************************************************************************* * Copyright (c) 2004 Actuate Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Actuate Corporation - Initial implementation. ************************************************************************************/ package org.eclipse.birt.report.services; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.logging.Level; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.xml.namespace.QName; import org.apache.axis.AxisFault; import org.eclipse.birt.core.data.DataType; import org.eclipse.birt.core.data.DataTypeUtil; import org.eclipse.birt.core.exception.BirtException; import org.eclipse.birt.core.framework.IPlatformContext; import org.eclipse.birt.core.framework.PlatformServletContext; import org.eclipse.birt.data.engine.api.DataEngine; import org.eclipse.birt.data.engine.api.IResultMetaData; import org.eclipse.birt.report.engine.api.EngineConfig; import org.eclipse.birt.report.engine.api.EngineConstants; import org.eclipse.birt.report.engine.api.EngineException; import org.eclipse.birt.report.engine.api.HTMLActionHandler; import org.eclipse.birt.report.engine.api.HTMLEmitterConfig; import org.eclipse.birt.report.engine.api.HTMLRenderContext; import org.eclipse.birt.report.engine.api.HTMLRenderOption; import org.eclipse.birt.report.engine.api.HTMLServerImageHandler; import org.eclipse.birt.report.engine.api.IDataExtractionTask; import org.eclipse.birt.report.engine.api.IDataIterator; import org.eclipse.birt.report.engine.api.IExtractionResults; import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask; import org.eclipse.birt.report.engine.api.IRenderTask; import org.eclipse.birt.report.engine.api.IReportDocument; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IRunAndRenderTask; import org.eclipse.birt.report.engine.api.IRunTask; import org.eclipse.birt.report.engine.api.IScalarParameterDefn; import org.eclipse.birt.report.engine.api.PDFRenderContext; import org.eclipse.birt.report.engine.api.ReportEngine; import org.eclipse.birt.report.engine.api.ReportParameterConverter; import org.eclipse.birt.report.engine.api.impl.IResultSetItem; import org.eclipse.birt.report.engine.api.impl.ScalarParameterDefn; import org.eclipse.birt.report.engine.script.internal.ScriptExecutor; import org.eclipse.birt.report.model.api.ScalarParameterHandle; import org.eclipse.birt.report.model.api.elements.DesignChoiceConstants; import org.eclipse.birt.report.soapengine.IBirtConstants; import org.eclipse.birt.report.soapengine.api.Column; import org.eclipse.birt.report.soapengine.api.ResultSet; import org.eclipse.birt.report.viewer.utilities.ParameterAccessor; public class ReportEngineService { private static ReportEngineService instance; /** * Report engine instance. */ private ReportEngine engine = null; /** * Static engine config instance. */ private EngineConfig config = null; /** * Image directory for report images and charts. */ private String imageDirectory = null; /** * URL accesses images. */ private String imageBaseUrl = null; /** * Image handler instance. */ private HTMLServerImageHandler imageHandler = null; /** * Web app context path. */ private String contextPath = null; /** * Constructor. * * @param config */ public ReportEngineService( ServletConfig config ) { initEngineInstance( config ); ReportEngineService.instance = this; } /** * Get engine instance. * * @return */ synchronized public static ReportEngineService getInstance( ) { return instance; } /** * Get engine instance. * * @return engine instance */ synchronized private void initEngineInstance( ServletConfig servletConfig ) { System.setProperty( "RUN_UNDER_ECLIPSE", "false" ); //$NON-NLS-1$ //$NON-NLS-2$ if ( servletConfig == null ) { return; } config = new EngineConfig( ); // Register new image handler HTMLEmitterConfig emitterConfig = new HTMLEmitterConfig( ); emitterConfig.setActionHandler( new HTMLActionHandler( ) ); imageHandler = new HTMLServerImageHandler( ); emitterConfig.setImageHandler( imageHandler ); config.getEmitterConfigs( ).put( "html", emitterConfig ); //$NON-NLS-1$ // Prepare image directory. imageDirectory = servletConfig.getServletContext( ).getInitParameter( ParameterAccessor.INIT_PARAM_IMAGE_DIR ); if ( imageDirectory == null || imageDirectory.trim( ).length( ) <= 0 || ParameterAccessor.isRelativePath( imageDirectory ) ) { imageDirectory = servletConfig.getServletContext( ).getRealPath( "/report/images" ); //$NON-NLS-1$ } // Prepare image base url. imageBaseUrl = "/run?__imageID="; //$NON-NLS-1$ // Prepare log directory. String logDirectory = servletConfig.getServletContext( ).getInitParameter( ParameterAccessor.INIT_PARAM_LOG_DIR ); if ( logDirectory == null || logDirectory.trim( ).length( ) <= 0 || ParameterAccessor.isRelativePath( logDirectory ) ) { logDirectory = servletConfig.getServletContext( ).getRealPath( "/logs" ); //$NON-NLS-1$ } // Prepare log level. String logLevel = servletConfig.getServletContext( ).getInitParameter( ParameterAccessor.INIT_PARAM_LOG_LEVEL ); Level level = Level.OFF; if ( "SEVERE".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.SEVERE; } else if ( "WARNING".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.WARNING; } else if ( "INFO".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.INFO; } else if ( "CONFIG".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.CONFIG; } else if ( "FINE".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.FINE; } else if ( "FINER".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.FINER; } else if ( "FINEST".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.FINEST; } else if ( "OFF".equalsIgnoreCase( logLevel ) ) //$NON-NLS-1$ { level = Level.OFF; } config.setLogConfig( logDirectory, level ); // Prepare ScriptLib location String scriptLibDir = servletConfig.getServletContext( ).getInitParameter( ParameterAccessor.INIT_PARAM_SCRIPTLIB_DIR ); if ( scriptLibDir == null || scriptLibDir.trim( ).length( ) <= 0 || ParameterAccessor.isRelativePath( scriptLibDir ) ) { scriptLibDir = servletConfig.getServletContext( ).getRealPath( "/scriptlib" ); //$NON-NLS-1$ } ArrayList jarFileList = new ArrayList(); if ( scriptLibDir != null ) { File dir = new File( scriptLibDir ); getAllJarFiles( dir, jarFileList ); } String scriptlibClassPath = ""; //$NON-NLS-1$ for ( int i=0; i<jarFileList.size(); i++ ) scriptlibClassPath += ScriptExecutor.PROPERTYSEPARATOR + ((File)jarFileList.get(i)).getAbsolutePath(); if ( scriptlibClassPath.startsWith(ScriptExecutor.PROPERTYSEPARATOR) ) scriptlibClassPath = scriptlibClassPath.substring( ScriptExecutor.PROPERTYSEPARATOR.length() ); System.setProperty( ScriptExecutor.WEBAPP_CLASSPATH_KEY, scriptlibClassPath ); } /** * Get all the files under the specified folder (including all the files under sub-folders) * @param dir - the folder to look into * @param fileList - the fileList to be returned */ private void getAllJarFiles( File dir, ArrayList fileList ) { if ( dir.exists() && dir.isDirectory() ) { File[] files = dir.listFiles(); if ( files == null ) return; for ( int i=0; i<files.length; i++ ) { File file = files[i]; if ( file.isFile() ) { if ( file.getName().endsWith(".jar") ) //$NON-NLS-1$ fileList.add( file ); } else if ( file.isDirectory() ) { getAllJarFiles( file, fileList ); } } } } /** * Set Engine context. * * @param servletContext * @param request */ synchronized public void setEngineContext( ServletContext servletContext, HttpServletRequest request ) { if ( engine == null ) { String url = request.getRequestURL( ).toString( ); this.contextPath = request.getContextPath( ); url = url.substring( 0, url.indexOf( contextPath, url.indexOf( "/" ) ) ) + contextPath; //$NON-NLS-1$ config.setEngineHome( "" ); //$NON-NLS-1$ IPlatformContext context = new PlatformServletContext( servletContext, url ); config.setEngineContext( context ); engine = new ReportEngine( config ); } } /** * Open report design. * * @param report * @return */ synchronized public IReportRunnable openReportDesign( String report ) throws EngineException { return engine.openReportDesign( report ); } /** * createGetParameterDefinitionTask. * * @param runnable * @return */ synchronized public IGetParameterDefinitionTask createGetParameterDefinitionTask( IReportRunnable runnable ) { IGetParameterDefinitionTask task = null; try { task = engine.createGetParameterDefinitionTask( runnable ); } catch ( Exception e ) { } return task; } /** * Open report document from archive, * * @param docName - the name of the report document * @return */ synchronized public IReportDocument openReportDocument( String docName ) { IReportDocument document = null; try { document = engine.openReportDocument( docName ); } catch ( Exception e ) { } return document; } /** * Render image. * * @param imageId * @param outputStream * @throws EngineException */ synchronized public void renderImage( String imageId, ServletOutputStream outputStream ) throws RemoteException { assert ( this.imageHandler != null ); try { this.imageHandler.getImage( outputStream, this.imageDirectory, imageId ); } catch ( EngineException e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.renderImage( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } } /** * Create HTML render context. * * @param svgFlag * @return */ synchronized private HTMLRenderContext createHTMLrenderContext( boolean svgFlag ) { HTMLRenderContext renderContext = new HTMLRenderContext( ); renderContext.setImageDirectory( imageDirectory ); renderContext.setBaseImageURL( contextPath + imageBaseUrl ); renderContext.setBaseURL( this.contextPath + "/frameset" ); //$NON-NLS-1$ renderContext.setSupportedImageFormats( svgFlag ? "PNG;GIF;JPG;BMP;SVG" : "PNG;GIF;JPG;BMP" ); //$NON-NLS-1$ //$NON-NLS-2$ return renderContext; } /** * Create PDF render context. * * @return */ synchronized private PDFRenderContext createPDFrenderContext( ) { PDFRenderContext renderContext = new PDFRenderContext( ); renderContext.setBaseURL( this.contextPath + "/frameset" ); //$NON-NLS-1$ renderContext.setSupportedImageFormats( "PNG;GIF;JPG;BMP" ); //$NON-NLS-1$ return renderContext; } /** * Run and render a report, * * @param runnable * @param outputStream * @param format * @param locale * @param parameters * @param svgFlag * @throws IOException */ synchronized public void runAndRenderReport( HttpServletRequest request, IReportRunnable runnable, ServletOutputStream outputStream, String format, Locale locale, HashMap parameters, boolean masterPage, boolean svgFlag ) throws RemoteException { assert runnable != null; // Render options HTMLRenderOption option = new HTMLRenderOption( ); option.setOutputStream( outputStream ); option.setOutputFormat( format ); option.setMasterPageContent( masterPage ); IRunAndRenderTask runAndRenderTask = engine.createRunAndRenderTask( runnable ); runAndRenderTask.setLocale( locale ); runAndRenderTask.setParameterValues( parameters ); runAndRenderTask.setRenderOption( option ); HashMap context = new HashMap( ); context.put( DataEngine.DATASET_CACHE_OPTION, Boolean.TRUE ); context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request ); context.put( EngineConstants.APPCONTEXT_CLASSLOADER_KEY, ReportEngineService.class.getClassLoader()); if ( !ParameterAccessor.PARAM_FORMAT_PDF.equalsIgnoreCase( format ) ) { context.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, createHTMLrenderContext( svgFlag ) ); } else { context.put( EngineConstants.APPCONTEXT_PDF_RENDER_CONTEXT, createPDFrenderContext( ) ); } runAndRenderTask.setAppContext( context ); try { runAndRenderTask.run( ); } catch ( BirtException e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.runAndRenderReport( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } finally { runAndRenderTask.close( ); } } /** * Run report. * * @param runnable * @param archive * @param documentName * @param locale * @param parameters * @throws RemoteException */ synchronized public void runReport( HttpServletRequest request, IReportRunnable runnable, String documentName, Locale locale, HashMap parameters ) throws RemoteException { assert runnable != null; // Preapre the run report task. IRunTask runTask = engine.createRunTask( runnable ); runTask.setLocale( locale ); runTask.setParameterValues( parameters ); HashMap context = new HashMap( ); context.put( DataEngine.DATASET_CACHE_OPTION, Boolean.TRUE ); context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request ); context.put( EngineConstants.APPCONTEXT_CLASSLOADER_KEY, ReportEngineService.class.getClassLoader()); runTask.setAppContext( context ); // Run report. try { runTask.run( documentName ); } catch ( BirtException e ) { // Any Birt exception. AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.runReport( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } finally { runTask.close( ); } } /** * Render report page. * * @param reportDocument * @param pageNumber * @param svgFlag * @return report page content * @throws RemoteException */ synchronized public ByteArrayOutputStream renderReport( HttpServletRequest request, IReportDocument reportDocument, long pageNumber, boolean masterPage, boolean svgFlag, List activeIds, Locale locale ) throws RemoteException { assert reportDocument != null; assert pageNumber > 0 && pageNumber < reportDocument.getPageCount( ); ByteArrayOutputStream out = new ByteArrayOutputStream( ); // Create render task. IRenderTask renderTask = engine.createRenderTask( reportDocument ); HashMap context = new HashMap( ); context.put( EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, createHTMLrenderContext( svgFlag ) ); context.put( EngineConstants.APPCONTEXT_BIRT_VIEWER_HTTPSERVET_REQUEST, request ); context.put( EngineConstants.APPCONTEXT_CLASSLOADER_KEY, ReportEngineService.class.getClassLoader()); renderTask.setAppContext( context ); // Render option HTMLRenderOption setting = new HTMLRenderOption( ); setting.setOutputStream( out ); setting.setOutputFormat( IBirtConstants.RENDERFORMAT ); setting.setEmbeddable( true ); setting.setInstanceIDs( activeIds ); setting.setMasterPageContent( masterPage ); setting.setActionHandle( new ViewerHTMLActionHandler( reportDocument, pageNumber) ); renderTask.setRenderOption( setting ); renderTask.setLocale( locale ); // Render designated page. try { renderTask.render( pageNumber ); } catch ( BirtException e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.renderReport( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } catch ( Exception e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.renderReport( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } finally { renderTask.close( ); } return out; } /** * Get query result sets. * * @param document * @return * @throws RemoteException */ synchronized public ResultSet[] getResultSets( IReportDocument document ) throws RemoteException { assert document != null; ResultSet[] resultSetArray = null; IDataExtractionTask dataTask = engine.createDataExtractionTask( document ); try { List resultSets = dataTask.getResultSetList( ); if ( resultSets != null && resultSets.size( ) > 0 ) { resultSetArray = new ResultSet[resultSets.size( )]; for ( int k = 0; k < resultSets.size( ); k++ ) { resultSetArray[k] = new ResultSet( ); IResultSetItem resultSetItem = ( IResultSetItem ) resultSets.get( k ); assert resultSetItem != null; resultSetArray[k].setQueryName( resultSetItem.getResultSetName( ) ); IResultMetaData metaData = resultSetItem.getResultMetaData( ); assert metaData != null; Column[] columnArray = new Column[metaData.getColumnCount( )]; for ( int i = 0; i < metaData.getColumnCount( ); i++ ) { columnArray[i] = new Column( ); String name = metaData.getColumnName( i ); columnArray[i].setName( name ); String label = metaData.getColumnLabel( i ); if ( label == null || label.length( ) <= 0 ) { label = name; } columnArray[i].setLabel( label ); columnArray[i].setVisibility( new Boolean( true ) ); } resultSetArray[k].setColumn( columnArray ); } } } catch ( BirtException e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.getMetaData( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } catch ( Exception e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.getMetaData( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } finally { dataTask.close( ); } return resultSetArray; } /** * Extract data. * * @param document * @param id * @param columns * @param filters * @param locale * @param outputStream * @throws RemoteException */ synchronized public void extractData( IReportDocument document, String resultSetName, Collection columns, Locale locale, ServletOutputStream outputStream ) throws RemoteException { assert document != null; assert resultSetName != null && resultSetName.length( ) > 0; assert columns != null && !columns.isEmpty( ); String[] columnNames = new String[columns.size( )]; Iterator iSelectedColumns = columns.iterator( ); for ( int i = 0; iSelectedColumns.hasNext( ); i++ ) { columnNames[i] = ( String ) iSelectedColumns.next( ); } IDataExtractionTask dataTask = null; IExtractionResults result = null; IDataIterator iData = null; try { dataTask = engine.createDataExtractionTask( document ); dataTask.selectResultSet( resultSetName ); dataTask.selectColumns( columnNames ); dataTask.setLocale( locale ); result = dataTask.extract( ); if ( result != null ) { IResultMetaData iMetaData = result.getResultMetaData( ); iData = result.nextResultIterator( ); if ( iData != null && iMetaData != null ) { StringBuffer buf = new StringBuffer( ); // Captions String caption = iMetaData.getColumnLabel( 0 ); if ( caption != null ) { buf.append( caption ); } else { buf.append( iMetaData.getColumnName( 0 ) ); } for ( int i = 1; i < columnNames.length; i++ ) { buf.append( ',' ); //$NON-NLS-1$ caption = iMetaData.getColumnLabel( i ); if ( caption != null ) { buf.append( caption ); } else { buf.append( iMetaData.getColumnName( i ) ); } } outputStream.println( buf.toString( ) ); buf.delete( 0, buf.length( ) ); // Data while ( iData.next( ) ) { String value = null; try { value = cvsConvertor( ( String ) DataTypeUtil .convert( iData.getValue( columnNames[0] ), DataType.STRING_TYPE ) ); } catch ( Exception e ) { value = null; } if ( value != null ) { buf.append( value ); } for ( int i = 1; i < columnNames.length; i++ ) { buf.append( ',' ); //$NON-NLS-1$ try { value = cvsConvertor( ( String ) DataTypeUtil .convert( iData.getValue( columnNames[i] ), DataType.STRING_TYPE ) ); } catch ( Exception e ) { value = null; } if ( value != null ) { buf.append( value ); } } outputStream.println( buf.toString( ) ); buf.delete( 0, buf.length( ) ); } } } } catch( Exception e ) { AxisFault fault = new AxisFault( ); fault.setFaultCode( new QName( "ReportEngineService.extractData( )" ) ); //$NON-NLS-1$ fault.setFaultString( e.getLocalizedMessage( ) ); throw fault; } finally { if ( iData != null ) { iData.close( ); } if ( result != null ) { result.close( ); } if ( dataTask != null ) { dataTask.close( ); } } } /** * CSV format convertor. Here is the rule. * * 1) Fields with embedded commas must be delimited with double-quote characters. * 2) Fields that contain double quote characters must be surounded by double-quotes, and * the embedded double-quotes must each be represented by a pair of consecutive double quotes. * 3) A field that contains embedded line-breaks must be surounded by double-quotes. * 4) Fields with leading or trailing spaces must be delimited with double-quote characters. * * @param value * @return * @throws RemoteException */ synchronized private String cvsConvertor( String value ) throws RemoteException { if ( value == null ) { return null; } value = value.replaceAll( "\"", "\"\"" ); //$NON-NLS-1$ //$NON-NLS-2$ boolean needQuote = false; needQuote = ( value.indexOf( ',' ) != -1 ) || ( value.indexOf( '"' ) != -1 ) //$NON-NLS-1$ //$NON-NLS-2$ || ( value.indexOf( 0x0A ) != -1 ) || value.startsWith( " " ) || value.endsWith( " " ); //$NON-NLS-1$ //$NON-NLS-2$ value = needQuote ? "\"" + value + "\"" : value; //$NON-NLS-1$ //$NON-NLS-2$ return value; } /** * Prepare the report parameters. * * @param request * @param task * @param configVars * @param locale * @return */ synchronized public HashMap parseParameters( HttpServletRequest request, IGetParameterDefinitionTask task, Map configVars, Locale locale ) { assert task != null; HashMap params = new HashMap( ); Collection parameterList = task.getParameterDefns( false ); for ( Iterator iter = parameterList.iterator( ); iter.hasNext( ); ) { ScalarParameterDefn parameterObj = ( ScalarParameterDefn ) iter.next( ); String paramValue = null; Object paramValueObj = null; ScalarParameterHandle paramHandle = (ScalarParameterHandle) parameterObj.getHandle( ); String paramName = paramHandle.getName( ); String format = paramHandle.getFormat( ); // Get default value from task ReportParameterConverter converter = new ReportParameterConverter( format, locale ); if ( ParameterAccessor.isReportParameterExist( request, paramName ) ) { // Get value from http request paramValue = ParameterAccessor.getReportParameter( request, paramName, paramValue ); paramValueObj = converter.parse( paramValue, getEngineDataType( paramHandle.getDataType( ) ) ); } else if ( ParameterAccessor.isDesigner( request ) && configVars.containsKey( paramName ) ) { // Get value from test config String configValue = (String) configVars.get( paramName ); ReportParameterConverter cfgConverter = new ReportParameterConverter( format, Locale.US ); paramValueObj = cfgConverter.parse( configValue, getEngineDataType( paramHandle.getDataType( ) ) ); } else { paramValueObj = task.getDefaultValue( paramHandle.getName( ) ); } params.put( paramName, paramValueObj ); } return params; } /** * Check whether missing parameter or not. * * @param task * @param parameters * @return */ synchronized public boolean validateParameters( IGetParameterDefinitionTask task, Map parameters ) { assert task != null; assert parameters != null; boolean missingParameter = false; Collection parameterList = task.getParameterDefns( false ); for ( Iterator iter = parameterList.iterator( ); iter.hasNext( ); ) { ScalarParameterDefn parameterObj = ( ScalarParameterDefn ) iter.next( ); ScalarParameterHandle paramHandle = (ScalarParameterHandle) parameterObj.getHandle( ); String parameterName = paramHandle.getName( ); Object parameterValue = parameters.get( parameterName ); if ( paramHandle.isHidden( ) ) { continue; } if ( parameterValue == null && !paramHandle.allowNull( ) ) { missingParameter = true; break; } if ( DesignChoiceConstants.PARAM_TYPE_STRING.equals( paramHandle.getDataType( ) ) ) { String parameterStringValue = ( String ) parameterValue; if ( parameterStringValue != null && parameterStringValue.length( ) <= 0 && !paramHandle.allowBlank( ) ) { missingParameter = true; break; } } } return missingParameter; } /** * Parameter typer convertion. * * @param type * @return */ synchronized public int getEngineDataType( String type ) { if ( DesignChoiceConstants.PARAM_TYPE_BOOLEAN.equals( type ) ) { return IScalarParameterDefn.TYPE_BOOLEAN; } else if ( DesignChoiceConstants.PARAM_TYPE_DATETIME.equals( type ) ) { return IScalarParameterDefn.TYPE_DATE_TIME; } else if ( DesignChoiceConstants.PARAM_TYPE_DECIMAL.equals( type ) ) { return IScalarParameterDefn.TYPE_DECIMAL; } else if ( DesignChoiceConstants.PARAM_TYPE_FLOAT.equals( type ) ) { return IScalarParameterDefn.TYPE_FLOAT; } else if ( DesignChoiceConstants.PARAM_TYPE_STRING.equals( type ) ) { return IScalarParameterDefn.TYPE_STRING; } return IScalarParameterDefn.TYPE_ANY; } }
发表评论
-
birt 集成日期及其它控件
2011-06-20 13:08 454http://blog.csdn.net/kj_zx19854 ... -
birt 脚本数据源
2011-06-14 16:34 1769<property name=& ... -
Birt的JavaScript脚本简单调试
2011-06-03 09:09 2579Birt的JavaScript脚本简单调试 B ... -
Understanding the CVS Structure
2011-05-25 14:29 1067Understanding the CVS Structure ... -
birt 参考网址
2011-05-25 09:28 763http://my.oschina.net/kzhou/blo ... -
BirtViewer和Struts2框架的整合
2011-05-24 16:34 804BirtViewer和Struts2框架的整合 http ... -
birt国际化及已重编译的包
2011-05-19 08:17 1480BIRT的CVS访问地址 host:dev.eclipse. ... -
birt脚本的运行次序
2011-04-28 14:23 923Layout->initializeLayout-> ... -
使用birt脚本注意要点
2011-04-28 12:10 997When developing a BIRT report u ...
相关推荐
通过`ReportEngineService`,可以在Java EE环境中提供报表服务,用户可以通过HTTP请求获取报表。另外,也可以通过`ReportAppServlet`在独立的Web应用中部署BIRT报表服务器。 6. **实例分析**:压缩包中的"birt报表...
本程序通过selenium库和random库调用Google Chrome浏览器模拟人的手工操作,通过在关键词查询框里随机输入关键词、并设置键入的时间间隔模拟人的输入行为,然后再控制浏览器随机翻页,真正像普通人一样操作浏览器规避亚马逊的防爬虫机制。根据预定的关键词列表查询产品,然后通过BeautifulSoup解析查询结果获取亚马逊产品的价格、标题、ASIN、评论等信息,并将这些产品保存为本地csv文件,方便在Excel里分析处理。
微信诗词鉴赏小程序【基于微信小程序的在线诗词鉴赏平台】是一个以微信小程序为载体,专注于古代诗词鉴赏的项目 此项目旨在打造一个便捷、全面的移动端诗词学习与交流平台,让用户能够随时随地沉浸在中华
【毕业设计】Python的Django-vue的摄影交流平台源码(完整前后端+mysql+说明文档+LW+PPT).zip
基于Matlab Simulink的三相两电平逆变器矢量控制系统的仿真波形动态分析及其性能优化研究报告,基于Matlab Simulink仿真平台下的两电平逆变器矢量控制系统动态分析及其波形研究,基于Matlab Simulink的两电平逆变器矢量控制系统的仿真波形的动态分析 不,需要的资料,文档有 ,基于Matlab; Simulink; 两电平逆变器; 矢量控制系统; 仿真波形; 动态分析,基于Simulink的逆变器矢量控制系统动态仿真分析
【达摩老生出品,必属精品,亲测校正,质量保证】 资源名:FinsDLL文件及调用手册 资源类型:程序源代码 源码说明:本人依据 Omron 通讯手册 编写的.DLL 使用 C# 开发 可以实现 对 OMRON PLC 内部寄存器 D区 M区 CIO区 HR区 字 。位 的 读写操作 以及 AR 区 字、位的读操作。使用方便 直接按照调用手册 操作步骤即可实现读写功能。 适合人群:新手及有一定经验的开发人员。内容来源于网络分享,如有侵权请联系我删除。
资源说明:https://editor.csdn.net/md/?articleId=129220710#323_oled_148 本设计的电梯系统采用的是stm32微处理器。STM32处理器是基于Cortex-M3架构的嵌入式微处理器MCU,其中Cortex-M3架构是ARM公司推出的。STM32处理器具有高速、高集成度、低功耗、高可靠性等优点。正是由于STM32处理器具有这些优点,它正适合运用于电梯控制。本设计中的电梯控制系统主要运用了STM32处理器GPIO口操作和其精确地定时功能。该电梯系统一共分6个部分,它们是 STM32处理器、电源系统、数码管显示器、键盘、LED小灯、直流电机驱动模块。这些部分是直接与STM32的GPIO口连接的,所以它们占用的GPIO口较多。 各功能模块简介: (1)电源系统:为整个系统提供+5V电源; (2)键盘:每个键位互不影响用以控制电梯运行状态; (3)LED指示小灯:用以指示小健是否被按下和电梯门开关状态; (4)4位8段数码管:用于显示电梯内部和每层电梯外部电梯所在的层数; STM32开发板:通过写入程序代码来控制电梯的运行状态。。。。。。。
推荐Matlab人脸识别源码合集(包含PCA、Adaboost、DLDA、费舍尔算法等)及多语言参考,推荐Matlab人脸识别源码合集(包含PCA、Adaboost、DLDA、费舍尔算法等多套实现),Matlab人脸识别源码6套,可运行(包括PCA算法,Adaboost算法,DLDA算法,费舍尔算法等)。 另含多套文档及JAVA,PYTHON,C#,OPENCV人脸识别源码可供参考 源码很多,请优先选择Matlab文件夹且标题里含有(推荐)标识者 ,Matlab人脸识别源码; PCA算法; Adaboost算法; DLDA算法; 费舍尔算法; JAVA,PYTHON,C#人脸识别源码; OPENCV人脸识别源码; 推荐标识; 优先选择Matlab文件夹。,Matlab人脸识别源码合集(推荐PCA、Adaboost、DLDA算法,含多套文档及跨平台源码)
分割资源UE5.3.z21重传
Labview操作者框架结合ADS与Twincat控制器:ST语言与EtherCAT总线控制工程项目资料,LabVIEW操作者框架结合ADS与Twincat控制器:Ethercat总线控制工程项目资料,labview操作者框架+ADS+twincat2(twincat3) st语言ethercat总线控制工程项目资料 twincat控制器+twincat资料 到手能用,labview界面+控制器 ,labview操作者框架; ADS; twincat2/3; st语言; ethercat总线控制; 控制器; 可用资料,LabVIEW操作者框架与TwinCAT控制器:Ethercat总线控制工程项目资料
基于观测器的LOS制导结合反步法控制:无人船艇路径跟踪控制的Fossen模型Matlab Simulink仿真效果研究,基于观测器的LOS制导结合反步法控制:无人船艇路径跟踪控制的Fossen模型Matlab Simulink仿真效果研究,无人船 无人艇路径跟踪控制 fossen模型matlab simulink效果 基于观测器的LOS制导结合反步法控制 ELOS+backstepping ,无人船; 无人艇; 路径跟踪控制; Fossen模型; Matlab Simulink效果; 基于观测器的LOS制导; 反步法控制; ELOS+backstepping,基于Fossen模型的无人船路径跟踪控制:ELOS与反步法联合控制的Matlab Simulink效果分析
基于【pmsm0512】的MATLAB Simulink永磁同步电机矢量控制策略研究与应用,基于【pmsm0512】的MATLAB Simulink永磁同步电机矢量控制策略研究与应用,【pmsm0512】MATLAB simulink永磁同步电机的矢量控制。 PMSM的矢量控制 ,PMSM; 矢量控制; MATLAB Simulink; 永磁同步电机; 0512,MATLAB Simulink PMSM矢量控制策略研究
深圳绿新威推出的GS2113S 半桥驱动芯片 应用于逆变器驱动 电机驱动等采用高压工艺
PMSM永磁同步电机矢量控制Simulink模型研究:速度环PI与滑模变结构对比,电流环PI滞环策略的建模与实现,PMSM永磁同步电机矢量控制Simulink模型研究:速度环PI与滑模变结构对比分析,电流环PI滞环方案搭建与验证,附详细说明文档及参考资料,PMSM永磁同步电机矢量控制simulink模型,包括matlab模型,两种方案对比,分别为速度环采用pi和滑模变结构对比,电流环采用pi滞环,搭建过程清晰且包含说明文档和其他附带参考资料。 ,PMSM永磁同步电机;矢量控制;Simulink模型;Matlab模型;速度环对比(PI vs 滑模变结构);电流环(PI滞环);搭建过程;说明文档;附带参考资料。,PMSM矢量控制Simulink模型:PI与滑模变结构方案对比
prov year 光缆线路长度/地区面积 安徽 2010 2.852140 4 安徽 2011 3.5921078 安徽 2012 4.3320751 安徽 2013 5.0716782 安徽 2014 5.8315897 安徽 2015 6.9423647 安徽 2016 9.9900103 安徽 2017 12.844298 安徽 2018 15.698587 安徽 20 19 16.412159 安徽 2020 17.125731 安徽 2021 17.839304 安徽 2022 19.266447 北京 2010 6 .5243206 北京 2011 8.9830551 北京 2012 11. 44179 北京 2013 13.407351 北京 2014 14.728 941 北京 2015 16.79026。内容来源于网络分享,如有侵权请联系我删除。
该资源为imutils-0.5.2.tar.gz,欢迎下载使用哦!
Matlab Simulink电机启动模型:模拟电压暂降及电能质量问题,适配IEEE 33节点模型研究,利用Matlab Simulink的电机启动模型精准模拟电压暂降等电能质量问题:适配IEEE 33节点模型,电机启动模型 Matlab simulink 可用于模拟电压暂降等电能质量问题,适配于本家的IEEE 33节点模型。 ,电机启动模型; Matlab Simulink; 电压暂降模拟; 电能质量问题; IEEE 33节点模型; 适配性。,Matlab Simulink电机启动模型:模拟电压暂降电能质量问题的适配IEEE 33节点模型
美赛教程&建模&数据分析&案例分析
台达as系列PLC程序模板:基于现场经验的车企通用模板,含多轴手动与自动流程,地址映像IO,高通用性与扩展性,快速项目实施利器。,台达as系列PLC程序模板:基于现场经验的车企通用模板,含多轴手动与自动流程,灵活高效可移植扩展,台达as系列plc程序模板。 本程序根据多年现场实际经验并参照车企通用模板编写,含6轴手动程序。 1+6(带一分支,可扩分支)自动流程程序。 io采用地址映像。 通用和可扩展性,可移植性强。 非常灵活,可为你项目实施节约大量宝贵时间。 ,台达AS系列PLC; 程序模板; 6轴手动程序; 1+6自动流程程序; IO地址映像; 通用可扩展性; 移植性强; 时间节约。,台达AS系列PLC程序模板:通用可扩展的自动化流程程序
S32系列MCU的S32K144与S32K148 Boot、网络与UDS标定程序定制服务,包含UDS烧写上位机解决方案,S32系列MCU的S32K144与S32K148的boot加载与网络通讯技术——包含UDS烧写及标定程序定制服务,S32k144,S32K148的boot,网络,uds,标定程序订做,包含uds烧写上位机 ,S32k144; S32K148; boot程序订做; 网络功能; UDS烧写; 上位机标定程序,S32系列MCU Boot网络UDS标定程序订制及UDS烧写上位机开发