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

📄 userebo.java

📁 java私塾里的图书进销存项目的源代码,非常不错,J2SE基础知识复习非常有帮助!
💻 JAVA
字号:
package cn.javass.bookmgr.user.business.ebo;

import cn.javass.bookmgr.user.business.ebi.UserEbi;
import cn.javass.bookmgr.user.valueobject.*;
import java.util.*;
import cn.javass.bookmgr.user.dao.factory.UserDBFactory;
/**
 * 用户模块逻辑层具体实现类,提供外部模块和表现层所需要的功能
 *
 * <p>Title: Java私塾第一个Java项目——图书进销存系统(单机版)</p>
 * <p>Description: 网址:<a href="http://www.javass.cn">http://www.javass.cn</a>
 * 新电话:010-86835215   新地址:北京市海淀区厂洼路5号院深博达商务楼5层</p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: Java私塾</p>
 * @author Java私塾
 * @version 1.0
 */
public class UserEbo  implements UserEbi {
  /**
   * 当前用于操作的用户数据,格式是:key-用户编号,value-用户model
   */
  private static Map userMap = new HashMap();
  /**
   * 静态块,获取用户模块对应的数据文件中的所有数据
   */
  static {
    userMap = UserDBFactory.getInstance().createUserDAO().getData();
  }

  public boolean registUser(UserModel um) {
    //1:把新数据添加到当前的map中
    userMap.put(um.getId(), um);
    //2:调用数据层把数据保存起来
    UserDBFactory.getInstance().createUserDAO().saveData(userMap);
    return true;
  }

  public boolean updateUser(UserModel newUm) {
    //1:修改当前map中的对应数据
    userMap.put(newUm.getId(), newUm);
    //2:调用数据层把数据保存起来
    UserDBFactory.getInstance().createUserDAO().saveData(userMap);
    return true;
  }

  public boolean deleteUser(UserModel um) {
    //1:删除当前map中的对应数据
    userMap.remove(um.getId());
    //2:调用数据层把数据保存起来
    UserDBFactory.getInstance().createUserDAO().saveData(userMap);
    return true;
  }

  public Collection getAll() {
    //就是把当前Map中的value值取出来,放到集合中并返回
    Collection col = new ArrayList();
    Iterator it = userMap.keySet().iterator();
    while (it.hasNext()) {
      String key = (String) it.next();
      UserModel um = (UserModel) userMap.get(key);
      col.add(um);
    }
    return col;
  }

  public Collection getByCondition(QueryUserModel qm) {
    //直接在当前的Map中查找
    Collection col = new ArrayList();
    Iterator it = userMap.keySet().iterator();
    while (it.hasNext()) {
      String key = (String) it.next();
      UserModel um = (UserModel) userMap.get(key);
      //判断是否满足条件
      if (this.isMatch(um, qm, false)) {
        col.add(um);
      }
    }
    return col;
  }
  /**
   * 判断一个用户Model的数据是否能满足查询条件的要求
   * @param um 用户Model
   * @param qm 查询Model
   * @param isById 表示用户编号的查询方式,
   *               true表示对用户编号完全匹配,false表示对用户编号模糊匹配
   * @return true表示满足条件,false表示不满足条件
   */
  private boolean isMatch(UserModel um, QueryUserModel qm, boolean isById) {
    boolean flag = false;
    boolean f1 = true;
    boolean f2 = true;
    boolean f3 = true;

    if (!isById) {
      //对用户编号模糊匹配
      if (qm.getId() != null && qm.getId().trim().length() > 0) {
        if (um.getId() != null && um.getId().trim().length() > 0 &&
            um.getId().indexOf(qm.getId()) >= 0) {
          f1 = true;
        }
        else {
          f1 = false;
        }
      }
    }
    else {
      //对用户编号完全匹配
      if (qm.getId() != null && qm.getId().trim().length() > 0) {
        if (um.getId() != null && um.getId().trim().length() > 0 &&
            um.getId().equals(qm.getId())) {
          f1 = true;
        }
        else {
          f1 = false;
        }
      }
    }

    if (qm.getName() != null && qm.getName().trim().length() > 0) {
      //对用户名称进行模糊匹配
      if (um.getName() != null && um.getName().trim().length() > 0 &&
          um.getName().indexOf(qm.getName()) >= 0) {
        f2 = true;
      }
      else {
        f2 = false;
      }
    }
    if (qm.getType() > 0) {
      //对用户类型进行绝对匹配
      if (um.getType() == qm.getType()) {
        f3 = true;
      }
      else {
        f3 = false;
      }
    }
    //如果满足所有的条件,那么这条记录就完全符合条件
    flag = f1 && f2 && f3;
    return flag;
  }

  public UserModel getUserModelById(String userId) {
    UserModel retUm = new UserModel();
    //1:组织查询的model
    QueryUserModel qm = new QueryUserModel();
    qm.setId(userId);
    //2:到当前的map中进行数据匹配
    Iterator it = userMap.keySet().iterator();
    while (it.hasNext()) {
      String key = (String) it.next();
      UserModel um = (UserModel) userMap.get(key);
      //3:判断是否符合条件
      if (this.isMatch(um, qm, true)) {
        retUm = um;
        //4:找到一条就停止
        break;
      }
    }
    //5:返回查询到的数据
    return retUm;
  }

  public boolean login(String userId, String pwd) {
    boolean flag = false;
    //1:先检查是否是默认的admin,如果是,那么就直接登录
    if(userId!=null && userId.equals("admin")){
      //1.1检查admin的记录是否存在,如果存在就要检查密码是否正确
      UserModel um = this.getUserModelById(userId);
      //1.2判断用户是否存在
      if(um!=null && um.getPwd()!=null && um.getPwd().trim().length()>0){
        //1.3:如果用户存在,还要判断密码是否正确
        if(um.getPwd().equals(pwd)){
          flag = true;
        }else{
          flag = false;
        }
      }else{
        //1.4否则说明admin的记录不存在,那么是admin就直接登录
        flag = true;
        //1.5如果是admin,而且没有找到对应的记录,那么就生成一条,并加入到map中
        UserModel tempUm = new UserModel();
        tempUm.setId("admin");
        tempUm.setName("系统管理员");
        tempUm.setPwd("javass");
        tempUm.setType(UserModel.TYPE_INT_1);
        //直接调用用户注册就好了
        this.registUser(tempUm);
      }
    }
    //2:按照用户编号去获取对应的用户model
    UserModel um = this.getUserModelById(userId);
    //3:判断用户是否存在,还有密码是否正确
    if(um!=null && um.getPwd()!=null && um.getPwd().trim().length()>0
       && um.getPwd().equals(pwd)){
      //3:如果用户存在,还有密码也正确,那么就能够登录,返回true
      flag = true;
    }
    return flag;
  }
}

⌨️ 快捷键说明

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