Buggy code:
@ SuppressWarnings ( "nls" ) public abstract class ExportJob extends Job { protected static final int PROGRESS_UPDATE_LINES = 1000 ; protected final String comment ; protected final Model model ; protected final Timestamp start ; protected final Timestamp end ; protected final Source source ; protected final int optimize_count ; protected final String filename ; protected final ExportErrorHandler error_handler ; protected ValueFormatter formatter ; private final CopyOnWriteArrayList < ArchiveReader > archive_readers = new CopyOnWriteArrayList < ArchiveReader > ( ) ; class CancellationPoll extends Thread { private final IProgressMonitor monitor ; volatile boolean exit = false ; public CancellationPoll ( final IProgressMonitor monitor ) { } @ Override public void run ( ) { } } public ExportJob ( final String comment , final Model model , final Timestamp start , final Timestamp end , final Source source , final int optimize_count , final String filename , final ExportErrorHandler error_handler ) { } @ Override protected final IStatus run ( final IProgressMonitor monitor ) { } protected void printExportInfo ( final PrintStream out ) { } protected abstract void performExport ( final IProgressMonitor monitor , final PrintStream out ) throws Exception { } protected void printItemInfo ( final PrintStream out , final ModelItem item ) { } protected ValueIterator createValueIterator ( final ModelItem item ) throws Exception { if ( ( ( source ) == ( Source . PLOT ) ) || ( ! ( item instanceof PVItem ) ) ) { ModelSampleIterator it = new ModelSampleIterator ( item , start , end ) ; formatter . useMinMaxColumn ( it . isHasVStatisticsType ( ) ) ; return it ; } final ArchiveDataSource [ ] archives = ( ( PVItem ) ( item ) ) . getArchiveDataSources ( ) ; final ValueIterator [ ] iters = new ValueIterator [ archives . length ] ; for ( int i = 0 ; i < ( iters . length ) ; ++ i ) { final ArchiveReader reader = ArchiveRepository . getInstance ( ) . getArchiveReader ( archives [ i ] . getUrl ( ) ) ; archive_readers . add ( reader ) ; <START_BUG> if ( ( reader . getNamesByRegExp ( archives [ i ] . getKey ( ) , item . getName ( ) ) . length ) == 0 ) <END_BUG> continue ; if ( ( ( source ) == ( Source . OPTIMIZED_ARCHIVE ) ) && ( ( optimize_count ) > 1 ) ) { reader . getOptimizedValues ( archives [ i ] . getKey ( ) , item . getName ( ) , start , end , optimize_count ) ; iters [ i ] = reader . getOptimizedValues ( archives [ i ] . getKey ( ) , item . getName ( ) , start , end , optimize_count ) ; } else if ( ( source ) == ( Source . BINNED ) ) { reader . getOptimizedValues ( archives [ i ] . getKey ( ) , item . getName ( ) , start , end , Preferences . getPlotBins ( ) ) ; iters [ i ] = reader . getOptimizedValues ( archives [ i ] . getKey ( ) , ( ( ( item . getName ( ) ) + "<seq2seq4repair_space>" ) + ( source . name ( ) ) ) , start , end , Preferences . getPlotBins ( ) ) ; } else { reader . getRawValues ( archives [ i ] . getKey ( ) , item . getName ( ) , start , end ) ; iters [ i ] = reader . getRawValues ( archives [ i ] . getKey ( ) , item . getName ( ) , start , end ) ; } if ( reader instanceof MySqlArchiveReader ) formatter . useMinMaxColumn ( ( ( MySqlArchiveReader ) ( reader ) ) . isVStatisticType ( ) ) ; } return new org . csstudio . archive . reader . MergingValueIterator ( iters ) ; } }

Fix:
if ( ( reader . getNamesByRegExp ( archives [ i ] . getKey ( ) , item . getName ( ) ) ) == null )