?? userinfo.java
字號:
/* * @(#) UserInfo.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.utility.chat;//導入核心Java類庫import java.io.IOException;import java.io.StringReader;import java.net.MalformedURLException;import java.util.List;import java.util.Vector;import javax.swing.JOptionPane;//導入自定義Java類庫import hws.item.smart.Smart;import hws.item.smart.misc.XMLConfig;import hws.item.smart.utility.share.SharesInfo;//導入第三方Java類庫import org.jdom.Element;import org.jdom.Document;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.jdom.output.XMLOutputter;import org.apache.xmlrpc.XmlRpc;import org.apache.xmlrpc.XmlRpcClient;import org.apache.xmlrpc.XmlRpcRequest;import org.apache.xmlrpc.XmlRpcException;/** * 用戶信息 * * @version 0.1 2005-08-19 * @author Hwerz */public class UserInfo extends Object { /*------------------------------------------------------------------------* * 屬性定義 * *------------------------------------------------------------------------*/ /** * 靜態常量 */ private static final String MESSAGEPANE_TITLE = "提示"; /** * 基本信息 */ private BasicInfo basicInfo; /** * 可選信息 */ private OptionalInfo optionalInfo; /** * 好友信息 */ private FriendsInfo friendsInfo; /** * 共享信息 */ private SharesInfo sharesInfo; /*------------------------------------------------------------------------* * 構造函數 * *------------------------------------------------------------------------*/ /** * Create a new instance of this class * * @param info1 基本信息 * @param info2 可選信息 * @param info3 好友信息 * @param info4 共享信息 */ public UserInfo(BasicInfo info1, OptionalInfo info2, FriendsInfo info3, SharesInfo info4) { super(); basicInfo = info1; optionalInfo = info2; friendsInfo = info3; sharesInfo = info4; } /*------------------------------------------------------------------------* * 公共方法 * *------------------------------------------------------------------------*/ /** * 將指定的User元素轉換成UserInfo對象 * * @param user 指定的User元素 * @return 轉換后的UserInfo對象 */ public static UserInfo userElement2UserInfo(Element user) { Element element = user.getChild("Basic"); BasicInfo info1 = new BasicInfo( element.getChild("ID").getValue(), element.getChild("Nickname").getValue(), element.getChild("Password").getValue()); element = user.getChild("Optional"); OptionalInfo info2 = new OptionalInfo( element.getChild("Name").getValue(), element.getChild("Gender").getValue(), element.getChild("Birthday").getValue(), element.getChild("Country").getValue(), element.getChild("Province").getValue(), element.getChild("City").getValue(), element.getChild("Telephone").getValue(), element.getChild("Email").getValue(), element.getChild("Address").getValue(), element.getChild("Postalcode").getValue(), element.getChild("Homepage").getValue(), element.getChild("Remark").getValue()); element = user.getChild("Friends"); FriendsInfo info3 = new FriendsInfo(); List friends = element.getChildren(); for (int i = 0; i < friends.size(); i++) { Element friend = (Element) friends.get(i); info3.addFriend(friend.getAttributeValue("id")); } element = user.getChild("Shares"); SharesInfo info4 = SharesInfo.sharesElement2SharesInfo(element); return new UserInfo(info1, info2, info3, info4); } /** * 根據指定用戶的ID獲取遠程的用戶信息 * * @param id 指定用戶的ID * @return 遠程的用戶信息 */ public static UserInfo getRemoteUserInfo(String id) { UserInfo info = null; try { XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser"); XmlRpcClient client = new XmlRpcClient(genURL()); String response = client.execute(genRequest(id)).toString(); SAXBuilder builder = new SAXBuilder(); StringReader reader = new StringReader(response); Document document = builder.build(reader); Element root = document.getRootElement(); info = userElement2UserInfo(root.getChild("User")); } catch (ClassNotFoundException e) { JOptionPane.showMessageDialog(Smart.getInstance(), "系統找不到類庫“org.apache.xerces.parsers.SAXParser”!", MESSAGEPANE_TITLE, JOptionPane.INFORMATION_MESSAGE); } catch (MalformedURLException e) { e.printStackTrace(); } catch (XmlRpcException e) { e.printStackTrace(); } catch (IOException e) { JOptionPane.showMessageDialog(Smart.getInstance(), "用戶服務已關閉,請稍候再試!", MESSAGEPANE_TITLE, JOptionPane.INFORMATION_MESSAGE); } catch (JDOMException e) { e.printStackTrace(); } return info; } /** * 返回用戶基本信息 * * @return 用戶基本信息 */ public BasicInfo getBasicInfo() { return basicInfo; } /** * 返回用戶可選信息 * * @return 用戶可選信息 */ public OptionalInfo getOptionalInfo() { return optionalInfo; } /** * 返回用戶好友信息 * * @return 用戶好友信息 */ public FriendsInfo getFriendsInfo() { return friendsInfo; } /** * 返回用戶共享信息 * * @return 用戶共享信息 */ public SharesInfo getSharesInfo() { return sharesInfo; } /*------------------------------------------------------------------------* * 私有方法 * *------------------------------------------------------------------------*/ /** * 生成請求URL * * @return 生成的請求URL */ private static String genURL() { StringBuffer url = new StringBuffer(); url.append("http://"); url.append(XMLConfig.getServicesIP()); url.append(":"); url.append(XMLConfig.getUserPort()); url.append("/"); return url.toString(); } /** * 生成XML-RPC請求消息 * * @param id 指定用戶的ID * @return 生成的XML-RPC請求消息 */ private static XmlRpcRequest genRequest(String id) { //請求方法 StringBuffer method = new StringBuffer(); method.append(XMLConfig.getUserClass()); method.append("."); method.append(XMLConfig.getUserMethod()); //請求參數 Vector params = new Vector(); XMLOutputter outputter = new XMLOutputter(); params.addElement(outputter.outputString(genDocument(id))); return new XmlRpcRequest(method.toString(), params); } /** * 生成XML文檔 * * @param id 指定用戶的ID * @return 生成的XML文檔 */ private static Document genDocument(String id) { Element request = new Element("Request"); Element level1 = new Element("ID"); level1.setText(id); request.addContent(level1); return new Document(request); } /*------------------------------------------------------------------------* * 覆蓋方法 * *------------------------------------------------------------------------*/ /** * 覆蓋超類Object的方法 * * @return a string representation of the account */ public String toString() { return basicInfo.getID(); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -