package gov.nasa.jpl.mbee.mdk.mms.sync.queue; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.log4j.Logger; import javax.swing.*; import java.util.concurrent.LinkedBlockingQueue; public class OutputQueue extends LinkedBlockingQueue<Request> { private Logger log = Logger.getLogger(OutputQueue.class); private final static OutputQueue instance = new OutputQueue(); private volatile Request current = null; private OutputQueue() { super(); } @Override public boolean offer(Request e) { boolean result = super.offer(e); SwingUtilities.invokeLater(() -> OutputQueueStatusConfigurator.getOutputQueueStatusAction().update()); return result; } public static OutputQueue getInstance() { return instance; } public void setCurrent(Request r) { this.current = r; } public Request getCurrent() { return current; } public void remove(int _rowNum) { //linkedQueue not contain current so the index of removing row is (_rowNum -1) if (this.size() >= _rowNum) { Request toBeRemoved = (Request) this.toArray()[_rowNum - 1]; if (toBeRemoved != null && toBeRemoved.getRequest() != null) { log.info("[INFO] Removing a queue: " + ((HttpEntityEnclosingRequestBase)toBeRemoved.getRequest()).getEntity().toString()); } super.remove(toBeRemoved); } } }