123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /*
- * 1. 동일여부를 체크하고, 저장노드가 있으면 변경 된 정보를 저장노드에 저장한다.
- * 2. Array 에 값이 존재하는지 확인
- */
- /** 1.
- * @---------------------------------------------------
- * @creat : 20100000
- * @author : 최원돈
- * @desc : 동일여부를 체크하고,
- * @ : 저장노드가 있으면 변경 된 정보를 저장노드에 저장한다.
- * @---------------------------------------------------
- */
- function chkMsetIdenNode(pa_pkid, ps_desNode, ps_srcNode, ps_delNode, ps_saveNode, pb_skipuseyn, ps_insertseqcol, pa_skipcol, ps_modstatus, ps_addstatus)
- {
- var lx_node2 = instance1.selectSingleNode(ps_srcNode);
- var lx_nodeList2 = lx_node2.childNodes;
- var lb_rtncheck = true;
- var li_insertseq = 0;
-
- var lb_saveyn = (ps_saveNode == "") ? false : true;
-
- if (lb_saveyn)
- {
- model.removeNodeset(ps_saveNode);
- model.makeNode(ps_saveNode);
- var lx_modinfo = instance1.selectSingleNode(ps_saveNode);
- }
- for(var i=0; i<lx_nodeList2.length; i++)
- {
- var lx_node2c = lx_nodeList2.item(i);
- var lx_nodeList2c = lx_node2c.childNodes;
- var ls_pkcond = "";
- var lb_skipyn = false;
- if (lx_node2c.selectSingleNode("status").NodeValue == "")
- {
- continue;
- }
-
- // skip 대상을 제외
- if ( pb_skipuseyn
- && lx_node2c.selectSingleNode("skipyn").NodeValue == "Y"
- && lx_node2c.selectSingleNode("inptflag").NodeValue != "F4")
- {
- lb_skipyn = true;
- }
-
- if (!lb_skipyn) // 비교 및 저장 대상일 경우
- {
- if (lx_node2c.selectSingleNode("status").NodeValue != "i") // 추가 일 경우는 skip
- {
- // 비교하기 위해서 PK 를 추출
- lx_nodeList2c.reset();
- while(lx_nodechild2 = lx_nodeList2c.nextNode())
- {
- if (isMArray(pa_pkid, lx_nodechild2.nodeName))
- {
- if (lx_nodechild2.NodeValue == "") // PK 에 NULL 이 있다면 추가
- {
- ls_pkcond = "";
- break;
- }
-
- if (ls_pkcond != "")
- {
- ls_pkcond += " and ";
- }
-
- ls_pkcond += lx_nodechild2.nodeName + "='" + lx_nodechild2.NodeValue + "'";
- }
- }
- }
-
- if (ls_pkcond == "") // PK가 존재하지 않을 경우 [추가일 경우]
- {
- lb_rtncheck = false;
-
- if (lb_saveyn)
- {
- if (ps_insertseqcol != "") // Batch를 위해서 MAX seq를 넣어준다.
- {
- lx_nodeList2c.reset();
- while(lx_nodechild2 = lx_nodeList2c.nextNode())
- {
- // 변경된 정보가 있으면 저장
- if (lx_nodechild2.nodeName == ps_insertseqcol)
- {
- lx_nodechild2.NodeValue = ++li_insertseq;
- }
- }
- }
-
- lx_modinfo.appendChild(lx_node2c);
- // status 값을 저장
- if (ps_addstatus != "")
- {
- lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_addstatus;
- }
- else if (ps_modstatus != "")
- {
- lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_modstatus;
- }
- }
- else
- {
- return lb_rtncheck;
- }
- }
- else // 동일 PK가 존재하면
- {
- ls_cond = ps_desNode + "[" + ls_pkcond + "]";
- var lx_node = instance1.selectSingleNode(ls_cond);
- var lx_nodeList = lx_node.childNodes;
-
- lx_nodeList2c.reset();
- while(lx_nodechild2 = lx_nodeList2c.nextNode())
- {
- var lx_nodechild = lx_nodeList.nextNode()
- // 변경된 정보가 있으면 저장
- if ( lx_nodechild2.nodeName != "status" // status는 무조건 skip
- && !isMArray(pa_skipcol, lx_nodechild2.nodeName)
- && lx_nodechild2.nodeName == lx_nodechild.nodeName
- && lx_nodechild2.NodeValue != lx_nodechild.NodeValue)
- {
- lb_rtncheck = false;
- if (lb_saveyn)
- {
- lx_modinfo.appendChild(lx_node2c);
- // status 값을 저장
- if (ps_modstatus != "")
- {
- lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_modstatus;
- }
- }
- else
- {
- return lb_rtncheck;
- }
-
- break;
- }
- }
- }
- }
- }
-
- //삭제된 노드가 있을 경우 삭제노드 별도 체크 추가
- if(ps_delNode != "")
- {
- if (instance1.selectSingleNode(ps_delNode).childNodes.length > 0)
- {
- return false;
- }
- }
- return lb_rtncheck;
- }
- /** 2.
- * @---------------------------------------------------
- * @creat : 20100000
- * @author : 최원돈
- * @desc : Array 에 값이 존재하는지 확인
- * @---------------------------------------------------
- */
- function isMArray(pa_src, ps_find)
- {
- if (pa_src == null) // skip column이 없다면
- {
- return false;
- }
-
- for (i=0; i<pa_src.length; i++)
- {
- if (pa_src[i] == ps_find)
- {
- return true;
- }
- }
- return false
- }
|