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

📄 abstractcrudaction.java

📁 EasyJWeb是基于java技术
💻 JAVA
字号:
package com.easyjf.web.tools;

import java.io.Serializable;

import com.easyjf.beans.BeanUtils;
import com.easyjf.core.support.query.IQueryObject;
import com.easyjf.core.support.query.QueryObject;
import com.easyjf.util.CommUtil;
import com.easyjf.web.Module;
import com.easyjf.web.Page;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractCmdAction;

/**
 * 
 * <p>
 * Title: 通过添删改查(CRUD)处理Action类
 * </p>
 * <p>
 * Description: 处理普通数据表的添删改查(CRUD)处理的抽象类,用户只需继承该Action,并根据自身的情况实现其中的模板方法即可。
 * 该抽象类除了提供了一些固定的系统命令以外,还提供了CmdAction的功能,也即要使用系统外命令的时候,如XX直接使用doXX(WebForm form,
 * Module module)即可。
 * </p>
 * <p>
 * Copyright: Copyright (c) 2006
 * </p>
 * <p>
 * Company: www.easyjf.com
 * </p>
 * 
 * @author 蔡世友
 * @version 1.0
 */
public abstract class AbstractCrudAction extends com.easyjf.web.core.AbstractPageCmdAction{
	@SuppressWarnings("unchecked")
	protected abstract Class entityClass();

	/**
	 * 默认页,直接转到doList执行
	 * 
	 * @param form
	 */
	public Page doInit(WebForm form, Module module) {
		return go("list");
	}

	public Page doAdd(WebForm form, Module module) {
		return doNew(form, module);
	}

	/**
	 * 导入添加new界面的页面
	 * 
	 */
	public Page doNew(WebForm form, Module module) {
		return module.findPage("edit");
	}

	/**
	 * 与doSave方法执行同样的功能。
	 * 
	 * @param form
	 */
	public void doCreate(WebForm form) {
		doSave(form);
	}

	/**
	 * 在添加页面点击提交按钮时执行数据保存及创建的操作
	 * 
	 * @param form
	 */
	@SuppressWarnings("unchecked")
	public Page doSave(WebForm form) {
		Object obj = form.toPo(entityClass());
		if (hasErrors()) {
			form.set("id", null);
			return forward("new");
		}
		saveEntity(obj);
		return go("list");
	}

	/**
	 * 导入编辑页面,根据id值导入
	 * 
	 * @param form
	 */
	public void doEdit(WebForm form) {
		Object obj = findEntityObject(getIdValue(form));
		form.addPo(obj);
	}

	/**
	 * 数据查看页面
	 * 
	 * @param form
	 */
	public void doPreview(WebForm form) {
		Object obj = findEntityObject(getIdValue(form));
		form.addPo(obj);
	}

	/**
	 * 数据更新页面
	 * 
	 * @param form
	 */
	public Page doUpdate(WebForm form) {
		Object obj = findEntityObject(getIdValue(form));
		form.toPo(obj, true);
		if (hasErrors())
			return forward("new");
		updateEntity(obj);
		return go("list");
	}

	/**
	 * Del方法的别名,执行删除操作
	 * 
	 * @param form
	 */
	public void doDelete(WebForm form) {
		doDel(form);
	}

	/**
	 * 根据id删除数据
	 * 
	 * @param form
	 */
	public void doDel(WebForm form) {
		removeEntity(getIdValue(form));
		go("list");
	}

	/**
	 * 根据ids删除数据
	 * 
	 * @param form
	 */
	public void doBatchDelete(WebForm form) {
		String mulitId = CommUtil.null2String(form.get("mulitId"));
		if (mulitId.endsWith(","))
			mulitId = mulitId.substring(0, mulitId.length() - 1);
		String[] idsStr = mulitId.split(",");
		if (idsStr.length > 0) {
			for (String id : idsStr) {
				if (!"".equals(id)) {
					removeEntity(Long.parseLong(id));
				}
			}
		}
		go("list");
	}

	/**
	 * 列表页面
	 * 
	 * @param form
	 */
	@SuppressWarnings("unchecked")
	public void doList(WebForm form) {
		IPageList pageList = queryEntity((IQueryObject) form
				.toPo(getQueryClass()));
		CommUtil.saveIPageList2WebForm(pageList, form);
	}

	/**
	 * 从WebForm中得到实体id的值
	 * 
	 * @param form
	 * @return
	 */
	protected Serializable getIdValue(WebForm form) {
		return (Serializable) BeanUtils.convertType(form.get(getIdName()),
				getIdClass());
	}

	/**
	 * 得到查询对象的类型,默认为通用查询对象QueryObject.class
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	protected Class getQueryClass() {
		return QueryObject.class;
	}

	/**
	 * 得到主键的id类型,默认为Long
	 * 
	 * @return
	 */
	@SuppressWarnings("unchecked")
	protected Class getIdClass() {
		return Long.class;
	}

	/**
	 * 得到Entity的主键属性名称,默认为id
	 * 
	 * @return
	 */
	protected String getIdName() {
		return "id";
	}

	/**
	 * 保存实体
	 * 
	 * @param obj
	 *            需要保存的持久对象
	 */
	protected abstract void saveEntity(Object obj);

	/**
	 * 查询实体
	 * 
	 * @param id
	 *            根据id查询实体对象
	 * @return 如果找到指定id的实体,则返回该实体对象,否则返回null
	 */
	protected abstract Object findEntityObject(Serializable id);

	/**
	 * 更新实体
	 * 
	 * @param obj
	 *            需要更新的实体对象
	 */
	protected abstract void updateEntity(Object obj);

	/**
	 * 删除实体
	 * 
	 * @param id
	 *            需要删除的实体id值
	 */
	protected abstract void removeEntity(Serializable id);

	/**
	 * 查询实体
	 * 
	 * @param queryObject
	 *            查询参数
	 * @return 根据指定的查询参数,查询实体。
	 */
	protected abstract IPageList queryEntity(IQueryObject queryObject);
}

⌨️ 快捷键说明

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