Java tutorial
package com.skt.adcas.lte.action; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.skt.adcas.lte.db.SqlSessionManager; import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultHandler; import org.apache.ibatis.session.SqlSession; import java.io.*; import java.lang.reflect.Type; import java.util.*; public class CSVDownloadAction extends ActionSupport4lte implements ResultHandler { private static final long serialVersionUID = 1L; private BufferedWriter fileOut; private String fileType; /* */ public List<HashMap> getRows() { return rows; } public List<HashMap> getSTATS() { return STATS; } public String getMsg() { return msg; } public String getStatus() { return status; } public Boolean getError() { return error; } public String getDownloadurl() { return downloadurl; } private List<HashMap> rows = null; private List<HashMap> STATS = null; private String msg = null; private String status = null; private Boolean error = false; private HashMap<String, Object> param = new HashMap<String, Object>(); private String downloadurl = ""; /* ??*/ public void setJSONDATA(String JSONDATA) { this.JSONDATA = JSONDATA; } private String JSONDATA = ""; public void handleResult(ResultContext context) { if (this.param.get("SEARCHTYPE").equals("EMS")) { this.writeEMSLine(context); } else if (this.param.get("SEARCHTYPE").equals("PART")) { this.writeEMSLine(context); } else if (this.param.get("SEARCHTYPE").equals("UNI")) { this.writeEMSLine(context); } } public static String nvl(Object obj, String str) { if (obj == null) return str; else return obj.toString(); } private void writeEMSLine(ResultContext context) { HashMap map = (HashMap) context.getResultObject(); String txt = ""; String txt2 = "\n"; try { txt = (String) map.get("YMD") // + "," + nvl(map.get("MB_TIME"), "") // + "," + nvl(map.get("INGR_ERP_CD"), "") //ERP + "," + nvl(map.get("C_UID"), "") //C_UID + "," + nvl(map.get("MFC_CD"), "") // + "," + nvl(map.get("BTS_NM"), "") //DU + "," + nvl(map.get("CELL_ID"), "") //CELL_ID + "," + nvl(map.get("CELL_NM"), "") //CELL + "," + (nvl(map.get("MCID"), "").equals("T") ? "" : nvl(map.get("MCID"), "")) // MCID + "," + nvl(map.get("UNI"), "") // // + "," + nvl(map.get("FREQ_KIND"), "") // + "," + nvl(map.get("MIMO_TYPE"), "") // MIMO + "," + nvl(map.get("THROUGHPUT"), "") // (Mbps) + "," + nvl(map.get("CQI_AVERAGE"), "") // CQI ?"); + "," + nvl(map.get("CQI0_RATE"), "") // CQI0 (%) + "," + nvl(map.get("RI_RATE"), "") // RI2 (%) + "," + nvl(map.get("DL_PRB_RATE"), "") // DL PRB(%) + "," + nvl(map.get("MCS_AVERAGE"), "") // MCS?"); //SS + "," + nvl(map.get("RSSI"), "") // RSSI "); //SS + "," + nvl(map.get("R2_RSSI"), "") // RSSI "); //SS + "," + nvl(map.get("MIMO_RATE"), "") // MIMO "); // ELG + "," + nvl(map.get("DL_THROUGHPUT"), "") // DL Throughput(kbps)"); // ELG + "," + nvl(map.get("LICENSE_FAIL"), "") // License "); // ELG + "," + nvl(map.get("MIMO_RATE"), "") // OL MIMO (%)"); //ELG + NSN + "," + nvl(map.get("MCS_AVERAGE"), "") // MCS0 (%)"); //ELG + NSN + "," + nvl(map.get("PUCCH_AVG"), "") // RSSI PUCCH "); //ELG + NSN + "," + nvl(map.get("R2_PUCCH_AVG"), "") // RSSI PUCCH "); //NSN + "," + nvl(map.get("PUSCH_AVG"), "") // RSSI PUSCH "); //NSN + "," + nvl(map.get("R2_PUSCH_AVG"), "") // RSSI PUSCH "); //NSN + "," + nvl(map.get("PDCP_DL_MB"), "") // ?? (MB)"); + "," + nvl(map.get("PRB_USG_RATE"), "") // ?? PRB(%)"); + "," + nvl(map.get("DRB_USG_RATE"), "") // ?? DPR(%)"); + "," + nvl(map.get("CON_TIME"), "") // ?? ??(Erl)"); + "," + nvl(map.get("TRY_CCNT"), "") // ?? ?"); + "," + nvl(map.get("CON_RATE"), "") // ?? ?(%)"); + "," + nvl(map.get("CDC_RATE"), "") // ?? CD(%)"); + "," + nvl(map.get("DL_FA_USG_RATE"), "") // FA (%)"); + "," + nvl(map.get("VOICE_DL_MB"), "") // HD Voice + "," + nvl(map.get("VOICE_DL_PRB"), "") // HD Voice PRB (%)"); + "," + nvl(map.get("VOICE_TRY_CCNT"), "") // HD Voice ?"); + "," + nvl(map.get("VOICE_TIME"), "") // HD Voice ?"); + "," + nvl(map.get("IMAGE_DL_MB"), "") // ?? (MB)"); + "," + nvl(map.get("IMAGE_DL_PRB"), "") // ?? PRB(%)"); + "," + nvl(map.get("IMAGE_TRY_CCNT"), "") // ?? ?"); + "," + nvl(map.get("IMAGE_TIME"), "") // ?? ?"); + "," + nvl(map.get("CHNL_TYPE"), "") // "); + "," + nvl(map.get("CHNL_COUNT"), "") // "); ; fileOut.write(txt); fileOut.newLine(); if (isLocalHost()) { System.out.println(txt); } } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } private void writeEMSHeader() { String txt = ""; String txt2 = "\n"; try { txt = "" + "," + "" + "," + "ERP " + "," + "C_UID" + "," + "" + "," + "DU " + "," + "CELL_ID" + "," + "CELL " + "," + "MCID" + "," + "//" + "," + "" + "," + "MIMO " + "," + "(Mbps)" + "," + "CQI ?" + "," + "CQI0 (%)" + "," + "RI2 (%)" + "," + "DL PRB(%)" + "," + "MCS?" //SS + "," + "RSSI " //SS + "," + "RSSI " //SS + "," + "MIMO " // ELG + "," + "DL Throughput(kbps)" // ELG + "," + "License " // ELG + "," + "OL MIMO (%)" //ELG + NSN + "," + "MCS0 (%)" //ELG + NSN + "," + "RSSI PUCCH " //ELG + NSN + "," + "RSSI PUCCH " //NSN + "," + "RSSI PUSCH " //NSN + "," + "RSSI PUSCH " //NSN + "," + "?? (MB)" + "," + "?? PRB(%)" + "," + "?? DPR(%)" + "," + "?? ??(Erl)" + "," + "?? ?" + "," + "?? ?(%)" + "," + "?? CD(%)" + "," + "FA (%)" + "," + "HD Voice " + "," + "HD Voice PRB (%)" + "," + "HD Voice ?" + "," + "HD Voice ?" + "," + "?? (MB)" + "," + "?? PRB(%)" + "," + "?? ?" + "," + "?? ?" + "," + " " + "," + " "; fileOut.write(txt); fileOut.newLine(); } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } } public HashMap getAdminCriticalValues() { return (HashMap) request.getSession().getAttribute("ADMIN_CRITICAL_VALUES"); } public String selectBasicData() { this.log.debug("selectBasicData Start"); SqlSession session = null; try { parseParam(); session = SqlSessionManager.getSqlSession().openSession(); String writeFolderPath = (String) super.properties.get("TEMP_FOLDER_PATH"); String tempFolder = "/" + UUID.randomUUID().toString(); String xlsFileName = "/nice.csv"; String xlsFileFullPath = writeFolderPath + tempFolder + xlsFileName; log.debug(xlsFileFullPath); if (!(new File(writeFolderPath + tempFolder)).mkdir()) { throw new Exception("? ?? ."); } //this.fileOut = new FileOutputStream(xlsFileFullPath); FileOutputStream fos = new FileOutputStream(xlsFileFullPath); OutputStreamWriter osw = new OutputStreamWriter(fos, "EUC-KR"); this.fileOut = new BufferedWriter(osw); //this.fileOut = new BufferedWriter(new FileWriter(xlsFileFullPath)); writeHeader(); log.debug(param); session.select("BigDownload.selectBasicData_" + param.get("SEARCHTYPE"), param, this); fileOut.close(); this.msg = "? ? ?"; this.status = "SUCCESS"; this.downloadurl = /*"download" + */ tempFolder + xlsFileName; session.commit(); this.msg = "??"; this.status = "SUCCESS"; } catch (Exception e) { e.printStackTrace(); this.msg = e.getMessage(); this.status = "ERROR"; this.error = true; session.rollback(); } finally { session.close(); } return SUCCESS; } private void writeHeader() { writeEMSHeader(); } private void parseParam() throws Exception { String USER_ID = (String) request.getSession().getAttribute("USER_ID");//"qcas"; //to do session . if (!isLocalHost()) { if (isNull(USER_ID).equals("")) { throw new Exception("? ?"); } } /*uri parsing*/ Type type = new TypeToken<Map<String, Object>>() { }.getType(); Gson gson = new Gson(); Map<String, Object> map = gson.fromJson(this.JSONDATA, type); param.put("WORKGROUP_ID", parseKey(map, "WORKGROUP_ID", "")); param.put("TERMTYPE", parseKey(map, "TERMTYPE", "")); param.put("DAYTIME_SEQ", parseKey(map, "DAYTIME_SEQ", "")); param.put("VIEWTYPE", parseKey(map, "VIEWTYPE", "")); param.put("FREQ_KIND", parseKey(map, "FREQ_KIND", "")); param.put("FROMYMD", parseKey(map, "FROMYMD", "").replace("-", "").replace(".", "").replace("/", "")); param.put("TOYMD", parseKey(map, "TOYMD", "").replace("-", "").replace(".", "").replace("/", "")); param.put("USER_ID", USER_ID); param.put("MBTYPE", parseKey(map, "MBTYPE", "")); param.put("MFC_CD", parseKey(map, "MFC_CD", "")); param.put("SEARCHTYPE", parseKey(map, "SEARCHTYPE", "")); param.put("MME_GRP_ID", parseKey(map, "MME_GRP_ID", "")); param.put("NE_ID", parseKey(map, "NE_ID", "")); param.put("PART_CD", parseKey(map, "PART_CD", "")); param.put("BONBU_CD", parseKey(map, "BONBU_CD", "")); param.put("OPER_TEAM_CD", parseKey(map, "OPER_TEAM_CD", "")); param.put("CITY_CD", parseKey(map, "CITY", "")); ArrayList<String> alist = new ArrayList<String>(); String temp01[] = parseKey(map, "DUIDs", "").split("\\|"); for (int i = 0; i < temp01.length; i++) { alist.add(temp01[i]); } param.put("DUIDs", alist); System.out.println(param.toString()); } private String parseKey(Map<String, Object> map, String Key, String None) { if (map.containsKey(Key)) { if (map.get(Key) == null) return None; else return map.get(Key).toString(); } else { return None; } } }