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

📄 user.java

📁 用java做的网页即时聊天系统。可以用于学习网页即时聊天功能的开发
💻 JAVA
字号:
// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   OpenCHAT.java

import java.io.PrintStream;
import java.net.URLDecoder;
import java.util.*;

class User
{

    User(String Domain, String type, String Room, String User, String serial, String pass, PrintStream ps, 
            String lang)
    {
        lastTime = System.currentTimeMillis();
        error = null;
        if(serial == null || pass == null || !serial.matches("^[0-9]+$") || !pass.matches("^[0-9]+$"))
        {
            error = "<h2><OpenCHAT:lang:User_error>: <OpenCHAT:lang:serial_or_pass_cant_be_null>.</h2><br><OpenCHAT:lang:check_your_charset> (" + OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET") + ").<br>";
            return;
        }
        this.Domain = Root.getDomain(Domain);
        this.type = type;
        this.Room = this.Domain.getRoom(type, Room);
        mySerial = serial;
        password = pass;
        this.ps = ps;
        defaultLang = lang;
        if(this.Room.Root.containsKey(User))
        {
            int i = 1;
            do
            {
                if(i <= 0)
                    break;
                if(!this.Room.Root.containsKey(User + (new Integer(i)).toString()))
                {
                    User = User + (new Integer(i)).toString();
                    break;
                }
                i++;
            } while(true);
        }
        this.User = Name = User;
        if(this.Room.put(this))
        {
            book.put(serial, this);
            keepAlive = new keepAlive(this);
            (new Thread(keepAlive, mySerial)).start();
        } else
        {
            OpenCHAT.p(" There was an unknown error while creating User Space!");
            error = "<OpenCHAT:lang:Unknown_error>.";
        }
    }

    static String newSerial()
    {
        return String.valueOf(serial++);
    }

    static User getUser(String serial, String pass)
    {
        User retUser;
        retUser = null;
        if(serial == null || pass == null || !serial.matches("^[0-9]+$") || !pass.matches("^[0-9]+$"))
            return null;
        int sec = 0;
        while(!book.containsKey(serial)) 
        {
            if(sec++ > 10)
                return null;
            try
            {
                Thread.currentThread();
                try {
					Thread.sleep(1000L);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }
            // Misplaced declaration of an exception variable
            catch(NullPointerException e) { }
        }
        retUser = (User)book.get(serial);
        if(!retUser.password.equals(pass))
            return null;
        retUser = null;
        return retUser;
    }

    boolean isAlive()
    {
        return ps != null;
    }

    void logout()
    {
        Room.sendAction(Name, "<OpenCHAT:lang:logged_out_the_room>");
        keepAlive.stop();
        book.remove(mySerial);
        Room.dropUser(Name);
        ps.close();
        try
        {
            finalize();
        }
        catch(Throwable e)
        {
            OpenCHAT.p(" Java error while finalize() method aplied in User object.");
        }
    }

    boolean send(String from, String action, String to, boolean priv, String msg)
    {
        String finalStr;
        try
        {
            finalStr = URLDecoder.decode(msg, OpenCHAT.getProperty("CHAT_DEFAULT_CHARSET"));
        }
        catch(Exception e)
        {
            finalStr = msg;
        }
        finalStr = finalStr.replace('<', ' ');
        finalStr = finalStr.replace('>', ' ');
        String fromStr = "";
        if(from.equals(to))
            fromStr = "<font color=0000FF>" + from + "</font>";
        else
        if(from.equals("CHAT"))
            fromStr = "<font color=FF0000>" + from + "</font>";
        else
            fromStr = "<font color=333333>" + from + "</font>";
        String toStr = "";
        if(Name.equals(to))
            toStr = "<font color=0000FF>" + to + "</font>";
        else
        if(to == null)
            toStr = "";
        else
        if(to.length() == 0)
            toStr = "<font color=FF0000><OpenCHAT:lang:All></font>";
        else
            toStr = "<font color=333333>" + to + "</font>";
        String privStr = priv ? " <OpenCHAT:lang:privatly>" : "";
        String bgColor = Name.equals(to) ? " bgcolor=EFEFEF" : "";
        boolean playSound = Name.equals(to);
        Calendar Date = Calendar.getInstance();
        String dateStr = (Date.get(11) >= 10 ? "" : "0") + Date.get(11) + ":" + (Date.get(12) >= 10 ? "" : "0") + Date.get(12) + ":" + (Date.get(13) >= 10 ? "" : "0") + Date.get(13);
        Hashtable messageHash = new Hashtable();
        messageHash.put("fromStr", fromStr);
        messageHash.put("dateStr", dateStr);
        messageHash.put("privStr", privStr);
        messageHash.put("actionStr", action);
        messageHash.put("toStr", toStr);
        messageHash.put("finalStr", finalStr);
        String message = Domain.getTemplate(type, "", "ReaderMessage");
        for(Enumeration e = messageHash.keys(); e.hasMoreElements();)
        {
            String key = (String)e.nextElement();
            message = message.replaceAll("<OpenCHAT:" + key + ">", (String)messageHash.get(key));
        }

        ps.print(apllyLang(message));
        OpenCHAT.p(" " + Name + " :: " + from + " (" + action + ") " + (to != null && to.length() != 0 ? to : "ALL") + ": " + msg);
        return true;
    }

    String apllyLang(String text)
    {
        return Domain.apllyLang(defaultLang, text);
    }

    static int serial = 1;
    static Hashtable book = new Hashtable();
    Domain Domain;
    String type;
    Room Room;
    String User;
    String Name;
    String mySerial;
    String password;
    keepAlive keepAlive;
    long lastTime;
    String error;
    String defaultLang;
    PrintStream ps;

}

⌨️ 快捷键说明

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