📄 msgmanager.java
字号:
package msg;
import msg.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.sql.*;
public class MsgManager{
String sql="";
ResultSet rs=null;
DbConn db=null;
public MsgManager(){
try{
db=new msg.DbConn();
}catch(Exception e){}
}
/**
*以XML方式将message内容打包成字符串
*调用者:msgManager.jsp (客户端和访问者读取短信息 a=1 a=10 a=11)
*@param messages 短信息组
*@return String 短信息字符串
*/
public String readMsgInXml(Message[] messages){
//Message[] messages=readMsg(toId);
String msgToBeSent="<xml id=\"messages\"><?xml version=\"1.0\" encoding=\"utf-8\" ?>";
for(int i=0;messages!=null && i<messages.length;i++){
if(messages[i].getType().equals("ONPAGEINIT") || messages[i].getType().equals("ONPAGE")||
messages[i].getType().equals("SETNOTE"))
msgToBeSent +="<M id=\""+messages[i].getId()+"\" tp=\""+messages[i].getType()+"\" f=\""+messages[i].getFromId()+
"\" t=\""+messages[i].getToId()+"\" m=\"\" tm=\""+messages[i].getSendTime()+
"\" rm=\""+messages[i].getReadTime()+"\" s=\""+messages[i].isRead()+"\"/> "+messages[i].getContent();
else
msgToBeSent +="<M id=\""+messages[i].getId()+"\" tp=\""+messages[i].getType()+"\" f=\""+messages[i].getFromId()+
"\" t=\""+messages[i].getToId()+"\" m=\""+messages[i].getContent()+"\" tm=\""+messages[i].getSendTime()+
"\" rm=\""+messages[i].getReadTime()+"\" s=\""+messages[i].isRead()+"\"/>";
}
msgToBeSent +="</xml>";
return msgToBeSent;
}
/**
*以XML方式读取短信 message内容被放在变量m中发送
*调用者:
*@param messages 短信息组
*@return String 短信息字符串
*/
public String readMsgInXml0(Message[] messages){
//Message[] messages=readMsg(toId);
String msgToBeSent="<xml id=\"messages\"><?xml version=\"1.0\" encoding=\"utf-8\" ?>";
for(int i=0;messages!=null && i<messages.length;i++){
msgToBeSent +="<M id=\""+messages[i].getId()+"\" tp=\""+messages[i].getType()+"\" f=\""+messages[i].getFromId()+
"\" t=\""+messages[i].getToId()+"\" m=\""+messages[i].getContent()+"\" tm=\""+messages[i].getSendTime()+
"\" rm=\""+messages[i].getReadTime()+"\" s=\""+messages[i].isRead()+"\"/>";
}
msgToBeSent +="</xml>";
return msgToBeSent;
}
/**
*以XML方式读取短信 message内容被放在变量m中发送,整个xml被放在一个变量xyz中,然后调用ProcessMsg(xyz)
*调用者:msgManager.jsp (该方法被浏览者浮动窗读取短信时调用 a=3)
*@param messages 短信息组
*@return String 短信息字符串
*/
public String readMsgInXml1(Message[] messages){
//Message[] messages=readMsg(toId);
String msgToBeSent="xyz=\"<xml id=\\\'messages\\\'><?xml version=\\\'1.0\\\' encoding=\\\'utf-8\\\' ?>";
for(int i=0;messages!=null && i<messages.length;i++){
msgToBeSent +="<M id=\\\'"+messages[i].getId()+"\\\' tp=\\\'"+messages[i].getType()+"\\\' f=\\\'"+
messages[i].getFromId()+"\\\' t=\\\'"+messages[i].getToId()+"\\\' m=\\\'"+
messages[i].getContent()+"\\\' tm=\\\'"+messages[i].getSendTime()+
"\\\' rm=\\\'"+messages[i].getReadTime()+"\\\' s=\\\'"+messages[i].isRead()+"\\\'/>";
}
msgToBeSent +="</xml>\";ProcessMsg(xyz);";
return msgToBeSent;
}
/**
*从数据库读取还没有读过的短信息,生成短信息组
*调用者:msgManager.jsp(a=1客户端读取短信 a=10时为客户端读取短信 a=3时为浏览者浮动窗口读取短信)
*@param toId 访问者或客户端id
*@return 返回短信息组
*/
public Message[] readMsg(String toId){
Message[] messages=null;
try{
sql="select * from message where toId=\""+toId+"\" and isRead=\"0\" order by id";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last()){
messages=new Message[rs.getRow()];
rs.beforeFirst();
}
Calendar now= Calendar.getInstance();
String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));
for(int i=0;messages!=null &&i<messages.length && rs!=null && rs.next();i++){
//Message(String id,String fromId,String toId,String content,String sendTime,String readTime,String type,boolean read)
messages[i]=new Message(rs.getString("id"),rs.getString("fromId"),rs.getString("toId"),rs.getString("content"),
rs.getString("sendTime"),nowStr,rs.getString("type"),rs.getString("isRead"));
}
//markMessageAsRead(messages); //
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
for(int i=0;messages!=null && i<messages.length;i++){
if(messages[i].getType().equals("ONPAGEINIT") || messages[i].getType().equals("ONPAGE")||
messages[i].getType().equals("SETNOTE")){
if(i==0)
return new Message[]{messages[0]};
else{
Message[] theMessages=new Message[i];
for(int j=0;j<i;j++)
theMessages[j]=messages[j];
messages=null;
return theMessages;
}
}
}
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:readMsg() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return messages;
}
/**
*从数据库读取还没有读过的短信息(留言),生成短信息组
*调用者:client.jsp
*@param toId 客户端id
*@return 返回短信息组
*/
public Message[] readLeftMsg(String toId){
Message[] messages=null;
try{
sql="select * from message where toId=\""+toId+"\" and isRead=\"2\" order by id";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last()){
messages=new Message[rs.getRow()];
rs.beforeFirst();
}
Calendar now= Calendar.getInstance();
String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));
for(int i=0;messages!=null &&i<messages.length && rs!=null && rs.next();i++){
//Message(String id,String fromId,String toId,String content,String sendTime,String readTime,String type,boolean read)
messages[i]=new Message(rs.getString("id"),rs.getString("fromId"),rs.getString("toId"),rs.getString("content"),
rs.getString("sendTime"),nowStr,rs.getString("type"),rs.getString("isRead"));
}
//markMessageAsRead(messages); //
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
//for(int i=0;messages!=null && i<messages.length;i++){
//if(messages[i].getType().equals("ONPAGEINIT") || messages[i].getType().equals("ONPAGE")||
// messages[i].getType().equals("SETNOTE"))
// return new Message[]{messages[i]};
//}
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:readLeftMsg() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return messages;
}
/**
*读取短信
*调用者:msgManager.jsp (a=11浏览者对话窗口读取短信)
*@param toId 访问者id
*@param fromId 客户端或访问者id
*@return 返回短信息组
*/
public Message[] readMsg0(String toId,String fromId){
Message[] messages=null;
try{
sql="select * from message where toId=\""+toId+"\" and (fromId=\""+fromId+"\" or type=\"SYSNOTIFY\") and isRead=\"0\" order by id";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last()){
messages=new Message[rs.getRow()];
rs.beforeFirst();
}
Calendar now= Calendar.getInstance();
String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));
for(int i=0;messages!=null &&i<messages.length && rs!=null && rs.next();i++){
//Message(String id,String fromId,String toId,String content,String sendTime,String readTime,String type,boolean read)
messages[i]=new Message(rs.getString("id"),rs.getString("fromId"),rs.getString("toId"),rs.getString("content"),
rs.getString("sendTime"),nowStr,rs.getString("type"),rs.getString("isRead"));
}
//markMessageAsRead(messages); //
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
for(int i=0;messages!=null && i<messages.length;i++){
if(messages[i].getType().equals("ONPAGEINIT") || messages[i].getType().equals("ONPAGE")||
messages[i].getType().equals("SETNOTE")){
if(i==0)
return new Message[]{messages[0]};
else{
Message[] theMessages=new Message[i];
for(int j=0;j<i;j++)
theMessages[j]=messages[j];
messages=null;
return theMessages;
}
}
}
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:readMsg0() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return messages;
}
/**
*访问者读取所有本网站所有用户的状态信息
*调用者:msgManager.jsp (被浏览者浮动窗口调用 a=3)
*@param vid 访问者id
*@return 返回短信息组
*/
public Message[] readMsg1(String vid){
Message[] messages=null;
String domainId=new UserManager().getVisitorDomainId(vid);
Calendar now= Calendar.getInstance();
now.setTimeInMillis(now.getTimeInMillis()-240000);
//now.roll(Calendar.SECOND,-15);
String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));
sql="select distinct id from user,site "+
"where site.domainIds=user.domainId and site.domainId=\""+domainId+
"\" and lastTime>=\""+nowStr+"\"";
try{
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(rs!=null && rs.last()){
messages=new Message[rs.getRow()+1];
rs.beforeFirst();
}
for(int i=0;messages!=null &&i<messages.length-1 && rs!=null && rs.next();i++){
messages[i]=new Message(rs.getString("id"),vid,rs.getString("state"),"STATECHANGE");
}
sql="select count(distinct id) as total from visitor,site "+
"where visitor.domainId=site.domainId and site.domainId=\""+domainId+
"\" and state<>\"OFFLINE\" and lastTime>=\""+nowStr+"\"";
if(db.getConnection()==null || db.isClosed())
db.setConnection();
db.setSqlQuery(sql);
rs=db.getResult();
if(messages==null || messages.length==0)
messages=new Message[1];
if(rs!=null && rs.next())
messages[messages.length-1]=new Message("0",vid,rs.getString("total"),"NUMBEROFGUOKES");
else
messages[messages.length-1]=new Message("0",vid,"1","NUMBEROFGUOKES");
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:readMsg1() error:"+e.getMessage()+" sql:"+sql);
return null;
}
return messages;
}
/**
*标记短信为已读短信
*调用者:
*@param messages 短信息组
*/
public void markMessageAsRead(Message[] messages){
if(messages==null)
return;
try{
if(db.getConnection()==null || db.isClosed())
db.setConnection();
Calendar now= Calendar.getInstance();
String nowStr=String.valueOf(now.get(Calendar.YEAR))+"-"+String.valueOf(now.get(Calendar.MONTH)+1)+"-"+
String.valueOf(now.get(Calendar.DAY_OF_MONTH))+" "+String.valueOf(now.get(Calendar.HOUR_OF_DAY))+":"+
String.valueOf(now.get(Calendar.MINUTE))+":"+String.valueOf(now.get(Calendar.SECOND));
for(int i=0;i<messages.length;i++){
if(messages[i]==null)
continue;
sql="update message set isRead=\"1\", readTime=\""+ nowStr+"\" where toId=\""+messages[i].getToId()+
"\" and sendTime=\""+ messages[i].getSendTime()+"\"";
db.setSqlQuery(sql);
db.executeUpdate();
}
if(db.getConnection()!=null && !db.isClosed())
db.closeConnection();
}catch(Exception e){
closeDbConnection();
Log.log("Class:MsgManager method:markMessageAsRead(Message[]) error:"+e.getMessage()+" sql:"+sql);
}
}
/**
*标记短信为已读短信
*调用者:msgManager.jsp(a=1客户端读取短信 a=11浏览者对话窗口读取短信
* a=10时为客户端读取短信 a=3时为浏览者浮动窗口读取短信)
*@param ids 多个短信息id
*/
public void markMessageAsRead(String[] ids){
if(ids==null)
return;
try{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -