package com.constellio.app.modules.es.connectors.smb.queue; import java.util.Comparator; import java.util.concurrent.PriorityBlockingQueue; import com.constellio.app.modules.es.connectors.smb.jobmanagement.SmbConnectorJob; import com.constellio.app.modules.es.connectors.smb.utils.SmbUrlComparator; import com.constellio.app.modules.es.connectors.spi.ConnectorJob; public class SmbJobQueueSortedImpl implements SmbJobQueue { private int INITIAL_QUEUE_CAPACITY = 10_000; private PriorityBlockingQueue<SmbConnectorJob> jobsQueue; public SmbJobQueueSortedImpl() { init(); } @Override public void init() { jobsQueue = new PriorityBlockingQueue<>(INITIAL_QUEUE_CAPACITY, new Comparator<SmbConnectorJob>() { public int compare(SmbConnectorJob job1, SmbConnectorJob job2) { String url1 = job1.getUrl(); String url2 = job2.getUrl(); return new SmbUrlComparator().compare(url1, url2); } }); } @Override public boolean isEmpty() { return jobsQueue.isEmpty(); } @Override public int size() { return jobsQueue.size(); } @Override public SmbConnectorJob poll() { return jobsQueue.poll(); } @Override public boolean add(SmbConnectorJob job) { return jobsQueue.add(job); } @Override public void clear() { jobsQueue.clear(); } }