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

📄 userinfo.java

📁 该系统是一个基于p2p的即时聊天系统
💻 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 + -