/** * Returns the current indention level. * * @return the indention level. */ public int getCurrentIndentLevel() { return additionalIndent + openTags.size(); }
public int getStateCount() { return dcStack.size(); }
public void leaveGroup() { recorder.leaveGroup(); if ( groupStarts.size() != currentGroupIndex + 1 ) { throw new IllegalStateException(); } currentGroupIndex -= 1; groupStarts.pop(); }
protected String[] computeFileNames( FileName file ) { final FastStack<String> stack = new FastStack<String>(); while ( file != null ) { String name; try { name = URLDecoder.decode( file.getBaseName().trim().replaceAll( "\\+", "%2B" ), "UTF-8" ); } catch ( UnsupportedEncodingException e ) { name = file.getBaseName().trim(); } if ( !"".equals( name ) ) { stack.push( name ); } file = file.getParent(); } final int size = stack.size(); final String[] result = new String[ size ]; for ( int i = 0; i < result.length; i++ ) { result[ i ] = stack.pop(); } return result; }
/** * Indent the line. Called for proper indenting in various places. * * @param writer the writer which should receive the indentention. * @throws java.io.IOException if writing the stream failed. */ public void indent( final Writer writer ) throws IOException { if ( openTags.isEmpty() ) { for ( int i = 0; i < additionalIndent; i++ ) { writer.write( indentString ); } return; } final ElementLevel level = (ElementLevel) openTags.peek(); if ( getTagDescription().hasCData( level.getNamespace(), level.getTagName() ) == false ) { doEndOfLine( writer ); for ( int i = 0; i < openTags.size(); i++ ) { writer.write( indentString ); } for ( int i = 0; i < additionalIndent; i++ ) { writer.write( indentString ); } } }
public int getGroupStartRow( final int group ) { if ( group < 0 || group >= groupStarts.size() ) { if ( groupStarts.isEmpty() ) { return 0; } final GroupStartRecord o = groupStarts.peek(); return o.getRow(); } final GroupStartRecord o = groupStarts.get( group ); return o.getRow(); } }
/** * Indent the line. Called for proper indenting in various places. * * @param writer the writer which should receive the indentention. * @throws java.io.IOException if writing the stream failed. */ public void indentForClose( final Writer writer ) throws IOException { if ( openTags.isEmpty() ) { for ( int i = 0; i < additionalIndent; i++ ) { writer.write( indentString ); } return; } final ElementLevel level = (ElementLevel) openTags.peek(); if ( getTagDescription().hasCData( level.getNamespace(), level.getTagName() ) == false ) { doEndOfLine( writer ); for ( int i = 1; i < openTags.size(); i++ ) { writer.write( indentString ); } for ( int i = 0; i < additionalIndent; i++ ) { writer.write( indentString ); } } }
protected String[] computeFileNames( FileName file ) { final FastStack stack = new FastStack(); while ( file != null ) { final String name = file.getBaseName(); stack.push( name ); file = file.getParent(); } final int size = stack.size(); final String[] result = new String[ size ]; for ( int i = 0; i < result.length; i++ ) { result[ i ] = (String) stack.pop(); } return result; }
private RepositoryFileTreeDto searchTreeNode( FastStack<String> fullName, RepositoryFileTreeDto treeNode ) { // no more name parts to search, found file in subtree if ( fullName.size() == 0 ) { return treeNode; } // search recursively for each name part in subtree final String fileOrDirName = fullName.peek(); final List<RepositoryFileTreeDto> children = treeNode.getChildren(); for ( final RepositoryFileTreeDto child : children ) { final String childName = child.getFile().getName(); if ( fileOrDirName.equals( childName ) ) { fullName.pop(); return searchTreeNode( fullName, child ); } } // didn't find file return null; }
public void enterGroup() { recorder.enterGroup(); currentGroupIndex += 1; final Group group = report.getGroup( currentGroupIndex ); groupStarts.push( new GroupStartRecord( getCurrentRow(), group.getName(), group.getGeneratedName() ) ); groupSequenceCounter.increment( currentGroupIndex ); groupSequenceCounter.set( currentGroupIndex + 1, 0 ); if ( groupStarts.size() != currentGroupIndex + 1 ) { throw new IllegalStateException(); } }
public int getGroupStartRow( final String group ) { final int size = groupStarts.size(); for ( int i = 0; i < size; i++ ) { final GroupStartRecord o = groupStarts.get( i ); if ( ObjectUtilities.equal( o.getGroupName(), group ) ) { return o.getRow(); } if ( ObjectUtilities.equal( o.getGeneratedGroupName(), group ) ) { return o.getRow(); } } return 0; }
/** * Creates a cheaper version of the deep-copy of the output function. A pagebreak-derivate is created on every * possible pagebreak position and must contain all undo/rollback information to restore the state of any shared * object when a roll-back is requested. * <p/> * Any failure to implement this method correctly will be a great source of very subtle bugs. * * @return the deep clone. */ public OutputFunction deriveForPagebreak() { try { final DefaultOutputFunction sl = (DefaultOutputFunction) super.clone(); sl.repeatingFooterValidator = repeatingFooterValidator.clone(); sl.renderer = renderer.deriveForPagebreak(); sl.inlineSubreports = (ArrayList<InlineSubreportMarker>) inlineSubreports.clone(); sl.currentEvent = null; sl.pagebreakHandler = (DefaultLayoutPagebreakHandler) pagebreakHandler.clone(); sl.outputHandlers = outputHandlers.clone(); sl.renderedCrosstabLayouts = renderedCrosstabLayouts.clone(); sl.renderedCrosstabLayouts.clear(); final int rSize = renderedCrosstabLayouts.size(); for ( int i = 0; i < rSize; i++ ) { final RenderedCrosstabLayout o = renderedCrosstabLayouts.get( i ); sl.renderedCrosstabLayouts.push( o.derive() ); } return sl; } catch ( final CloneNotSupportedException e ) { throw new IllegalStateException(); } }
/** * Clones the function. * <P> * Be aware, this does not create a deep copy. If you have complex strucures contained in objects, you have to * override this function. * * @return a clone of this function. * @throws CloneNotSupportedException * this should never happen. */ public final Object clone() throws CloneNotSupportedException { final DefaultOutputFunction sl = (DefaultOutputFunction) super.clone(); sl.repeatingFooterValidator = repeatingFooterValidator.clone(); sl.currentEvent = null; sl.inlineSubreports = (ArrayList<InlineSubreportMarker>) inlineSubreports.clone(); sl.outputHandlers = outputHandlers.clone(); sl.renderedCrosstabLayouts = renderedCrosstabLayouts.clone(); sl.renderedCrosstabLayouts.clear(); final int rSize = renderedCrosstabLayouts.size(); for ( int i = 0; i < rSize; i++ ) { final RenderedCrosstabLayout o = renderedCrosstabLayouts.get( i ); sl.renderedCrosstabLayouts.push( (RenderedCrosstabLayout) o.clone() ); } return sl; }
/** * Creates a storage-copy of the output function. A storage copy must create a deep clone of all referenced objects so * that it is guaranteed that changes to either the original or the clone do not affect the other instance. * <p/> * Any failure to implement this method correctly will be a great source of very subtle bugs. * * @return the deep clone. */ public OutputFunction deriveForStorage() { try { final DefaultOutputFunction sl = (DefaultOutputFunction) super.clone(); sl.repeatingFooterValidator = repeatingFooterValidator.clone(); sl.renderer = renderer.deriveForStorage(); sl.inlineSubreports = (ArrayList<InlineSubreportMarker>) inlineSubreports.clone(); sl.currentEvent = null; sl.pagebreakHandler = (DefaultLayoutPagebreakHandler) pagebreakHandler.clone(); sl.pagebreakHandler.setReportState( null ); sl.outputHandlers = outputHandlers.clone(); sl.renderedCrosstabLayouts = renderedCrosstabLayouts.clone(); sl.renderedCrosstabLayouts.clear(); final int rSize = renderedCrosstabLayouts.size(); for ( int i = 0; i < rSize; i++ ) { final RenderedCrosstabLayout o = renderedCrosstabLayouts.get( i ); sl.renderedCrosstabLayouts.push( o.derive() ); } return sl; } catch ( final CloneNotSupportedException e ) { throw new IllegalStateException(); } }
final int openContexts = contexts.size(); for ( int i = 0; i < openContexts; i++ ) { final RenderBox renderBox = contexts.get( i );
final int size = context.size(); final ArrayList<RenderBox> paddingBoxes = new ArrayList<RenderBox>( size ); for ( int i = 0; i < size; i++ ) {