private void indexGeoEntries( final IndexWriter indexWriter, final List<GeoEntry> geoEntryList, final ProgressCallback progressCallback) throws IOException { int progress = 0; int currentEntry = 0; final int numGeoEntries = geoEntryList.size(); for (GeoEntry geoEntry : geoEntryList) { addDocument(indexWriter, geoEntry); if (currentEntry == (int) (numGeoEntries * (progress / 100.0f))) { if (progressCallback != null) { progressCallback.updateProgress(progress); } progress += 5; } ++currentEntry; } // Since we start counting the GeoEntries at 0, the progress callback won't be called in the // above loop when progress is 100. In any case, we need to give a progress update when // the work is complete. if (progressCallback != null) { progressCallback.updateProgress(100); } }