if ( context.isInFactory( ) ) { DataItemScriptExecutor.handleOnCreate( (DataContent) dataObj, context ); }
	public void execute( ReportItemDesign item, IContentEmitter emitter )	{		DataItemDesign dataItem = (DataItemDesign) item;		IDataContent dataObj = report.createDataContent( );		assert ( dataObj instanceof DataContent );		IContent parent = context.getContent( );		context.pushContent( dataObj );		openResultSet( item );		accessQuery( item, emitter );		initializeContent( parent, item, dataObj );		processAction( item, dataObj );		processBookmark( item, dataObj );		processStyle( item, dataObj );		processVisibility( item, dataObj );		if ( context.isInFactory( ) )		{			DataItemScriptExecutor.handleOnCreate( (DataContent) dataObj,					context );		}				Object value = context.evaluate( dataItem.getValue( ) );		// should we suppress the duplicate		boolean duplicated = false;		if ( dataItem.getSuppressDuplicate( ) )		{			DataItemExecutionState state = (DataItemExecutionState) dataItem					.getExecutionState( );			if ( state != null )			{				Object lastValue = state.lastValue;				if ( lastValue == value						|| ( lastValue != null && lastValue.equals( value ) ) )				{					duplicated = true;				}			}			if ( state == null )			{				state = new DataItemExecutionState( );				dataItem.setExecutionState( state );			}			state.lastValue = value;		}		dataObj.setValue( value );		// get the mapping value		processMappingValue( dataItem, dataObj );		if ( !duplicated )		{			startTOCEntry( dataObj );			// pass the text content instance to emitter			if ( emitter != null )			{				emitter.startData( dataObj );			}			finishTOCEntry( );		}		closeResultSet( );		context.popContent( );	}