📄 entitygraction.java
字号:
meta.addLazyLoadDataset( dataset ); } } } if( getLogger().isDebugEnabled() ) { DEBUG( "\n\nCall EQL manager:" ); DEBUG( " EQL query:\n" + eqlQuery ); DEBUG( " EQL prepared statement: " + eqlPS ); DEBUG( " EQL meta: " + meta ); } // // execute EQL query // EQLRes res = local.select( ctx.getSC(), eqlQuery, eqlPS.reset(), meta ); reqDistinct = res.getMetaData().getReq().getSelect().isDistinct(); if( getLogger().isDebugEnabled() ) { DEBUG( "\n\nEntity EQL response:" ); DEBUG( " Size:" + res.size() ); } return res; } /* * No javadoc * @see AbstractGRAction#callEQLManagerForCount */ protected int callEQLManagerForCount() throws EQLException { int count = 0; if( builtinCount || reqDistinct ) { // // Use built-in method in EQLManager. // if( getLogger().isDebugEnabled() ) { DEBUG( "\n\nCall EQLManager for count" ); } count = ctx.getEQLManager().selectCount( ctx.getSC(), getEQLRes() ); } else { // // Count via aggregate COUNT function! // // reset EQL prepared statement EQLIntPreparedStatement countEqlPS = eqlPS.reset(); // remove "pageSize" and "page" attribues from meta meta.delParam( PAGE_SIZE_PARAM ); meta.delParam( PAGE_PARAM ); if( getLogger().isDebugEnabled() ) { DEBUG( "\n\nSend aggregate request to EQLManager for count:" ); DEBUG( " EQL count query:\n" + eqlCountQuery ); DEBUG( " EQL prepared statement: " + countEqlPS ); DEBUG( " EQL meta: " + meta ); } EQLRes countRes = ctx.getEQLManager().select( ctx.getSC(), eqlCountQuery, countEqlPS, meta ); if( countRes.size() > 0 ) { Integer i = countRes.getRecord( 0 ).getResCell( 0 ).getInteger(); if( i != null ) { count = i.intValue(); } } } if( getLogger().isDebugEnabled() ) { DEBUG( "\n\nEQL count response: " + count ); } return count; } /* * No javadoc * @see AbstractGRAction#createResRecords */ protected ResRecord[] createResRecords( EQLRes eqlRes ) throws EQLException { // list of records List<ResRecord> resRecordList = new ArrayList<ResRecord>(); int recordCount = ( eqlRes == null ) ? 0 : eqlRes.size(); for( int i = 0; i < recordCount; i++ ) { // create new record ResRecord resRecord = createResRecord( eqlRes, i ); resRecordList.add( resRecord ); } return( resRecordList.size() == 0 ) ? null : ( ResRecord[] ) resRecordList.toArray( new ResRecord[0] ); } /* * No javadoc * @see AbstractGRAction#createResRecords */ protected void createResRecords( EQLRes eqlRes, Writer writer ) throws EQLException { int recordCount = ( eqlRes == null ) ? 0 : eqlRes.size(); if( recordCount == 0 ) { return; } // get XML binding XMLBinding xmlBinding = XMLFactory.getXMLBinding(); // init temp writer StringWriter tmpWriter = new StringWriter(); for( int i = 0; i < recordCount; i++ ) { try { // create new record ResRecord resRecord = createResRecord( eqlRes, i ); // serialize ResRecord to temp writer xmlBinding.javaToXml( resRecord, tmpWriter ); // write to the original writer without <?xml ...?> writer.write( StringHelper.clearXml( tmpWriter.toString(), false ) ); // reset temp writer tmpWriter.getBuffer().delete( 0, tmpWriter.getBuffer().length() - 1 ); } catch( IOException ex ) { ERROR( ex ); throw new GenericSystemException( "IO exception: " + ex.getMessage(), ex ); } catch( OutOfMemoryError e ) { // caught OutOfMemoryError... ERROR( "Out Of Memeory Error occured diring reading result record: " ); ERROR( " record: " + i ); ERROR( " total: " + recordCount ); throw e; } } } /* * No javadoc * @see AbstractGRAction#buildEQLSelectClause */ protected void buildEQLSelectClause( StringBuffer eql ) { eql.append(reqEntity.getName()).append(EntityHelper.NAME_SEPARATOR).append("*"); } /* * No javadoc * @see AbstractGRAction#buildEQLOrderClause */ protected void buildEQLOrderClause( StringBuffer eql ) { // add sort field String sortField = reqEntity.getSortfield(); if( sortField != null ) { eql.append( " ORDER BY " ); eql.append( reqEntity.getName() ).append( "." ).append( sortField ); OrderDirectionSType orderType = reqEntity.getSortdir(); if( orderType != null ) { eql.append( " " ).append( orderType.toString().toUpperCase() ); } } } /* * No javadoc * @see AbstractGRAction#buildEQLRequestMetaInf */ protected void buildEQLRequestMetaInf( StringBuffer eql ) { boolean metaDistinct = false; int metaPage = UNDEFINED_PAGE; int metaPagesize = UNDEFINED_PAGESIZE; boolean metaUseBuiltinCount = false; // read meta from XML Entity document int count = entity.getMetainfCount(); for( int i = 0; i < count; i++ ) { Metainf metaInf = entity.getMetainf( i ); String name = metaInf.getName(); String value = metaInf.getValue(); try { if( name.equalsIgnoreCase( DISTINCT_PARAM ) ) { metaDistinct = StringHelper.str2bool( value ); } else if( name.equalsIgnoreCase( PAGE_PARAM ) ) { metaPage = Integer.parseInt( value ); } else if( name.equalsIgnoreCase( PAGE_SIZE_PARAM ) ) { metaPagesize = Integer.parseInt( value ); } else if( name.equalsIgnoreCase( USE_BUILTIN_COUNT_PARAM ) ) { metaUseBuiltinCount = StringHelper.str2bool( value ); } } catch( Exception ex ) { throw new GenericSystemException( "Incorrect meta parameter value '" + value + "'. Parameter: " + name ); } } if( metaPage == UNDEFINED_PAGE ) { metaPage = page; } if( metaPagesize == UNDEFINED_PAGESIZE ) { metaPagesize = pageSize; } eql.append( "/* " ); // set DISTINCT attribute if( metaDistinct ) { // .. init distinct flag distinct = metaDistinct; eql.append( DISTINCT_PARAM ).append( "=" ).append( metaDistinct ).append( "," ); } // set PAGE attribute if( metaPage != UNDEFINED_PAGE ) { eql.append( PAGE_PARAM ).append( "=" ).append( metaPage ).append( "," ); } // set PAGESIZE attribute if( metaPagesize != UNDEFINED_PAGESIZE ) { eql.append( PAGE_SIZE_PARAM ).append( "=" ).append( metaPagesize ).append( "," ); } // remember 'Use built-in Count method' attribute if( metaUseBuiltinCount ) { builtinCount = metaUseBuiltinCount; } eql.append( " */ " ); } /** * Build EQL COUNT clause * @param eql EQL string */ protected void buildEQLCountClause( StringBuffer eql ) { eql.append( "COUNT(" ).append( getFields()[0].getId() ).append( ")" ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -