<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="com.biz_nis.cmn.CommonMethod" %>
<%@ page import="com.biz_nis.cmn.OrellyUpload" %>
<%@ page import="com.biz_nis.nw_prstus.nw_list.NetworkListDAO" %>
<%@ page import="com.biz_nis.nw_prstus.nw_list.NetworkListDTO" %>
<%@ page import="org.apache.log4j.Logger" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="jxl.*" %> 
<%! 
public ArrayList getFileToArrayList(String FilePath)
{
	ArrayList result = new ArrayList();
    ArrayList headData = new ArrayList();
        
    try
    {
    	int columnCount = 0;
        Workbook workbook = Workbook.getWorkbook(new File(FilePath));
    	Sheet sheet = workbook.getSheet(0);

    	for(int j=0; j<sheet.getColumns(); j++) {
    		String contents = sheet.getCell(j, 0).getContents();

    	    	if (contents == null) contents = "";
    	      
    	      	if (!"".equals(contents.trim())) headData.add( contents );
    	      
    	}
    	columnCount = headData.size();

    	for(int i=1, rowCount = sheet.getRows(); i<rowCount; i++) {
    		ArrayList colData = new ArrayList();

    	    for(int j=0; j<columnCount; j++) {

    	    	if( sheet.getCell(j, i).getType().toString().equals("Date")) { // 날짜 형식.
    	        	colData.add( ((DateCell)sheet.getCell(j, i)).getDate() );
    	        } else {
    	          	colData.add( sheet.getCell(j, i).getContents() );
    	        }
    	    }
    	    	result.add(colData);
       }

    	workbook.close();

	}catch(IOException ie) {
    	ie.printStackTrace();
    }catch (Exception e) {
    	e.printStackTrace();
    }finally{
    	headData = null;
    }
  return result;
}
%>
<%
	Logger l_oLogger = Logger.getLogger( "" );
	
	request.setCharacterEncoding("UTF-8");
	  
	String l_sUploadPath = "";
	int l_nLimitSize = 0;
	int resultCnt = 0;
	String accessPath  = "";
	String accessName  = "";
	
	ArrayList rowData = new ArrayList();
	boolean l_bSuccess = false;
	NetworkListDAO l_oNetworkListDAO = null;
	NetworkListDTO l_oNetworkListDTO = null;
	
	try {
		l_oNetworkListDAO = new NetworkListDAO();
		l_oNetworkListDTO = new NetworkListDTO();
		
		l_sUploadPath = CommonMethod.getMessage("globals_config","EXCEL_LOG_UPLOAD_DIR");
		l_nLimitSize = Integer.parseInt(CommonMethod.getMessage("globals_config","EXCEL_LOG_FILE_SIZE")) * 1024 * 1024 ;
		
		String l_sSavePath = l_sUploadPath+"/";
		File ori_realpath_dir = new File(l_sSavePath);
		if(!ori_realpath_dir.exists()) ori_realpath_dir.mkdirs();
		  
		//MultipartRequest request 받음
		OrellyUpload multi = new OrellyUpload(request, l_sSavePath, l_nLimitSize, "UTF-8");
		  
		String state        = CommonMethod.nullChk( multi.getParameter("STATE") );
		String titleExist  = CommonMethod.nullChk( multi.getParameter("TITLE_EXIST") );
		
		boolean fileTypeResult = multi.limitExtension();
		if(!fileTypeResult){
			ArrayList fileHashList = multi.upLoadFile();

			int fileHashListCount = fileHashList.size();

			for(int i=0; i<fileHashListCount;i++){
				HashMap fileHash = (HashMap)fileHashList.get(i);

				accessPath  = CommonMethod.nullChk( l_sSavePath ) ;
				accessName  = CommonMethod.nullChk( (String)fileHash.get("saveName")  );
			}
		}
		
		//파일 라인별로 Vector에 담기.
        rowData = getFileToArrayList(accessPath +"/"+accessName);
		
	    int entireCnt = rowData.size();
        int startIndex = 0;
        if(titleExist.equals("Y")) startIndex = 1;
        
        Hashtable cInfo = null;
        String preNo    = "";
		
		for(int i=startIndex; i<entireCnt; i++) 
  	    {
  	      	cInfo = new Hashtable();
  	      
  	      	ArrayList vInfo = (ArrayList)rowData.get(i);

  	      	int arrListSize = vInfo.size();
  	      
  	      	if(arrListSize > 0) {
  	    	  	int j = 0;
        		
  	    	  	cInfo.put("net_idstry"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_dstic"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_entp_id"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_mbr_id"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_user_nm"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_jobcl"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_a"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_age"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_tel01"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_tel02"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_tel03"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_relshp"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_b"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_c"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_d"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_e"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_f"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	cInfo.put("net_g"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    	  	
  	    	  	int    p_nNet_entp_id     = CommonMethod.intNullChk( cInfo.get("net_entp_id") ); 
  	    	  	int    p_nNet_age     = CommonMethod.intNullChk( cInfo.get("net_age") ); 
  	    	  	int    p_nNet_a     = CommonMethod.intNullChk( cInfo.get("net_a") ); 
  	    	  	int    p_nNet_b     = CommonMethod.intNullChk( cInfo.get("net_b") ); 
  	    	  	int    p_nNet_c     = CommonMethod.intNullChk( cInfo.get("net_c") ); 
  	    	  	int    p_nNet_d     = CommonMethod.intNullChk( cInfo.get("net_d") ); 
  	    	  	int    p_nNet_e     = CommonMethod.intNullChk( cInfo.get("net_e") ); 
  	    	  	int    p_nNet_f     = CommonMethod.intNullChk( cInfo.get("net_f") ); 
  	    	  	int    p_nNet_g     = CommonMethod.intNullChk( cInfo.get("net_g") ); 
  	    	  			
  	    	  	double l_dNet_total = Math.pow(p_nNet_a, 2)+p_nNet_b+p_nNet_c+p_nNet_d+p_nNet_e+p_nNet_f+Math.pow(p_nNet_g, 2);
  	    		String l_sNet_total = String.valueOf( Math.round(l_dNet_total) );
  	    		int l_nNet_total = Integer.parseInt( l_sNet_total );
  	    		
  	    		cInfo.put("net_total"    ,CommonMethod.setZeroZero(l_nNet_total));
  	    		cInfo.put("net_resn"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    		cInfo.put("net_rmark"    ,CommonMethod.nullChk((String)vInfo.get(j++)));
  	    		
  	    	  	l_oNetworkListDTO.setNet_mbr_id( (String)cInfo.get("net_mbr_id") );
  	    		l_oNetworkListDTO.setNet_idstry( (String)cInfo.get("net_idstry") );
  	    		l_oNetworkListDTO.setNet_dstic( (String)cInfo.get("net_dstic") );
  	    		l_oNetworkListDTO.setNet_entp_id( p_nNet_entp_id );
  	    		l_oNetworkListDTO.setNet_user_nm( (String)cInfo.get("net_user_nm") );
  	    		l_oNetworkListDTO.setNet_jobcl( (String)cInfo.get("net_jobcl") );
  	    		l_oNetworkListDTO.setNet_age( p_nNet_age );

  	    		if (!cInfo.get("net_tel01").equals("") && !cInfo.get("net_tel02").equals("") && !cInfo.get("net_tel03").equals("")) {
  	    			l_oNetworkListDTO.setNet_tel01( (String)cInfo.get("net_tel01") );
  	    			l_oNetworkListDTO.setNet_tel02( (String)cInfo.get("net_tel02") );
  	    			l_oNetworkListDTO.setNet_tel03( (String)cInfo.get("net_tel03") );
  	    	    } else {
  	    	    	l_oNetworkListDTO.setNet_tel01( "" );
  	    	    	l_oNetworkListDTO.setNet_tel02( "" );
  	    	    	l_oNetworkListDTO.setNet_tel03( "" );
  	    	    }

  	    		l_oNetworkListDTO.setNet_relshp( (String)cInfo.get("net_relshp") );
  	    		l_oNetworkListDTO.setNet_resn( (String)cInfo.get("net_resn") );
  	    		l_oNetworkListDTO.setNet_rmark( (String)cInfo.get("net_rmark") );
  	    		l_oNetworkListDTO.setNet_a( p_nNet_a );
  	    		l_oNetworkListDTO.setNet_b( p_nNet_b );
  	    		l_oNetworkListDTO.setNet_c( p_nNet_c );
  	    		l_oNetworkListDTO.setNet_d( p_nNet_d );
  	    		l_oNetworkListDTO.setNet_e( p_nNet_e );
  	    		l_oNetworkListDTO.setNet_f( p_nNet_g );
  	    		l_oNetworkListDTO.setNet_g( p_nNet_g );
  	    		l_oNetworkListDTO.setNet_total( l_nNet_total );
    
       			if(cInfo != null) { //입력부분  
       				l_bSuccess = l_oNetworkListDAO.excelInsert( l_oNetworkListDTO ); 
       			}   
        	
            }
  	      	
            cInfo = null;
		} //End of For-clause
      	    
		if (l_bSuccess) {
%>
			<script language="javascript">
			<!--
			   opener.location.reload();
			   //꼼수.. 창이 안 닫혀 ;
			   window.opener = "nothing";
			   window.open('', '_parent', '');
			   window.close();
				 
			//-->
			</script>   
<%
		} else {
%>
			<script language="javascript">
			<!-- 
			    alert("정상적으로 처리되지 않았습니다.\n내용을 확인하신 후 다시 시도해 주십시오.");
			    history.back();
			//-->
			</script>
<%				
		}
	} catch( Exception e ) {
	    l_oLogger.error( "### Error : " + e.toString() );
	} finally {}
%>