package user.web.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.ServletActionContext;

import sun.misc.BASE64Encoder;
import user.domain.User;
import user.exception.SQLException;
import user.service.UserService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.interceptor.annotations.InputConfig;

public class UserAction extends ActionSupport implements ModelDriven<User> {
	private User u = new User();
	List<User> users = null;

	public User getModel() {
		// TODO Auto-generated method stub
		return u;
	}

	@Override
	public String execute() throws Exception {
		return super.execute();
	}

	// 配置错误返回的试图
	// @InputConfig(resultName="NBA")
	public String login() {
		UserService useService = new UserService();
		User userLogin = useService.login(u);

		if (userLogin == null) {
			this.addActionError("用户名密码错误");
			return INPUT;
		} else {
			ServletActionContext.getRequest().getSession()
					.setAttribute("user", userLogin);
		}
		return SUCCESS;
	}

	@InputConfig(resultName = "addFAIL")
	public String add() throws IOException {
		if (u.getUpload() != null) {
			String uuid = UUID.randomUUID().toString();
			String path = "/WEB-INF/upload/" + uuid;
			File dfile = new File(ServletActionContext.getServletContext()
					.getRealPath(path));
			FileUtils.copyFile(u.getUpload(), dfile);
			u.setPath(path);
			u.setFilename(u.getUploadFileName());
		}
		UserService useService = new UserService();
		useService.saveUser(u);
		return "addSUCCESS";
	}

	public String list() {
		UserService userService = new UserService();
		users = userService.list(u);
		return "listSUCCESS";
	}

	public List<User> getUsers() {
		return users;
	}

	public String delete() {
		UserService userService = new UserService();
		// 删除简历
		User user = userService.findById(u.getUserID());
		if (StringUtils.isNotBlank(user.getPath())) {
			File file = new File(ServletActionContext.getServletContext()
					.getRealPath(user.getPath()));
			file.delete();
		}
		userService.delete(u);
		return "deleteSUCCESS";
	}

	public String views() {
		UserService userService = new UserService();
		User user = userService.findById(u.getUserID());
		user.setPath(ServletActionContext.getServletContext().getRealPath(
				u.getPath()));
		ActionContext.getContext().getValueStack().push(user);
		return "viewSUCCESS";
	}

	public String download() {
		UserService userService = new UserService();
		u = userService.findById(u.getUserID());
		return "downloadSUCCESS";
	}

	public InputStream getInputStream() throws FileNotFoundException {
		if (u == null || u.getPath() == null) {
			return null;
		}
		File file = new File(ServletActionContext.getServletContext()
				.getRealPath(u.getPath()));
		return new FileInputStream(file);
	}

	// 返回mime类型
	public String getContentType() {
		if (u == null || u.getFilename() == null) {
			return null;
		}
		return ServletActionContext.getServletContext().getMimeType(
				u.getFilename());
	}

	// 返回编码后的文件
	public String getDownloadFileName() throws IOException {
		if (u == null || u.getFilename() == null) {
			return null;
		}
		return encodeDownloadFilename(u.getFilename(), ServletActionContext
				.getRequest().getHeader("user-agent"));
	}

	/**
	 * 下载文件时,针对不同浏览器,进行附件名的编码
	 * 
	 * @param filename
	 *            下载文件名
	 * @param agent
	 *            客户端浏览器
	 * @return 编码后的下载附件名
	 * @throws IOException
	 */
	public String encodeDownloadFilename(String filename, String agent)
			throws IOException {
		if (StringUtils.isNotBlank(filename)) {
			if (agent.contains("Firefox")) { // 火狐浏览器
				filename = "=?UTF-8?B?"
						+ new BASE64Encoder()
								.encode(filename.getBytes("utf-8")) + "?=";
				filename = filename.replaceAll("\r\n", ""); // 解决②每76个字符加一个换行符
															// 问题!
			} else { // IE及其他浏览器
				filename = URLEncoder.encode(filename, "utf-8");
			}
		}
		return filename;
	}

	public String editview() {
		UserService userService = new UserService();
		ActionContext.getContext().getValueStack()
				.push(userService.findById(u.getUserID()));
		return "editviewSUCCESS";
	}

	public String edit() {
		UserService userService = new UserService();
		if (u.getUpload() == null) {
			userService.edit(u, false);
		} else {
			String uuid = UUID.randomUUID().toString();
			String path = "/WEB-INF/upload/" + uuid;
			File dfile = new File(ServletActionContext.getServletContext()
					.getRealPath(path));
			try {
				FileUtils.copyFile(u.getUpload(), dfile);
			} catch (IOException e) {
				e.printStackTrace();
				throw new SQLException("qqq");
			}
			u.setPath(path);
			u.setFilename(u.getUploadFileName());
			User oldUser = userService.findById(u.getUserID());
			if (oldUser.getPath() != null) {
				File file = new File(ServletActionContext.getServletContext()
						.getRealPath(oldUser.getPath()));
				file.delete();
			}
			userService.edit(u, true);
		}
		return "editSUCCESS";
	}
	// public String edit(){
	//
	// }
}
最近下载更多
xuyongff  LV24 2020年3月3日
luo123456789  LV3 2019年9月3日
独行侠梦  LV4 2017年11月22日
sevenvsky  LV27 2017年1月12日
wangkun999  LV10 2016年7月23日
prime2015  LV14 2016年3月8日
le2010  LV1 2015年1月29日
ding1209  LV13 2014年7月14日
limtno  LV23 2014年7月11日
annoby  LV23 2014年6月16日
最近浏览更多
cqbscxh  LV11 2022年9月19日
xuyongff  LV24 2019年11月4日
luo123456789  LV3 2019年9月3日
2544183455 2019年8月2日
暂无贡献等级
z924931408  LV25 2019年3月11日
654321zq  LV2 2018年10月24日
lee123321  LV22 2018年8月22日
wkc  LV21 2018年5月14日
liuxufen  LV8 2018年4月20日
cyr921104  LV9 2018年3月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友