You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
235 lines
11 KiB
235 lines
11 KiB
/** |
|
* ******************************************************************************************************* |
|
* 프로그램명 : HttpDocModifyer.java 프로그램설명 : 프로젝트와 관련된 정보를 얻을수 있는 class 작성자 : 강원중 |
|
* 작성일 : 2003.12.10 변경일 : 2003.11.15 |
|
********************************************************************************************************* |
|
*/ |
|
package kr.co.kihyun.beans.totsys.doc; |
|
|
|
import java.io.IOException; |
|
import java.io.PrintWriter; |
|
import java.text.ParseException; |
|
import java.text.SimpleDateFormat; |
|
import java.util.ArrayList; |
|
import java.util.Date; |
|
import javax.jdo.PersistenceManager; |
|
import javax.jdo.Transaction; |
|
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 javax.servlet.http.HttpSession; |
|
import kr.co.kihyun.beans.entity.AcceptanceLimitStrategy; |
|
import kr.co.kihyun.beans.entity.AccessAuth; |
|
import kr.co.kihyun.beans.entity.ExecutionCode; |
|
import kr.co.kihyun.beans.entity.MDept; |
|
import kr.co.kihyun.beans.entity.MUser; |
|
import kr.co.kihyun.beans.entity.TotDoc; |
|
import kr.co.kihyun.beans.entity.TotDocAppendType; |
|
import kr.co.kihyun.beans.entity.TotDocProcess; |
|
import kr.co.kihyun.beans.entity.util.*; |
|
import kr.co.kihyun.beans.user.HttpSSOLogin; |
|
import kr.co.kihyun.io.FileUtil; |
|
import kr.co.kihyun.lang.Encoder; |
|
import kr.co.kihyun.lang.MInteger; |
|
import kr.co.kihyun.lang.MLong; |
|
import kr.co.kihyun.lang.MString; |
|
import kr.co.kihyun.moumi.MoumiConfig; |
|
import kr.co.kihyun.text.html.ServletUtil; |
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
@WebServlet("/servlet/kr.co.kihyun.beans.totsys.doc.HttpDocModifyer") |
|
public class HttpDocModifyer extends HttpServlet { |
|
|
|
/** |
|
* |
|
* |
|
*/ |
|
private static final long serialVersionUID = 1L; |
|
private static final Logger LOG = LoggerFactory.getLogger(HttpDocModifyer.class); |
|
|
|
@Override |
|
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { |
|
doPost(req, res); |
|
} |
|
|
|
@Override |
|
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { |
|
res.setContentType("text/html;charset=UTF-8"); |
|
PrintWriter out = res.getWriter(); |
|
HttpSession session = req.getSession(true); |
|
String usID = HttpSSOLogin.getLoginID(req); |
|
int sysAuth = HttpSSOLogin.getSysAuth(req); |
|
|
|
/** |
|
* ******** parameter value ********* |
|
*/ |
|
Long docID = MLong.parseLong(req.getParameter("docID"), null); |
|
int execNum = MInteger.parseInt(req.getParameter("execNum")); |
|
String execDate = MString.checkNull(req.getParameter("execDate")); |
|
|
|
TotDocAppendType appendType = TotDocAppendType.valueOf(MString.checkNull(req.getParameter("appendType"), TotDocAppendType.COPY.toString())); // 파일첨부, 복사, 양식 재사용 |
|
|
|
int accAuth = MInteger.parseInt(req.getParameter("accAuth"), 0); |
|
String stDate = MString.checkNull(req.getParameter("stDate")); |
|
String stTime = req.getParameter("stTime"); |
|
String edDate = MString.checkNull(req.getParameter("edDate")); |
|
String edTime = req.getParameter("edTime"); |
|
String title = Encoder.toJava(req.getParameter("title")); |
|
if(title!=null){ |
|
title=title.trim(); |
|
} |
|
String contents = Encoder.toJava(req.getParameter("notify")); |
|
String prss = MString.checkNull(req.getParameter("prss"), "PRSS"); |
|
String docType = MString.checkNull(req.getParameter("docType"), "PRSS"); |
|
String svrFilenames = Encoder.toJava(req.getParameter("svrFilenames")); |
|
String redirectURI = req.getParameter("redirectURI"); |
|
String setTheTime = Encoder.toJava(req.getParameter("setTheTime")); |
|
|
|
String acceptanceLimitStrategy = MString.checkNull(req.getParameter("acceptanceLimitStrategy"), "UnlimitStrategy"); |
|
stDate = stDate + " " + stTime + ":00:00"; |
|
edDate = edDate + " " + edTime + ":00:00"; |
|
Date startDate, endDate; |
|
startDate = endDate = new Date(); |
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
|
try { |
|
startDate = sdf.parse(stDate); |
|
if (acceptanceLimitStrategy.equals("LimitBySubmitDateStrategy") || acceptanceLimitStrategy.equals("UnlimitStrategy")) { |
|
edDate = "9999-12-30 12:00:00"; |
|
} |
|
endDate = sdf.parse(edDate); |
|
} catch (ParseException e) { |
|
e.printStackTrace(); |
|
} |
|
|
|
kr.co.kihyun.beans.entity.Board mBoard = null; |
|
TotDoc totDoc = null; |
|
MUser mUser = null; |
|
|
|
if (!HttpSSOLogin.isLogin(req)) { |
|
String connURL = "location='/totsys/login/login.jsp';"; |
|
out.println(ServletUtil.getJavaScript(connURL)); |
|
return; |
|
} |
|
|
|
PersistenceManager pm = new MPersistenceManager(PMF.get().getPersistenceManager()); |
|
Transaction tx = pm.currentTransaction(); |
|
// ObjectManager om = ((JDOPersistenceManager) tx.getPersistenceManager()).getObjectManager(); // jeus 6 proplem |
|
try { |
|
tx.begin(); |
|
TotDoc pc = pm.getObjectById(TotDoc.class, docID); |
|
totDoc = pm.detachCopy(pc); |
|
String DocUserID=pc.getUser(pm).getId(); |
|
mUser = pm.getObjectById(MUser.class, usID); |
|
if (sysAuth == MoumiConfig.TOTPER && !usID.equals(DocUserID)&&docID<1700000000) { |
|
out.println(ServletUtil.alert(MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc") |
|
+ MoumiConfig.getMessageBundle().getString("moumi.message.popup.modifyFail"))); |
|
out.println(ServletUtil.getJavaScript("location.href='/totsys/totper/mydocbox/prssbox/doc_modify.jsp?docType=" |
|
+docType+"&docID="+ docID + "';")); |
|
return; |
|
} |
|
|
|
SimpleDateFormat execDateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
|
ExecutionCode execCode = null; |
|
//시행번호 입력 필요에 의해 주석달음. |
|
//2014.09.01 LIM |
|
if (execNum > 0 && !MString.isNull(execDate)) { |
|
ExecutionCode curExecCode = pc.getExecutionCode(); |
|
execCode = new ExecutionCode(curExecCode.getDeptName() == null ? pm.getObjectById(MDept.class, pc.getDept()).getName() : curExecCode.getDeptName(), execNum, execDateFormat.parse(execDate)); |
|
pc.setExecutionCode(execCode);//시행번호 입력 |
|
} |
|
//미진행자료에서 넘어온 것중 연계자료일경우 유저 및 오너 업데이트 |
|
if(docID>=1700000000&&prss.equals("PRSS")&&docType.equals("REG")){ |
|
pc.setUser(mUser); |
|
} |
|
pc.setStartDate(startDate); |
|
pc.setEndDate(endDate); |
|
pc.setRegDate(new Date()); |
|
pc.setAppendType(appendType); |
|
pc.setAccessAuth(AccessAuth.values()[accAuth]); |
|
|
|
AcceptanceLimitStrategy acptLimitStrategy = AcceptanceLimitStrategy.create(acceptanceLimitStrategy, MLong.parseLong(req.getParameter("submitLimit"), 10000L)); |
|
acptLimitStrategy.setProcess(TotDocProcess.valueOf(MString.checkNull(req.getParameter("prss"), pc.getProcess(pm).name()))); |
|
pc.setAcceptanceLimitStrategy(acptLimitStrategy); |
|
|
|
FileUtil.putInFiles(svrFilenames, pc); |
|
|
|
mBoard = pc.getBoard(); |
|
mBoard.setTitle(title); |
|
mBoard.setContents(contents); |
|
mBoard.setTotDoc(pc); |
|
pc.setName(title); |
|
pm.makePersistent(mBoard); |
|
pm.makePersistent(pc); |
|
|
|
|
|
// om.postCommit(); // jeus 6 problem |
|
tx.commit(); |
|
|
|
|
|
FileUtil.getBoardAttachmentsFileNames(mBoard.getId(), req, true); |
|
// FileUtil.delUpFiles(svrFilenames,pc); //디렉토리에서 파일 삭제 |
|
LOG.info("{}{}{}: {}, {}, {}", new Object[]{ |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.information"), |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.change"), |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.success"), |
|
usID, req.getRemoteAddr(), docID |
|
}); |
|
out.println("<script> alert(\"성공적으로 기본정보를 변경 하였습니다.\")</script>"); |
|
|
|
|
|
String allowURL[] = { "/totsys/totper/mydocbox/prssbox/doc_list.jsp" }; |
|
ArrayList arr = new ArrayList(); |
|
for ( int i = 0; i < allowURL.length; i++ ) |
|
arr.add(allowURL[i]); |
|
|
|
String url = "/totsys/totper/mydocbox/prssbox/doc_list.jsp"; |
|
if (url != null && !url.contains("http://") ) { |
|
url = url.replaceAll("\r", "").replaceAll("\n", ""); |
|
|
|
if ( arr.contains(url) ) { |
|
//v2. 1.HTTP 응답분할 : Update by KWON,HAN |
|
// url += "?docType="+prss; |
|
// res.sendRedirect(url); |
|
|
|
if (prss != null) { |
|
// 수정 : 외부 입력값 필터링 |
|
String filtered_prss = prss.replaceAll("\r","").replaceAll("\n",""); |
|
//LOG.debug("v2 1.HTTP 응답분할 : HttpDocModifyer.doPost() filtered_prss={} : Test OK ", filtered_prss); |
|
url += "?docType="+filtered_prss; |
|
res.sendRedirect(url); |
|
} |
|
//======================================== |
|
} |
|
} |
|
//================================================================================= |
|
|
|
} catch (Exception e) { |
|
e.printStackTrace(); |
|
LOG.error("{}{}{}: {}, {}, {}, {}", new Object[]{ |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.information"), |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.change"), |
|
MoumiConfig.getMessageBundle().getString("moumi.message.tot_doc.fail"), |
|
e.getMessage(), usID, req.getRemoteAddr(), docID |
|
}); |
|
out.println("<script> alert(\"기본정보 변경을 실패하였습니다.\")</script>"); |
|
//v2. 9.크로스사이트 스크립트 (PrintWrier) : Update by KWON,HAN |
|
// out.println(ServletUtil.redirect((String) session.getAttribute("modifyFailTargetURI"))); |
|
|
|
// 수정 : 외부 입력값 필터링 |
|
String url = (String) session.getAttribute("modifyFailTargetURI"); |
|
String filtered_url = url.replaceAll("<","").replaceAll(">","").replaceAll("&","").replaceAll(",",""); |
|
LOG.debug("v2 9.크로스사이트 스크립트 (PrintWrier) : HttpDocModifyer.doPost() filtered_url={}, Not Test", filtered_url); |
|
out.println(ServletUtil.getJavaScript(filtered_url)); |
|
//============================================================ |
|
|
|
return; |
|
} finally { |
|
if (tx.isActive()) { |
|
tx.rollback(); |
|
} |
|
pm.close(); |
|
} |
|
} |
|
}
|
|
|