/*
*这个是黄迎斌的servlet框架
* http://opdps.hbnu.edu.cn/hyberbin
*/
package com.huahuan.manage.sthd;
import com.huahuan.database.DatabaseAccess;
import com.huahuan.database.EasyMapsManager;
import com.huahuan.servletutil.ServletUtil;
import com.huahuan.table.Hdjy;
import com.huahuan.table.Hdlb;
import com.huahuan.table.Hyb;
import com.huahuan.table.Sthd;
import com.huahuan.table.View_sthd;
import com.huahuan.tools.CutJsonString;
import com.huahuan.tools.FileAction;
import com.huahuan.tools.Util;
import com.jplus.json.EasyUiJson;
import com.jplus.json.JSONArray;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jplus.hyb.database.Hyberbin;
/**
*
* @author Administrator
*/
@WebServlet(name = "SthdManageAction", urlPatterns = "/manage/SthdManageAction.jsp")
public class SthdManageAction extends HttpServlet {
/**
* 下面是模式关键字 可以自行删除和增加自定义模式,关键字一定要大写 默认模式为OTHER=0,所以OTHER不能删除
*/
public final static int OTHER = 0;//其它
public final static int SHOWONE = 1;//显示单例
public final static int SHOWLIST = 2;//显示列表
public final static int ADD = 3;//添加记录
public final static int UPDATE = 4;//更新记录
public final static int DELETE = 6;//删除记录
public final static int LOADHDLBCOMBO = 7;
public final static int UPDATETP = 8;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
execute(ServletUtil.setModel(request.getParameter("mode"), this), request, response);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP
* <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
/**
* 显示协会活动列表
*/
private void showlist(HttpServletRequest request, HttpServletResponse response) {
//禁止json缓存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setHeader("expires", "0");
String searchValue = request.getParameter("searchValue");
String searchName = request.getParameter("searchName");
View_sthd sthd = new View_sthd();
Hyberbin hyb = new Hyberbin(sthd);
List list;
EasyUiJson easyui = new EasyUiJson(request);
String where = "";
if (Util.isEmpty(searchValue)) {
list = hyb.showByMySqlPage(where + " order by hdid desc", easyui);
} else {
where = " where " + searchName + " like ?";
hyb.addParmeter("%" + searchValue + "%");
list = hyb.showByMySqlPage(where + " order by hdid desc", easyui);
}
easyui.putAll(list);
ServletUtil.ajaxData(easyui.toDataString(), response);
}
/**
* 显示单个活动
*/
private void showone(HttpServletRequest request, HttpServletResponse response) {
String hdid = request.getParameter("hdid");
View_sthd view_sthd = new View_sthd();
Hyberbin hyb = new Hyberbin(view_sthd);
hyb.addParmeter(Integer.parseInt(hdid));
List list = hyb.showList("select hdid,xm,hdlb,hdsj,hdnr from View_sthd where hdid=?");
JSONArray json = new JSONArray();
json.put(list);
ServletUtil.ajaxData(CutJsonString.cutObjectJson(json.toString()), response);
}
/**
* 删除活动,同时删除活动对应的所有剪影
*/
private void deleteHd(HttpServletRequest request, HttpServletResponse response) {
boolean b = false;
String num = request.getParameter("ids");//用于批量删除拼接的id字符串
Sthd sthd = new Sthd();
Hdjy hdjy = new Hdjy();
Hyberbin hyb = new Hyberbin(hdjy, true);
String[] nums = num.split(":");
dellHdFolder(nums, request);//首先删除活动对应的文件夹
String hdsql = Util.getDeleteSql(hyb, nums, "hdid");
List jylist = hyb.showList("select jyid,hdid from hdjy where" + hdsql);
if (jylist == null || jylist.isEmpty()) {//如果活动下没有剪影,则直接删除活动即可
hyb.changeTable(sthd);
hdsql = "";
hdsql = Util.getDeleteSql(hyb, nums, "hdid");
b = hyb.dell("where" + hdsql);
} else {//否则先删除剪影
hyb.clearParmeter();
String jysql = "";
for (int i = 0; i < jylist.size(); i++) {
Hdjy tmp = (Hdjy) jylist.get(i);
hyb.addParmeter(tmp.getJyid());
jysql += " or jyid=?";
}
jysql = jysql.substring(3);
hyb.dell("where" + jysql);
hyb.changeTable(sthd);
hdsql = "";
hdsql = Util.getDeleteSql(hyb, nums, "hdid");
b = hyb.dell("where" + hdsql);
}
hyb.reallyClose();
String message = b ? "操作成功" : "操作失败";
ServletUtil.ajaxData(message, response, "html");
}
/**
* 删除的活动对应的文件夹,文件夹名为hdid_hdbt形式
*/
private void dellHdFolder(String[] nums, HttpServletRequest request) {
DatabaseAccess dao = new DatabaseAccess();
EasyMapsManager emm = new EasyMapsManager(dao);
String where = "";
for (int i = 0; i < nums.length; i++) {
where += " or hdid=?";
emm.setPreparedParameter(nums[i]);
}
where = where.substring(3);
ArrayList<HashMap> list = emm.executeQuery("select hdid,hdbt from sthd where " + where);
dao.close();
for (int i = 0; i < nums.length; i++) {
String path = request.getServletContext().getRealPath("/userfiles/image/社团图片/活动剪影/" + list.get(i).get("hdid") + "_" + list.get(i).get("hdbt"));
FileAction.delFolder(path);
}
}
/**
* 添加协会活动
*/
private void addHd(HttpServletRequest request, HttpServletResponse response) {
String xm = request.getParameter("xm");
Hyb hyb = new Hyb();//会员表
Hyberbin hyberbin = new Hyberbin(hyb);
hyberbin.addParmeter(xm);
hyb = hyberbin.showOne("select id,xm from hyb where xm=?");
Sthd sthd = new Sthd();
hyberbin.changeTable(sthd);
sthd.setHdjjfz(hyb.getId());
ServletUtil.loadByBean(request, sthd, true);
boolean b = hyberbin.insert("hdid");
hyberbin.reallyClose();
DatabaseAccess dao = new DatabaseAccess();
EasyMapsManager emm = new EasyMapsManager(dao);
ArrayList<HashMap> list = emm.executeQuery("select max(hdid) as id from sthd");
dao.close();
String path = request.getServletContext().getRealPath("/userfiles/image/社团图片/活动剪影/" + list.get(0).get("id") + "_" + sthd.getHdbt());
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
String message = b ? "操作成功" : "操作失败";
ServletUtil.ajaxData(message, response, "html");
}
/**
* 修改协会活动
*/
private void updateHd(HttpServletRequest request, HttpServletResponse response) {
Sthd sthd = new Sthd();//社团活动表
Hyberbin hyberbin = new Hyberbin(sthd);
ServletUtil.loadByBean(request, sthd, true);
boolean b = hyberbin.updateByKey("hdid");
String message = b ? "操作成功" : "操作失败";
ServletUtil.ajaxData(message, response, "html");
}
/**
* 加载活动类别的下拉框
*/
private void loadHdCombo(HttpServletRequest request, HttpServletResponse response) {
Hdlb hdlb = new Hdlb();
Hyberbin hyb = new Hyberbin(hdlb);
List list = hyb.showAll();
JSONArray json = new JSONArray();
json.put(list);
ServletUtil.ajaxData(CutJsonString.cutComboJson(json.toString()), response);
}
/**
* 修改活动图片
*/
private void updatetp(HttpServletRequest request, HttpServletResponse response) {
String newPicPath = request.getParameter("newPicPath");
String hdid = request.getParameter("id");
Sthd sthd = new Sthd();//会员表
Hyberbin hyberbin = new Hyberbin(sthd);
sthd.setHdtp(newPicPath);
sthd.setHdid(Integer.parseInt(hdid));
boolean b = hyberbin.updateByKey("hdid");
String str = b ? "修改成功" : "修改失败";
ServletUtil.ajaxData("{\"notice\":\"" + str + "\"}", response);
}
/**
* 实现父类的抽象方法,下面的模式和方法可以自行增删
*/
public void execute(int event, HttpServletRequest request, HttpServletResponse response) {
/**
* 下面是相关模式下所做的动作*
*/
switch (event) {
case SHOWONE:
showone(request, response);
break;
case SHOWLIST:
showlist(request, response);
break;
case ADD:
addHd(request, response);
break;
case UPDATE:
updateHd(request, response);
break;
case DELETE:
deleteHd(request, response);
break;
case LOADHDLBCOMBO:
loadHdCombo(request, response);
break;
case UPDATETP:
updatetp(request, response);
break;
}
}
}