Package com.ourlinc.helloworld.model

Source Code of com.ourlinc.helloworld.model.User

package com.ourlinc.helloworld.model;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import com.ourlinc.helloworld.service.impl.UserPodi;
import com.ourlinc.helloworld.util.WebUtils;
import com.ourlinc.omni.persistence.PersistenceAbstract;
import com.ourlinc.omni.persistence.Persister;
import com.ourlinc.omni.persistence.ReferenceIdArray;
import com.ourlinc.swift.exception.UnsupportedException;
import com.ourlinc.swift.util.Array;
import com.ourlinc.swift.util.ResultPage;
import com.ourlinc.swift.util.UniteId;

/**
* 业务对象普通用户类
*
* @author lipeiying
*
*/
public class User extends PersistenceAbstract<UserPodi>
    implements
      Comparable<User> {
  /**
   * 用户为在职状态
   */
  public final static int ON_JOB = 1;
  /**
   * 用户为离职状态
   */
  public final static int NOT_ON_JOB = 0;
  /**
   * 用户的权限为普通用户
   */
  public final static int USER = 0;
  /**
   * 用户的权限为管理员
   */
  public final static int ADMIN = 1;

  // 联合ID
  @Resource(type = String.class)
  private UniteId m_Id = UniteId.nil;
  // 真实姓名,用来登录
  @Resource
  private String m_Username;
  // 密码
  @Resource
  private String m_Password;
  // 所属部门
  @Resource
  private String m_Department;
  // 电子邮件
  @Resource
  private String m_Email;
  // 出生日期
  @Resource
  private Date m_Birthday;
  // 入职日期
  @Resource
  private Date m_EntryDate;
  // 离职日期
  @Resource
  private Date m_LeaveDate;
  /**
   * 是否在职,默认是在职
   */
  @Resource
  private int m_OnJob = ON_JOB;
  // 活动列表,记录活动id
  @Resource(type = ReferenceIdArray.class)
  private Array<Activity> m_Activities = new Array<Activity>();
  /**
   * 表示用户的权限,分为普通用户和管理员,默认为普通用户
   */
  @Resource
  private int m_Authority = USER;

  /**
   * 无参构造函数
   */
  public User(UserPodi podi) {
    super(podi);
  }

  /**
   *
   * 构造函数
   *
   */
  public User(UserPodi podi, String username, String password,
      String department, String email, Date birthday, Date entryDate) {
    super(podi);
    m_Username = username;
    m_Password = password;
    m_Department = department;
    m_Email = email;
    m_Birthday = birthday;
    m_EntryDate = entryDate;
    markUpdate();
  }

  /**
   * 用户提升为管理员
   */
  public User userToAdmin() {
    m_Authority = ADMIN;
    markUpdate();
    return this;
  }

  /**
   * 管理员降级为用户
   */
  public User adminToUser() {
    m_Authority = USER;
    markUpdate();
    return this;
  }

  /**
   * 修改个人信息
   *
   * @param password
   * @param department
   * @param email
   * @param birthday
   */
  public void edit(String department, String email, Date birthday) {
    m_Department = department;
    m_Email = email;
    m_Birthday = birthday;
    markUpdate();
  }

  /**
   * 修改密码
   *
   * @param password
   */
  public void editPass(String password) {
    m_Password = password;
    markUpdate();
  }

  /**
   * 管理员修改信息
   *
   * @param username
   * @param password
   * @param department
   * @param email
   * @param birthday
   * @param entryDate
   * @param leaveDate
   * @param onJob
   */
  public void edit(String username, String department, String email,
      Date birthday, Date entryDate, Date leaveDate, int onJob) {
    m_Username = username;
    m_Department = department;
    m_Email = email;
    m_Birthday = birthday;
    m_EntryDate = entryDate;
    m_LeaveDate = leaveDate;
    m_OnJob = onJob;
    markUpdate();
  }

  /**
   * 参加活动,方法内部已经帮活动增加人员
   *
   * @param act
   * @return 参加成功返回true,否则返回false
   */
  public boolean joinActivity(Activity act) {
    if (null != act && ON_JOB == m_OnJob && !m_Activities.contains(act)) {
      act.addUser(this.getId());
      act.flush();
      m_Activities.add(act);
      markUpdate();
      return true;
    }
    return false;
  }

  /**
   * 该用户是否已经参加了这个活动
   *
   * @param act
   * @return
   */
  public boolean isJoin(Activity act) {
    return (m_Activities.contains(act)) ? true : false;
  }

  /**
   * 判断是否管理员
   *
   * @return
   */
  public boolean isAdmin() {
    return (ADMIN == getAuthority()) ? true : false;
  }

  /**
   * 取消参加活动,两个动作,活动删除用户,用户删除活动
   *
   * @param actId
   *            要取消的活动id
   */
  public void cancelActivity(Activity act) {
    if (null != act) {
      act.removeUser(getId());
      act.flush();
      if (null != m_Activities && m_Activities.contains(act)) {
        m_Activities.remove(act);
        markUpdate();
      }
    }

  }

  protected void genUniteId() {
    if (UniteId.nil != m_Id) {
      throw new UnsupportedException("不能重复初始化ID:" + m_Id);
    }
    m_Id = UniteId.valueOf(getPodi().getPersister(getClass()).getNewId());
    setPersistenceState(STATE_REINDEX | STATE_NEW);
  }

  protected void initPersistenceId(Persister<?> arg0) {
    genUniteId();
  }

  // get方法开始

  public String getId() {
    return m_Id.toString();
  }

  /**
   * 返回id的URL编码
   *
   * @return
   */
  public String getURLEncodeForId() {
    String result = "";
    try {
      result = URLEncoder.encode(getId(), "utf-8");
    } catch (UnsupportedEncodingException e) {
    }
    return result;
  }

  public String getPersistenceId() {
    return getId();
  }

  public String getUsername() {
    return m_Username;
  }

  public String getPassword() {
    return m_Password;
  }

  public String getDepartment() {
    return m_Department;
  }

  public String getEmail() {
    return m_Email;
  }

  public Date getBirthday() {
    return m_Birthday;
  }

  public String getBirthdayString() {
    return WebUtils.dateFormatToStr(m_Birthday);
  }

  public Date getEntryDate() {
    return m_EntryDate;
  }

  public String getEntryDateString() {
    return WebUtils.dateFormatToStr(m_EntryDate);
  }

  public Date getLeaveDate() {
    return m_LeaveDate;
  }

  public String getLeaveDateString() {
    return (null == m_LeaveDate) ? "" : WebUtils
        .dateFormatToStr(m_LeaveDate);
  }

  /**
   * 返回用户是否在职
   *
   * @return
   */
  public String getStatus() {
    return (ON_JOB == m_OnJob) ? "在职" : "离职";
  }

  public int isOnJob() {
    return m_OnJob;
  }

  public List<Activity> getActivities() {
    return m_Activities.getReadOnlyList();
  }

  /**
   * 返回用户参加了,但没开始的活动,即返回开始前并且没有取消的活动
   *
   * @return
   */
  public ResultPage<Activity> listMyAct() {
    List<Activity> list = getActivities();
    List<Activity> result = new ArrayList<Activity>();
    Date now = new Date();
    for (Activity act : list) {
      if (now.after(act.getStartDate()) && now.before(act.getTime())
          && Activity.STATUS_AVAILIABLE == act.getStatus()) {
        result.add(act);
      }
    }
    Collections.sort(result);
    return ResultPage.OnList.wrap(result);
  }

  /**
   * 返回用户已经参加了的活动,即返回已经结束并且没有被取消的活动
   *
   * @return
   */
  public ResultPage<Activity> listMyActOver() {
    List<Activity> list = getActivities();
    List<Activity> result = new ArrayList<Activity>();
    for (Activity act : list) {
      if (new Date().after(act.getTime())) {
        result.add(act);
      }
    }
    Collections.sort(result);
    return ResultPage.OnList.wrap(result);
  }

  /**
   * 返回用户已经参加了但被取消的活动
   *
   * @return
   */
  public ResultPage<Activity> listMyActCancel() {
    List<Activity> list = getActivities();
    List<Activity> result = new ArrayList<Activity>();
    for (Activity act : list) {
      if (Activity.STATUS_CANCEL == act.getStatus()
          && new Date().before(act.getTime())) {
        result.add(act);
      }
    }
    Collections.sort(result);
    return ResultPage.OnList.wrap(result);
  }

  /**
   * 取得用户权限
   *
   * @return 普通用户返回0,管理员返回1
   */
  public int getAuthority() {
    return m_Authority;
  }

  /**
   * 取得用户权限的字符表示,如返回 用户 或管理员
   *
   * @return
   */
  public String getAuthorityString() {
    return (isAdmin()) ? "管理员" : "普通用户";
  }

  public int compareTo(User user) {
    return m_OnJob > user.m_OnJob ? -1 : 1;
  }

  // get方法结束

}
TOP

Related Classes of com.ourlinc.helloworld.model.User

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.