All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.wicp.tams.component.pages.ParentPageBean Maven / Gradle / Ivy

There is a newer version: 2.0.0
Show newest version
package net.wicp.tams.component.pages;

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;
import org.apache.tapestry5.util.TextStreamResponse;

import lombok.extern.slf4j.Slf4j;
import net.wicp.tams.common.Result;
import net.wicp.tams.common.annotation.TamsBean;
import net.wicp.tams.common.apiext.IOUtil;
import net.wicp.tams.common.apiext.StringUtil;
import net.wicp.tams.common.apiext.json.EasyUiAssist;
import net.wicp.tams.common.callback.IConvertValue;
import net.wicp.tams.component.SymbolConstantsCus;
import net.wicp.tams.component.components.Upload;
import net.wicp.tams.component.tools.TapestryAssist;

@Slf4j
public abstract class ParentPageBean extends ParentPage {
	@SuppressWarnings("unchecked")
	public Class getTClass() {
		Class tClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass())
				.getActualTypeArguments()[0];
		return tClass;
	}

	@SuppressWarnings("rawtypes")
	protected MutableTriple> queryAssetInfo = EasyUiAssist
			.getQueryAssetInfo(getTClass());

	protected Pair, List> querySaveInfo = EasyUiAssist.getQuerySaveInfo(getTClass());

	@Property
	private String cols = queryAssetInfo.left;
	
	// 子类可以覆盖,每个页面可以设置自己的文件上传相对路径,默认是上传文件的根路径
		protected String getUploadRelaPath() {
			return "/";
		};


	@Property
	private TamsBean tamsbean = getTClass().getAnnotation(TamsBean.class);

	protected final T t = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);

	@Inject
	@Symbol(SymbolConstantsCus.PATH_FILE_UPLOAD_DIR)
	private String defaultUploadDir;// 默认的文件上传目录,在service里配置
	
	public TextStreamResponse onSave() {
		final T saveBean = TapestryAssist.getBeanFromPage(getTClass(), requestGlobals);
		String id = request.getParameter("id");
		// 处理文件上传组件
		String fieldName = request.getParameter(Upload.fixfieldname);
		if (StringUtil.isNotNull(fieldName)) {//
			List saveUploads = req.saveUpload(getUploadRelaPath());
			if (CollectionUtils.isNotEmpty(saveUploads)) {
				try {
					PropertyUtils.setProperty(saveBean, fieldName.substring(0, fieldName.length() - 5),
							IOUtil.mergeFolderAndFilePath(getUploadRelaPath(), saveUploads.get(0).getName()));
				} catch (Exception e) {
					log.error("上传文件时设置文件名属性错误", e);
				}
			}
		}
		// end 处理文件上传组件
		boolean isInsert = false;
		if (StringUtil.isNull(id)) {
			isInsert = true;
		} else {
			isInsert = false;
		}
		try {
			doSave(saveBean, isInsert);
		} catch (Throwable e) {
			log.error("save data error", e);
			return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
		}
		return TapestryAssist.getTextStreamResponse(Result.getSuc());
	}

	public TextStreamResponse onDel() {
		String id = request.getParameter("id");
		if (StringUtil.isNull(id)) {
			return TapestryAssist.getTextStreamResponse(Result.getSuc("没有拿到id,不能进行删除"));
		}
		try {
			doDel(id);
		} catch (Throwable e) {
			log.error("delete data error", e);
			return TapestryAssist.getTextStreamResponse(Result.getError(e.getMessage()));
		}
		return TapestryAssist.getTextStreamResponse(Result.getSuc());
	}

	public String getUrl() {
		String retUrl = tamsbean.url();
		if (StringUtil.isNull(retUrl)) {
			// 页面所在的类名
			String name = getClass().getName();
			String initParameter = servletContext.getInitParameter("tapestry.app-package");
			retUrl = name.replace(initParameter + ".pages", "").replace(".", "/");
		}
		return retUrl;
	}

	public abstract void doSave(T t, boolean isInsert);

	public abstract void doDel(String id);

	

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy