/** * Returns the handler for a child element. * * @param tagName * the tag name. * @param atts * the attributes. * @return the handler or null, if the tagname is invalid. * @throws org.xml.sax.SAXException * if there is a parsing error. */ protected XmlReadHandler getHandlerForChild( final String uri, final String tagName, final PropertyAttributes atts ) throws SAXException { if ( getUri().equals( uri ) == false ) { return null; } if ( tagName.equals( GroupReadHandler.GROUP_HEADER_TAG ) ) { return new GroupHeaderReadHandler( group.getHeader() ); } else if ( tagName.equals( GroupReadHandler.GROUP_FOOTER_TAG ) ) { return new GroupFooterReadHandler( group.getFooter() ); } else if ( tagName.equals( GroupReadHandler.FIELDS_TAG ) ) { return new GroupFieldsReadHandler( group ); } return null; }
/** * Returns the handler for a child element. * * @param tagName * the tag name. * @param atts * the attributes. * @return the handler or null, if the tagname is invalid. * @throws org.xml.sax.SAXException * if there is a parsing error. */ protected XmlReadHandler getHandlerForChild( final String uri, final String tagName, final PropertyAttributes atts ) throws SAXException { if ( isSameNamespace( uri ) == false ) { return null; } if ( tagName.equals( GroupReadHandler.GROUP_HEADER_TAG ) ) { return new RootBandReadHandler( group.getHeader() ); } else if ( tagName.equals( GroupReadHandler.GROUP_FOOTER_TAG ) ) { return new RootBandReadHandler( group.getFooter() ); } else if ( tagName.equals( GroupReadHandler.FIELDS_TAG ) ) { return new GroupFieldsReadHandler( group ); } return null; }
/** * Writes the header of the current group. * * @param event * the event. */ public void groupStarted( final ReportEvent event ) { if ( event.getState().isPrepareRun() ) { return; } try { final Group g = event.getReport().getGroup( event.getState().getCurrentGroupIndex() ); if ( g instanceof RelationalGroup ) { RelationalGroup rg = (RelationalGroup) g; w.write( "<groupheader name=\"" ); w.write( entityParser.encodeEntities( g.getName() ) ); w.write( "\">" ); writeBand( rg.getHeader() ); w.write( "</groupheader>" ); } } catch ( IOException ioe ) { XMLWriter.logger.error( "Error writing the band", ioe ); } }
@Test public void testSetHeader() { GroupHeader header = new GroupHeader(); GroupHeader prevHeader = group.getHeader(); header.setParent( group ); group.setHeader( header ); assertThat( group.getHeader(), is( equalTo( prevHeader ) ) ); header.setParent( null ); group.setHeader( header ); assertThat( group.getHeader(), is( equalTo( header ) ) ); }
@Test public void testRemoveElement() { GroupHeader header = group.getHeader(); GroupFooter footer = group.getFooter(); group.removeElement( mock( Element.class ) ); assertThat( group.getFooter(), is( equalTo( footer ) ) ); assertThat( group.getHeader(), is( equalTo( header ) ) ); group.removeElement( footer ); assertThat( group.getFooter(), is( not( equalTo( footer ) ) ) ); assertThat( group.getHeader(), is( equalTo( header ) ) ); group.removeElement( header ); assertThat( group.getFooter(), is( not( equalTo( footer ) ) ) ); assertThat( group.getHeader(), is( not( equalTo( header ) ) ) ); }
@Test public void testClone() { RelationalGroup result = group.clone(); assertThat( result, is( not( sameInstance( group ) ) ) ); assertThat( result.getHeader(), is( not( sameInstance( group.getHeader() ) ) ) ); assertThat( result.getFooter(), is( not( sameInstance( group.getFooter() ) ) ) ); assertThat( (RelationalGroup) result.getHeader().getParentSection(), is( equalTo( result ) ) ); assertThat( (RelationalGroup) result.getFooter().getParentSection(), is( equalTo( result ) ) ); }
public void groupStarted( final ReportEvent event ) { final int gidx = event.getState().getCurrentGroupIndex(); final RelationalGroup group = (RelationalGroup) event.getReport().getGroup( gidx ); this.template.write( group.getHeader(), getRuntime() ); }
@Test public void testSetElementAt() { GroupHeader header = mock( GroupHeader.class ); SubGroupBody body = mock( SubGroupBody.class ); GroupFooter footer = mock( GroupFooter.class ); group.setElementAt( 0, header ); group.setElementAt( 1, body ); group.setElementAt( 2, footer ); assertThat( group.getHeader(), is( equalTo( header ) ) ); assertThat( (SubGroupBody) group.getBody(), is( equalTo( body ) ) ); assertThat( group.getFooter(), is( equalTo( footer ) ) ); }
@Before public void setUp() { group = new RelationalGroup(); assertThat( group.getElementType(), is( instanceOf( RelationalGroupType.class ) ) ); assertThat( group.getHeader(), is( notNullValue() ) ); assertThat( group.getFooter(), is( notNullValue() ) ); }
public ProcessState advance( final ProcessState state ) throws ReportProcessingException { final ProcessState next = state.deriveForAdvance(); next.enterGroup(); next.fireReportEvent(); next.enterPresentationGroup(); final RelationalGroup group = (RelationalGroup) next.getReport().getGroup( next.getCurrentGroupIndex() ); return InlineSubreportProcessor.processInline( next, group.getHeader() ); }
/** * Applies the defined flags to the report. * * @param event * the report event. */ public void reportInitialized( final ReportEvent event ) { final boolean isTable = exportDescriptor != null && getRuntime().getExportDescriptor().startsWith( exportDescriptor ); final ReportDefinition report = event.getReport(); if ( isHidePageBands() ) { report.getPageHeader().setVisible( isTable == false ); report.getPageFooter().setVisible( isTable == false ); } if ( isDisableRepeatingHeader() ) { final int gc = report.getGroupCount(); for ( int i = 0; i < gc; i++ ) { final Group g = report.getGroup( i ); if ( g instanceof RelationalGroup ) { final RelationalGroup rg = (RelationalGroup) g; if ( rg.getHeader().isRepeat() ) { rg.getHeader().setRepeat( isTable == false ); } } } } }
public ProcessState commit( final ProcessState next ) throws ReportProcessingException { if ( hasMoreGroups( next ) == false ) { next.setAdvanceHandler( BeginDetailsHandler.HANDLER ); } else { // it is safe to query the next group instance here ... final Group nextGroup = next.getReport().getGroup( next.getCurrentGroupIndex() + 1 ); if ( nextGroup instanceof CrosstabGroup ) { next.setAdvanceHandler( BeginCrosstabHandler.HANDLER ); } // else stick with begin-group as there will be a next group to start .. } final RelationalGroup group = (RelationalGroup) next.getReport().getGroup( next.getCurrentGroupIndex() ); final RootLevelBand rootLevelBand = group.getHeader(); return InlineSubreportProcessor.processBandedSubReports( next, rootLevelBand ); }
writeRootBand( ReportDescriptionWriter.GROUP_HEADER_TAG, g.getHeader() ); writeRootBand( ReportDescriptionWriter.GROUP_FOOTER_TAG, g.getFooter() );
@Test public void testInitializeForSubreport() throws Exception { MasterReport masterReport = new MasterReport(); ProcessingContext processingContext = new DefaultProcessingContext(); OutputFunction outputFunction = new DefaultOutputFunction(); SubReport subReportSpy = spy( new SubReport() ); InstanceID instanceID = new InstanceID(); InlineSubreportMarker[] inlineSubreportMarkers = new InlineSubreportMarker[1]; inlineSubreportMarkers[0] = new InlineSubreportMarker( subReportSpy, instanceID, SubReportProcessType.INLINE ); ProcessState parentProcessStateSpy = spy( new ProcessState() ); ProcessState processState = new ProcessState(); masterReport.getRelationalGroup( 0 ).getHeader().addSubReport( subReportSpy ); masterReport.setQueryLimit( 3 ); subReportSpy.reconnectParent( masterReport ); when( subReportSpy.isQueryLimitInherited() ).thenReturn( false ).thenReturn( true ); when( parentProcessStateSpy.getReport() ).thenReturn( masterReport ); parentProcessStateSpy.initializeForMasterReport( masterReport, processingContext, outputFunction ); processState.initializeForSubreport( inlineSubreportMarkers, 0, parentProcessStateSpy ); assertEquals( Integer.valueOf( -1 ), processState.getQueryLimit() ); processState.initializeForSubreport( inlineSubreportMarkers, 0, parentProcessStateSpy ); assertEquals( Integer.valueOf( 3 ), processState.getQueryLimit() ); } }
if ( g instanceof RelationalGroup ) { final RelationalGroup rg = (RelationalGroup) g; final GroupHeader header = rg.getHeader(); if ( isGroupSectionPrintableInternal( header, true, true ) ) { print( level.getRuntime(), header ); if ( g instanceof RelationalGroup ) { final RelationalGroup rg = (RelationalGroup) g; final GroupHeader header = rg.getHeader(); if ( isGroupSectionPrintableInternal( header, false, true ) ) { if ( runtime == null ) {
public void groupStarted( final DefaultOutputFunction outputFunction, final ReportEvent event ) throws ReportProcessingException { final int gidx = event.getState().getCurrentGroupIndex(); final RelationalGroup group = (RelationalGroup) event.getReport().getGroup( gidx ); final Band b = group.getHeader(); final GroupBody groupBody = group.getBody(); outputFunction.updateFooterArea( event ); final Renderer renderer = outputFunction.getRenderer(); renderer.startGroup( group, event.getState().getPredictedStateCount() ); renderer.startSection( Renderer.SectionType.NORMALFLOW ); outputFunction.print( outputFunction.getRuntime(), b ); outputFunction.addSubReportMarkers( renderer.endSection() ); renderer.startGroupBody( groupBody, event.getState().getPredictedStateCount() ); }
public void testCreate() throws Exception { final RelationalGroup g1 = new RelationalGroup(); assertNotNull( g1.clone() ); assertNotNull( g1.getFields() ); assertNotNull( g1.getFooter() ); assertNotNull( g1.getHeader() ); assertNotNull( g1.getName() ); assertNotNull( g1.toString() ); }
private void configureGroupHeader( final GroupDefinition groupDefinition, final RelationalGroup g, final boolean anyHeaderPrinted ) { final GroupHeader header = g.getHeader(); header.setLayout( "row" ); header.getStyle().setStyleProperty( ElementStyleKeys.INVISIBLE_CONSUMES_SPACE, true ); header.setRepeat( true ); header.addElement( createLabel( "H: " + groupDefinition.getGroupField(), 120 ) ); if ( groupDefinition.isHeader() ) { header.addElement( createFieldItem( groupDefinition.getGroupField() ) ); } else if ( anyHeaderPrinted ) { header.addElement( createLabel( " " ) ); } if ( groupDefinition.isHeaderAggregation() ) { for ( int d = 0; d < details.size(); d += 1 ) { final RelationalDetail relationalDetail = details.get( d ); header.addElement( createFieldItem( relationalDetail.getField(), relationalDetail.getAggregation(), relationalDetail.getBackground() ) ); } } }