package op.threads; import op.OPDE; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * Created with IntelliJ IDEA. * User: tloehr * Date: 05.03.13 * Time: 13:41 * To change this template use File | Settings | File Templates. */ public class MessageQ { private List<DisplayMessage> messages; public MessageQ() { this.messages = Collections.synchronizedList(new ArrayList<DisplayMessage>()); } public synchronized void clear() { synchronized (messages) { messages.clear(); } } public synchronized void add(DisplayMessage message) { synchronized (messages) { messages.add(message); Collections.sort(messages); } } public synchronized void next() { synchronized (messages) { messages.remove(0); } } public synchronized boolean isEmpty() { boolean isEmpty; synchronized (messages) { isEmpty = messages.isEmpty(); } return isEmpty; } public synchronized boolean hasNextMessage() { boolean b; synchronized (messages) { b = messages.size() > 1; } return b; } public synchronized DisplayMessage getHead() { DisplayMessage head = null; synchronized (messages) { if (!messages.isEmpty()) { head = messages.get(0); } } return head; } public synchronized DisplayMessage getNextMessage() { DisplayMessage nextMessage = null; synchronized (messages) { if (messages.size() > 1) { nextMessage = messages.get(1); } } return nextMessage; } public synchronized void debug() { synchronized (messages) { if (messages.isEmpty()) { OPDE.debug("messageQ empty"); } else { for (DisplayMessage msg : messages) { OPDE.debug(msg); } } } } }