?? clientcommandhandler.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 + -