📄 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 + -