ShortMessageServiceImp.java :  » Development » JdonFramework-4.1 » com » jdon » jivejdon » service » imp » shortmessage » Java Open Source

Java Open Source » Development » JdonFramework 4.1 
JdonFramework 4.1 » com » jdon » jivejdon » service » imp » shortmessage » ShortMessageServiceImp.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.manager.shortmessage.ShortMessageFactory;
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.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);

  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");
    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);
      msg.setMessageFrom(account.getUsername());
      if (!this.factory.sendShortMessage(msg))
        em.setErrors("shormessage.exceed.max");
    } catch (Exception e) {
      em.setErrors("errors.nouser");
    }
  }

  /**
   * 
   */
  public void saveShortMessage(EventModel em) {
    logger.debug("service: saveShortMessage()");
    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);
      if (!this.factory.saveShortMessage(msg))
        em.setErrors("shormessage.exceed.max");
    } 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 deleteUserAllShortMessage() throws Exception {
    logger.debug("deleteShortMessage");
    Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
    this.repository.deleteUserAllShortMessage(loginaccount.getUserId());
  }

  /**
   * 
   */
  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();
    Account loginaccount = this.sessionContextUtil.getLoginAccount(sessionContext);
    try {
      pageIterator = this.repository.getShortMessages(start, count, loginaccount.getUserIdLong());
    } 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;
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.