package cn.jcenterhome.web.action.admin;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.web.action.BaseAction;
public class TaskAction extends BaseAction {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
if (!Common.checkPerm(request, response, "managetask")) {
return cpMessage(request, mapping, "cp_no_authority_management_operation");
}
int taskid = Common.intval(request.getParameter("taskid"));
try {
if (submitCheck(request, "tasksubmit")) {
String fileName = Common.htmlSpecialChars(Common.trim(request.getParameter("filename")));
fileName = fileName.replace("..", "").replace("/", "").replace("\\", "");
File file = new File(JavaCenterHome.jchRoot + "./source/task/" + fileName);
if (Common.empty(fileName) || !file.exists() || !file.canRead()) {
return cpMessage(request, mapping, "cp_designated_script_file_incorrect");
}
Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal");
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
String starttimeTemp = request.getParameter("starttime");
String endtimeTemp = request.getParameter("endtime");
String timeoffset = Common.getTimeOffset(sGlobal, sConfig);
int starttime = Common.empty(starttimeTemp) ? 0 : Common.strToTime(starttimeTemp, timeoffset,
"yyyy-MM-dd HH:mm:ss");
int endtime = Common.empty(endtimeTemp) ? 0 : Common.strToTime(endtimeTemp, timeoffset,
"yyyy-MM-dd HH:mm:ss");
Map<String, Object> setData = new HashMap<String, Object>();
setData.put("name", Common.htmlSpecialChars(Common.trim(request.getParameter("name"))));
setData.put("note", Common.trim(request.getParameter("note")));
setData.put("filename", fileName);
setData.put("image", Common.trim(request.getParameter("image")));
setData.put("available", Common.intval(request.getParameter("available")));
setData.put("starttime", starttime);
setData.put("endtime", endtime);
String nexttype = Common.trim(request.getParameter("nexttype"));
setData.put("nexttype", nexttype);
setData.put("nexttime", "time".equals(nexttype) ? Common.intval(request
.getParameter("nexttime")) : 0);
setData.put("credit", Common.intval(request.getParameter("credit")));
setData.put("maxnum", Common.intval(request.getParameter("maxnum")));
setData.put("displayorder", Common.range(request.getParameter("displayorder"), 65535, 0));
if (taskid == 0) {
dataBaseService.insertTable("task", setData, false, false);
} else {
Map<String, Object> whereData = new HashMap<String, Object>();
whereData.put("taskid", taskid);
dataBaseService.updateTable("task", setData, whereData);
}
cacheService.task_cache();
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=task");
}
} catch (Exception e1) {
return showMessage(request, response, e1.getMessage());
}
Map<String, Object> thevalue = null;
String op = request.getParameter("op");
if ("edit".equals(op)) {
List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("task") + " WHERE taskid='" + taskid + "'");
if (query.size() > 0) {
thevalue = query.get(0);
int startime = (Integer) thevalue.get("starttime");
thevalue.put("starttime", startime > 0 ? Common.sgmdate(request, "yyyy-MM-dd HH:mm:ss",
startime) : "");
int endtime = (Integer) thevalue.get("endtime");
thevalue.put("endtime", endtime > 0 ? Common.sgmdate(request, "yyyy-MM-dd HH:mm:ss", endtime)
: "");
}
} else if ("add".equals(op)) {
thevalue = new HashMap<String, Object>();
thevalue.put("taskid", 0);
thevalue.put("available", 1);
thevalue.put("nexttime", 0);
thevalue.put("credit", 0);
} else if ("delete".equals(op)) {
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("task")
+ " WHERE taskid='" + taskid + "'");
dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("usertask")
+ " WHERE taskid='" + taskid + "'");
try {
cacheService.task_cache();
} catch (Exception e) {
return showMessage(request, response, e.getMessage());
}
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=task");
} else {
List<Map<String, Object>> tasks = dataBaseService.executeQuery("SELECT * FROM "
+ JavaCenterHome.getTableName("task") + " ORDER BY displayorder");
for (Map<String, Object> task : tasks) {
int starttime = (Integer) task.get("starttime");
task.put("starttime", starttime > 0 ? Common.sgmdate(request, "yyyy-MM-dd HH:mm:ss",
starttime) : "N/A");
int endtime = (Integer) task.get("endtime");
task.put("endtime", endtime > 0 ? Common.sgmdate(request, "yyyy-MM-dd HH:mm:ss", endtime)
: "N/A");
String image = (String) task.get("image");
if (Common.empty(image)) {
task.put("image", "image/task.gif");
}
}
request.setAttribute("actives_view", " class=\"active\"");
request.setAttribute("tasks", tasks);
}
if (thevalue != null) {
request.setAttribute("nexttypes_" + thevalue.get("nexttype"), " selected");
request.setAttribute("nextimestyle", "time".equals(thevalue.get("nexttype")) ? "" : "none");
request.setAttribute("availables_" + thevalue.get("available"), " checked");
request.setAttribute("thevalue", thevalue);
}
request.setAttribute("taskid", taskid);
request.setAttribute("op", op);
return mapping.findForward("task");
}
}