⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientcommandhandler.java

📁 一个J2ME Twitter 客户端的NetBeans项目
💻 JAVA
字号:
/*
 ******************************************************************************
    Handles responses from the Twitter server
    Copyright (C) 2007 Timothy Lim Sheng Hwee

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

 Author: Timothy Lim Sheng Hwee
 Email : LimShengHwee@gmail.com
******************************************************************************
 */

package Twittering;

import javax.microedition.lcdui.Displayable;
import java.util.Vector;
import javax.microedition.io.HttpConnection;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;



public class ClientCommandHandler implements Runnable{
    
    public static final int COMMAND_TWEET_LIST = 1;
    public static final int COMMAND_TWEET_UPDATE = 3;
    public static final int COMMAND_DIRECT_MSG_LIST = 4;
    public static final int COMMAND_DIRECT_MSG_SEND = 5;
    public static final int COMMAND_LIST_FRIENDS = 6;
    
    /** Creates a new instance of Client */
    private Form form;
    private boolean stop;
    private Twittering midlet;
    private Vector parameters;
    private int mode;
    
    public ClientCommandHandler(Twittering midlet, int m, Form f) {
        this.midlet = midlet;
        mode = m;
        form = f;
        stop = false;
        parameters = null;
    }
    
    public void stop() {
        stop = true;
    }
    
    public void start() {
        Thread t = new Thread(this);
        t.start();
    }
    public void addParameter(UriVariable var) {
        if (parameters == null) parameters = new Vector();
        parameters.addElement(var);
    }
    public void run() {
        String uri = "";
        String connType = "";
        String format = Constants.URI_FORMAT_XML;
        
        switch(mode) {
            case COMMAND_DIRECT_MSG_LIST:
            {
                uri = Constants.URI_LIST_DIRECT + format;
                connType = HttpConnection.GET;
                break;
            }
            case COMMAND_DIRECT_MSG_SEND:
            {
                uri = Constants.URI_SEND_DIRECT + format;
                connType = HttpConnection.POST;
                break;
            }
            case COMMAND_TWEET_LIST:
            {
                uri = Constants.URI_LIST_TIMELINE_FRIENDS + format;
                connType = HttpConnection.GET;
                break;
            }
            case COMMAND_TWEET_UPDATE:
            {
                uri = Constants.URI_SEND_TWEET + format;
                connType = HttpConnection.POST;
                break;
            }
            case COMMAND_LIST_FRIENDS:
            {
                uri = Constants.URI_LIST_FRIENDS + format;
                connType = HttpConnection.GET;
                break;
            }
        }
        
        String page = Functions.fetchPage(uri, connType, parameters, Functions.encode64(midlet.getData().getUser() + ":" + midlet.getData().getPass()));
        String[] entry;
        boolean processed = false;
        // simple way to process XML
        switch(mode) {
            case COMMAND_DIRECT_MSG_LIST:
            {
                while((entry = Functions.getXMLEntry("direct_message", page)) != null) {
                    page = entry[1];
                    String[] create = Functions.getXMLEntry("created_at", entry[0]);
                    String[] text = Functions.getXMLEntry("text", entry[0]);
                    String[] user = Functions.getXMLEntry("sender", entry[0]);
                    String[] user_screen_name = new String[2];
                    if (user != null) {
                        user_screen_name = Functions.getXMLEntry("screen_name", user[0]);
                    } else {
                        user_screen_name[0] = "";
                    }
                    processed = true;
                    StringItem strItem = new StringItem(create[0], "");
                    strItem.setFont(Font.getFont(Font.getDefaultFont().getFace(), Font.STYLE_PLAIN | Font.STYLE_UNDERLINED, Font.getDefaultFont().getSize()));
                    form.append(strItem);
                    strItem = new StringItem(user_screen_name[0], text[0]);
                    strItem.setFont(Font.getFont(Font.getDefaultFont().getFace(), Font.STYLE_BOLD, Font.getDefaultFont().getSize()));
                    form.append(strItem);
                    
                }
                
                break;
            }
            case COMMAND_DIRECT_MSG_SEND:
            {
                entry = Functions.getXMLEntry("direct_message", page);
                if (entry != null)
                {
                    String[] text = Functions.getXMLEntry("text", entry[0]);
                    processed = true;
                    if (text != null)
                    {
                        String[] sentTo = Functions.getXMLEntry("recipient_screen_name", entry[0]);
                        if (sentTo != null)
                            form.append(new StringItem("Sent direct message to " + sentTo[0], text[0]));
                        else
                        {
                            processed = false;
                            form.append(new StringItem("Error getting text: ", ""));
                        }
                        
                    }
                    else
                    {
                        processed = false;
                        form.append(new StringItem("Error getting text: ", ""));
                    }
                }                
                break;
            }
            case COMMAND_TWEET_LIST:
            {
                
                while((entry = Functions.getXMLEntry("status", page)) != null) {
                    page = entry[1];
                    String[] create = Functions.getXMLEntry("created_at", entry[0]);
                    String[] text = Functions.getXMLEntry("text", entry[0]);
                    String[] user = Functions.getXMLEntry("user", entry[0]);
                    String[] user_screen_name = new String[2];
                    if (user != null) {
                        user_screen_name = Functions.getXMLEntry("screen_name", user[0]);
                    } else {
                        user_screen_name[0] = "";
                    }
                    processed = true;
                    form.append(new StringItem(user_screen_name[0], text[0] + "\n" + create[0]));
                }
                break;
            }
            case COMMAND_TWEET_UPDATE:
            {
                
                entry = Functions.getXMLEntry("status", page);
                if (entry != null)
                {
                    String[] status = Functions.getXMLEntry("text", entry[0]);
                    if (status != null)
                    {
                        form.append(new StringItem("Update sent", status[0]));
                        processed = true;
                    }
                    else
                        form.append(new StringItem("Error getting status: ", page));
                        
                }                
                break;
            }
            case COMMAND_LIST_FRIENDS:
            {
                try
                {
                    midlet.getDB().open();
                    midlet.getDB().delete(midlet.DB_FRIENDS);
                    midlet.getData().setFriends(new Vector());
                    midlet.getData().getFriends();

                    while((entry = Functions.getXMLEntry("user", page)) != null)
                    {
                        page = entry[1];
                        String[] user_screen_name = Functions.getXMLEntry("screen_name", entry[0]);
                        
                        processed = true;
                        if (user_screen_name != null)
                        {
                            midlet.getData().addFriend(user_screen_name[0]);
                            //System.out.println(midlet.getData());
                            midlet.getDB().write(midlet.DB_FRIENDS, user_screen_name[0], true);
                        }
                    }
                    Vector v = midlet.getData().getFriends();
                    midlet.append_friendList(v, form);
                    midlet.getDB().close();
                }
                catch(Exception e)
                {
                    midlet.getDisplay().setCurrent(
                            midlet.get_PopupPage("ERROR", "DB error: " +  midlet.getDB().getError().getMessage(), null, AlertType.ERROR),
                            midlet.getDisplay().getCurrent());
                }
                
                form.delete(0);
                form.insert(0, new StringItem("Friends list refreshed", page));
                break;
            }
        }
        if (!processed)
            form.append(new StringItem("ERROR", page));
        form.delete(0);
    }
    
    
}

⌨️ 快捷键说明

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