com.skt.adcas.lte.action.CSVDownloadAction.java Source code

Java tutorial

Introduction

Here is the source code for com.skt.adcas.lte.action.CSVDownloadAction.java

Source

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;
        }
    }

}