jtqueue.java

来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 141 行

JAVA
141
字号


package Jt;


/**
 * Implements a queue of objects.
 */

public class JtQueue extends JtList {


    private static final long serialVersionUID = 1L;
    public static final String JtCLASS_NAME = JtQueue.class.getName(); 
    public static final String JtENQUEUE = "JtENQUEUE";
    public static final String JtDEQUEUE = "JtDEQUEUE";

    public JtQueue() {
    }


    private Object test () {

        JtMessage msg;
        Object obj;


        // Enqueue couple of objects

        msg = new JtMessage (JtQueue.JtENQUEUE);
        msg.setMsgContent (new Integer (1));
        System.out.println ("Enqueue object ... " + new Integer (1));
        sendMessage (this, msg);


        msg = new JtMessage (JtQueue.JtENQUEUE);
        msg.setMsgContent (new Integer (2));
        System.out.println ("Enqueue object ... " + new Integer (2));
        sendMessage (this, msg);


        // Dequeue all the elements in the queue

        for (;;) {
            obj = (Object) sendMessage (this, new JtMessage (JtQueue.JtDEQUEUE));
            if (obj == null)
                break;
            System.out.println ("Dequeue object ... " + obj);
        }
        return (this);

    }

    /**
     * Process object messages.
     * <ul>
     * <li> JtENQUEUE - Enqueues the object specified by msgContent
     * <li> JtDEQUEUE - Dequeues and returns the object at the beginning of the queue.
     * </ul>
     * @param message Jt Message
     */

    public Object processMessage (Object message) {

        String msgid = null;
        JtMessage e = (JtMessage) message;
        Object content;
        //Object data;
        JtMessage tmp;


        if (e == null)
            return null;

        msgid = (String) e.getMsgId ();

        if (msgid == null)
            return null;

        content = e.getMsgContent();


        // Remove this object
        if (msgid.equals (JtObject.JtREMOVE)) {

            return (null);     
        }

        // Enqueue message
        if (msgid.equals (JtQueue.JtENQUEUE)) {
            // Add an object to the queue

            tmp = new JtMessage (JtList.JtADD);
            tmp.setMsgContent (content);    
            return (super.processMessage (tmp));
        }     


        // Dequeue message

        if (msgid.equals (JtQueue.JtDEQUEUE)) {

            return (super.processMessage (new JtMessage (JtList.JtREMOVE_FIRST)));
        }     


        // Test this object
        if (msgid.equals (JtObject.JtTEST)) {

            return (test ());     
        }


        return (super.processMessage(message));

    }


    /**
     * Demonstrates the messages processed by JtQueue.
     */ 

    public static void main(String[] args) {

        JtObject main = new JtObject ();
        JtQueue queue;


        // Create a Queue

        queue = (JtQueue) main.createObject (JtQueue.JtCLASS_NAME, "queue");

        main.sendMessage (queue, new JtMessage (JtObject.JtTEST));

        main.removeObject (queue);
    }

}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?