package me.osm.gazetter.sortupdate; import java.io.File; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import me.osm.gazetter.Options; import me.osm.gazetter.join.JoinExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SortUpdate { private static final Logger log = LoggerFactory.getLogger(SortUpdate.class); private String dataDir; public SortUpdate(String dataDir) { this.dataDir = dataDir; } public void run() { ExecutorService executorService = Executors.newFixedThreadPool(Options.get().getNumberOfThreads()); for(File stripeF : new File(dataDir).listFiles(JoinExecutor.STRIPE_FILE_FN_FILTER)) { executorService.execute( new SortAndUpdateTask(stripeF)); } executorService.shutdown(); try { while(!executorService.awaitTermination(1, TimeUnit.MINUTES)) { //wait for end } } catch (InterruptedException e) { throw new RuntimeException("Execution service shutdown awaiting interrupted.", e); } log.info("Update slices done. {} lines was updated.", SortAndUpdateTask.countUpdatedLines()); } }