public Object clone() { try { // logger.debug("g.clone()"); final DefaultGroupSizeRecorder rec = (DefaultGroupSizeRecorder) super.clone(); rec.groupCounts = (IntList) groupCounts.clone(); rec.keys = (FastStack<GroupKey>) keys.clone(); return rec; } catch ( CloneNotSupportedException cse ) { throw new IllegalStateException( cse ); } }
private DefaultFlowController( final DefaultFlowController fc, final MasterDataRow dataRow ) { ArgumentNullException.validate( "fc", fc ); ArgumentNullException.validate( "dataRow", dataRow ); this.performanceMonitorContext = fc.performanceMonitorContext; this.reportContext = fc.reportContext; this.exportDescriptor = fc.exportDescriptor; this.dataContextStack = fc.dataContextStack.clone(); this.expressionsStack = fc.expressionsStack.clone(); this.advanceRequested = fc.advanceRequested; this.storedAdvanceRequested = fc.storedAdvanceRequested; this.dataRow = dataRow; this.parameters = fc.parameters; }
public GroupingState createGroupingState() { return new DefaultGroupingState( currentGroupIndex, groupStarts.clone() ); }
/** * Clones the expression. The expression should be reinitialized after the cloning. * <P> * Expressions maintain no state, cloning is done at the beginning of the report processing to disconnect the * expression from any other object space. * * @return a clone of this expression. * @throws CloneNotSupportedException * this should never happen. */ public Object clone() throws CloneNotSupportedException { final CrosstabProcessorFunction cps = (CrosstabProcessorFunction) super.clone(); if ( processingStack == null || processingStack.isEmpty() ) { return cps; } cps.processingStack = processingStack.clone(); return cps; }
public ProcessState clone() throws CloneNotSupportedException { final ProcessState result = (ProcessState) super.clone(); result.groupSequenceCounter = (LongSequence) groupSequenceCounter.clone(); result.crosstabColumnSequenceCounter = (LongSequence) crosstabColumnSequenceCounter.clone(); result.groupStarts = groupStarts.clone(); result.processKey = result.createKey(); result.recorder = (GroupSizeRecorder) recorder.clone(); return result; }
/** * 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 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(); } }
/** * 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(); } }