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

📄 shortmessageserviceimp.java

📁 非常有影响的 j道 论 坛 源码 国外很有明的专家编写的 ....对java爱好者很有参考价值
💻 JAVA
字号:
/*
 * Copyright (c) 2008 Ge Xinying
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.jdon.jivejdon.service.imp.shortmessage;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.log4j.Logger;

import com.jdon.annotation.intercept.Poolable;
import com.jdon.annotation.intercept.SessionContextAcceptable;
import com.jdon.container.visitor.data.SessionContext;
import com.jdon.controller.events.EventModel;
import com.jdon.controller.model.PageIterator;
import com.jdon.jivejdon.model.Account;
import com.jdon.jivejdon.model.FromShortMessage;
import com.jdon.jivejdon.model.ShortMessage;
import com.jdon.jivejdon.model.ToShortMessage;
import com.jdon.jivejdon.repository.ShortMessageFactory;
import com.jdon.jivejdon.repository.ShortMessageRepository;
import com.jdon.jivejdon.service.ShortMessageService;
import com.jdon.jivejdon.service.util.SessionContextUtil;

/**
 * ShortMessageServiceImp.java
 * <p>
 * Title:
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * CreateData: 2008-5-20
 * </p>
 * 
 * @author GeXinying
 * @version 1.0
 */
@Poolable
public class ShortMessageServiceImp implements  ShortMessageService {
	private final static Logger logger = Logger
			.getLogger(ShortMessageServiceImp.class);
	
	public final static int MESSAGE_MAX_COUNT = 100;

	private SessionContext sessionContext;

	private SessionContextUtil sessionContextUtil;

	protected ShortMessageRepository repository;

	protected ShortMessageFactory factory;

	public ShortMessageServiceImp(SessionContextUtil sessionContextUtil,
			 ShortMessageRepository repository,
			ShortMessageFactory factory) {
		this.sessionContextUtil = sessionContextUtil;
		this.repository = repository;
		this.factory = factory;
	}
	/**
	 * 发送草稿箱中的消息
	 * @throws Exception 
	 * 
	 */
	public void sendInDraftMessage(EventModel em) {
		logger.debug("ShortMessageServiceImp");
		try {
			FromShortMessage msg = (FromShortMessage) em.getModelIF();
			if(userIsExists(msg.getMessageTo())==null)
				throw new Exception("No such user!");
			// 这里发送的是已经写的消息,这里只是更新表中的数据
			msg.getShortMessageState().setHasSent(true);
			this.repository.updateShortMessage(msg);
		} catch (Exception e) {
			em.setErrors("发送的对象不存在,请检查拼写!");
		}
	}

	/**
	 * 发送草稿箱中的消息
	 * 
	 * @throws Exception
	 * 
	 */
	public void saveInDraftMessage(EventModel em) {
		logger.debug("ShortMessageServiceImp");
		try {
			FromShortMessage msg = (FromShortMessage) em.getModelIF();
			if(userIsExists(msg.getMessageTo())==null)
				throw new Exception("No such user!");
			// 这里发送的是已经写的消息,这里只是更新表中的数据
			this.repository.updateShortMessage(msg);
		} catch (Exception e) {
			em.setErrors("发送的对象不存在,请检查拼写!");
		}
	}
	/**
	 * 删除草稿箱中的消息
	 * 
	 * @throws Exception
	 * 
	 */
	public void deleInDraftMessage(EventModel em) {
		logger.debug("ShortMessageServiceImp");
		try {
			deleteShortMessage(em);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			em.setErrors("删除操作出错!");
		}
	}
	/**
	 * 发送 新写的 消息 这是往表里增加新的数据
	 * 
	 */
	public void sendShortMessage(EventModel em) {
		logger.debug("ShortMessageServiceImp");
		if (getMessageCount() > MESSAGE_MAX_COUNT){
			em.setErrors("shormessage.exceed.max");
			return;
		}
		try {
			FromShortMessage msg = (FromShortMessage) em.getModelIF();
			if(userIsExists(msg.getMessageTo())==null)
				throw new Exception("No such user!");
			Account account = this.sessionContextUtil
					.getLoginAccount(sessionContext);
			msg.setAccount(account);
			this.factory.sendShortMessage(msg);
		} catch (Exception e) {
			em.setErrors("errors.nouser");
		}
	}

	/**
	 * 保存消息
	 */
	public void saveShortMessage(EventModel em) {
		logger.debug("service: saveShortMessage()");
		if (getMessageCount() > MESSAGE_MAX_COUNT){
			em.setErrors("shormessage.exceed.max");
			return;
		}
		try {
			FromShortMessage msg = (FromShortMessage) em.getModelIF();
			if(userIsExists(msg.getMessageTo())==null)
				throw new Exception("No such user!");
			Account account = this.sessionContextUtil
					.getLoginAccount(sessionContext);
			msg.setAccount(account);
			this.factory.saveShortMessage(msg);
		} catch (Exception e) {
			em.setErrors("errors.nouser");
		}
	}
	/**
	 * 
	 * @param userId
	 * @throws Exception
	 */
	private Account userIsExists(String userName) throws Exception{
		return repository.findTheUser(userName);
	}
	/**
	 * 删除消息
	 * @throws Exception 
	 */
	public void deleteShortMessage(EventModel em) throws Exception {
		logger.debug("deleteShortMessage");
		ShortMessage smf = (FromShortMessage) em.getModelIF();
		logger.debug(""+smf.getMsgId());
		smf = this.repository.findShortMessage(smf.getMsgId());
		Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
		//check auth
		if ((smf.getMessageFrom().equals(loginaccount.getUsername()))
		   || (smf.getMessageTo().equals(loginaccount.getUsername()))){
			this.repository.deleteShortMessage(smf);
		}
	}
	/**
	 * 编辑消息
	 */
	public void updateShortMessage(EventModel em) {
		logger.debug("ShortMessageServiceImp");

	}
	/**
	 * 查找消息
	 * 根据PageIterator结果进行查找
	 */
	public FromShortMessage getFromShortMessage(Long msgId) {
		logger.debug("ShortMessageServiceImp getFromShortMessage");
		ShortMessage smsg = this.repository.findShortMessage(msgId);		
		Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
		//check auth
		if (!smsg.getMessageFrom().equals(loginaccount.getUsername())){
			logger.error("msgId="+ msgId +" is not this user's =" + loginaccount.getUserId());
			return null;
		}
		FromShortMessage fromsmsg = new FromShortMessage();
		try {
			PropertyUtils.copyProperties(fromsmsg, smsg);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return fromsmsg;
	}
	
	public ToShortMessage getToShortMessage(Long msgId) {
		logger.debug("ShortMessageServiceImp getToShortMessage");
		ShortMessage smsg = this.repository.findShortMessage(msgId);		
		Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
		//check auth
		if (!smsg.getMessageTo().equals(loginaccount.getUsername())){
			logger.error("msgId="+ msgId +" is not this user's =" + loginaccount.getUserId());
			return null;
		}
		ToShortMessage tosmsg = new ToShortMessage();
		try {
			PropertyUtils.copyProperties(tosmsg, smsg);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return tosmsg;
	}
	
	
	public ToShortMessage initShortMessage(EventModel em) {
		logger.debug("enter initShortMessage");
		ToShortMessage smf = (ToShortMessage) em.getModelIF();
		if(smf.getMsgId() == null) {
			return smf;
		}
		String sendTo = smf.getMessageFrom();
		smf.setMessageTo(sendTo);
		smf.setMessageBody("");
		return smf;
	}

	/**
	 * 
	 */
	public PageIterator getShortMessages(int start, int count) {
		PageIterator pageIterator = new PageIterator();
		try {
			pageIterator = this.repository.getShortMessages(start, count);
		} catch (Exception ex) {
			logger.error(ex);
		}
		return pageIterator;
	}
	/**
	 * 获取接收的消息
	 */
	public PageIterator getReceiveShortMessages(int start, int count) {
		Account account = sessionContextUtil.getLoginAccount(sessionContext);
		PageIterator pageIterator = new PageIterator();
		try {
			pageIterator = this.repository.getReceiveShortMessages(start,
					count, account);
		} catch (Exception ex) {
			logger.error(ex);
		}
		return pageIterator;
	}
	
	
	public int checkReceiveShortMessages(){
		int count = 0;
		Account account = sessionContextUtil.getLoginAccount(sessionContext);
		if (account == null )return count;
		try {
			PageIterator pi  = this.repository.getReceiveShortMessages(0, 50, account);
			if ((pi == null ) || (pi.getAllCount() == 0)) return count;
			while(pi.hasNext()){
				Long msgId = (Long)pi.next();
				ShortMessage shortMessage = this.repository.findShortMessage(msgId);
				if (shortMessage == null) return count;
				if (!shortMessage.getShortMessageState().isHasRead()){
					count++;
				}
			}
		} catch (Exception ex) {
			logger.error(ex);
		}
		return count;
	}
	
	private int getMessageCount(){
		int allcount = 0;
		PageIterator pi = getSaveShortMessages(0, 30);
		allcount = pi.getAllCount();
		pi = getSendShortMessages(0, 30);
		allcount = pi.getAllCount() + allcount;
		return allcount;
	}
	/**
	 * 获取没有发送的消息
	 */
	public PageIterator getSaveShortMessages(int start, int count) {
		Account account = sessionContextUtil.getLoginAccount(sessionContext);
		PageIterator pageIterator = new PageIterator();
		try {
			pageIterator = this.repository.getSaveShortMessages(start, count,
					account);
		} catch (Exception ex) {
			logger.error(ex);
		}
		return pageIterator;
	}
	/**
	 * 获取已发送的消息
	 */
	public PageIterator getSendShortMessages(int start, int count) {
		Account account = sessionContextUtil.getLoginAccount(sessionContext);
		PageIterator pageIterator = new PageIterator();
		try {
			pageIterator = this.repository.getSendShortMessages(start, count,
					account);
		} catch (Exception ex) {
			logger.error(ex);
		}
		return pageIterator;
	}

	/**
	 * @return Returns the sessionContext.
	 */
	public SessionContext getSessionContext() {
		return sessionContext;
	}

	/**
	 * @param sessionContext The sessionContext to set.
	 */
	@SessionContextAcceptable
	public void setSessionContext(SessionContext sessionContext) {
		logger.debug(":void setSessionContext(SessionContext sessionContext)");
		this.sessionContext = sessionContext;
	}
	
}

⌨️ 快捷键说明

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