package id.co.hanoman.log.action; import java.io.PrintWriter; import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.log4j.BasicConfigurator; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import com.google.gson.Gson; //import com.ibm.json.xml.internal.JSONObject; //import com.ibm.xml.crypto.util.Base64; //import com.ibm.xml.soapsec.token.TokenRequest.XML; import com.scupid.util.BeanUtil; import id.co.hanoman.config.Base64; import id.co.hanoman.json.DlogJsonMap; import id.co.hanoman.mbplugin.codex.Codex; import id.co.hanoman.mbplugin.codex.CodexContext; import id.co.hanoman.mbplugin.codex.CodexFactory; import id.co.hanoman.service.NameValue; import id.co.hanoman.service.PersistanceServiceInterface; import id.co.hanoman.service.log.Dlog; import id.co.hanoman.service.log.DlogList; import id.co.hanoman.service.log.DlogMd; import id.co.hanoman.shared.CodexLoader; import id.co.hanoman.shared.Constant; import id.co.hanoman.shared.Pager; import id.co.hanoman.service.ServiceUtil; import id.co.hanoman.shared.Util; /** * DlogAction merupakan action yang dipanggil untuk menjalankan fungsi-fungsi seperti create, update, dan delete data Dlog * * @author Hanoman Interaktif
* (C) Hanoman Interaktif. * @version 1.0 * * CR MWUI (terbaru): * 1. Filter source/code/custom field (v_XX) tidak lagi selalu "like" - sekarang mendukung * equal / not_equal / like / not_like, default "equal". * 2. Initial load (belum ada aksi search/page/order/reset dari user) tidak query ke tabel DLOG, * hanya menampilkan form filter. Ditandai lewat parameter hidden "doSearch". * 3. Paging tidak lagi menghitung total record (getTotal()/COUNT). Diganti dengan strategi * "ambil count+1 baris" untuk mendeteksi apakah ada halaman berikutnya, sehingga paging * hanya menampilkan tombol Next (dan Prev/First). Karena ini tidak lagi memakai * Pager.generatePagingNew()/generatePagingItemNew() (yang berbasis total record), HTML * paging dibangun langsung di sini. * 4. Filter waktu dibatasi maksimal 1 hari: user hanya memilih 1 tanggal (end date server-side * selalu dipaksa = start date), tapi start time & end time (jam:menit) dalam tanggal itu * tetap bisa diatur user. * 5. Response header LOG MESSAGE - LIST diset no-cache/no-store supaya browser tidak * menampilkan ulang hasil search lama dari cache saat halaman dibuka lagi. * 6. Attribute request "searched" ditambahkan supaya dlog_list.jsp bisa membedakan pesan * "belum melakukan search" vs "sudah search tapi hasilnya memang kosong". */ public class DlogAction extends Action { private static LinkedHashMap typeMap; protected Log log = LogFactory.getLog(this.getClass()); private SimpleDateFormat formatSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); // nilai default operator filter (CR#1) private static final String SMA_EQUAL = "equal"; private static final String SMA_NOT_EQUAL = "not_equal"; private static final String SMA_LIKE = "like"; private static final String SMA_NOT_LIKE = "not_like"; /** * Method execute mapping forward *

* Method untuk menjalankan fungsi action mapping dan redirect ke action form yang dipanggil *

* * @param mapping * Action untuk melakukan redirect ke action form yang ingin dipanggil. * @param form * Action yang dipanggil sesuai dengan form yang ada di jsp. * @param request * Memanggil informasi HTTP servlet. * @param response * Mengirimkan response informasi HTTP servlet * @return object forward yang berisi action form yang dipanggil */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward = null; String action = request.getParameter("action"); response.setHeader("Pragma", "no-cache"); // for themes String themes = (String) request.getSession().getAttribute("user.themes"); if (Util.isNullOrEmpty(themes)) { themes = Constant.DEFAULT; request.getSession().setAttribute("user.themes", themes); } String callerPrincipal = (String) request.getSession().getAttribute("login.user"); if (callerPrincipal == null) { response.sendRedirect("./login.jsp"); return null; } if (Constant.ACTION_LIST.equalsIgnoreCase(action)) { forward = doList(mapping, form, request, response); } else if (Constant.ACTION_DETAIL.equalsIgnoreCase(action)) { forward = doDetail(mapping, form, request, response); } else if ("doLoadRaw".equalsIgnoreCase(action)) { doLoadRaw(mapping, form, request, response); } else if ("getCList".equalsIgnoreCase(action)) { doGetCList(mapping, form, request, response); } else { forward = doList(mapping, form, request, response); } return forward; } /** * Menghapus semua session yang telah disimpan * * @param request * Memanggil informasi HTTP servlet. */ public void clearSession(HttpServletRequest request) throws Exception { request.getSession().removeAttribute("dlog_type_filter"); request.getSession().removeAttribute("dlog_source_filter"); request.getSession().removeAttribute("dlog_source_sma"); request.getSession().removeAttribute("dlog_code_filter"); request.getSession().removeAttribute("dlog_code_sma"); // request.getSession().removeAttribute("dlog_timestamp_start_filter"); // set default to Current Date request.getSession().setAttribute("dlog_timestamp_start_filter", Constant.SDFDS.format(new Date())); request.getSession().removeAttribute("dlog_timestamp_hour_start_filter"); request.getSession().removeAttribute("dlog_timestamp_minute_start_filter"); request.getSession().removeAttribute("dlog_timestamp_end_filter"); request.getSession().removeAttribute("dlog_timestamp_hour_end_filter"); request.getSession().removeAttribute("dlog_timestamp_minute_end_filter"); request.getSession().removeAttribute("dlogMd_sma"); request.getSession().removeAttribute("dlog_value_filter"); request.getSession().removeAttribute("dlogMd_label_filter"); request.getSession().removeAttribute("dlog_fieldOrder"); request.getSession().removeAttribute("dlog_orderType"); request.getSession().removeAttribute("start"); } /** * Method action untuk menampilkan halaman list Dlog * * @param mapping * Action untuk melakukan redirect ke action form yang ingin dipanggil. * @param form * Action yang dipanggil sesuai dengan form yang ada di jsp. * @param request * Memanggil informasi HTTP servlet. * @param response * Mengirimkan response informasi HTTP servlet * @return object forward yang berisi action form yang dipanggil */ public ActionForward doList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionMessages errors = new ActionMessages(); if (request.getParameter(Constant.CLEAR) != null && Constant.TRUE.equalsIgnoreCase(request.getParameter(Constant.CLEAR))) clearSession(request); // ==== Cegah browser menampilkan ulang halaman hasil search lewat cache / back-forward // cache (bfcache) saat user membuka lagi halaman LOG MESSAGE, supaya initial load // selalu benar-benar hit server dan dievaluasi ulang lewat flag doSearch. ==== response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Expires", "0"); ServletContext ctx = getServlet().getServletContext(); PersistanceServiceInterface psi = ServiceUtil.getDaoClient(ctx); request.setAttribute("hourList", Constant.HOUR_LIST); request.setAttribute("minuteList", Constant.MINUTE_LIST); // CR#2: apakah request ini benar-benar aksi user (search/page/order/reset) // atau cuma buka halaman pertama kali. Kalau bukan aksi user, jangan query ke DLOG. String param_doSearch = request.getParameter("doSearch"); boolean isSearch = Constant.TRUE.equalsIgnoreCase(param_doSearch); // dipakai di JSP untuk membedakan pesan "belum search" vs "sudah search tapi hasil kosong" request.setAttribute("searched", isSearch ? "true" : "false"); // this for orderBy field ASC/DESC String dlog_fieldOrder = request.getParameter("dlog_fieldOrder"); String dlog_orderType = request.getParameter("dlog_orderType"); // this for filter String param_dlog_type_filter = request.getParameter("dlog_type_filter"); String param_dlog_source_filter = request.getParameter("dlog_source_filter"); String param_dlog_source_sma = request.getParameter("dlog_source_sma"); String param_dlog_code_filter = request.getParameter("dlog_code_filter"); String param_dlog_code_sma = request.getParameter("dlog_code_sma"); String param_dlogMd_label_filter = request.getParameter("dlogMd_label_filter"); String param_dlog_value_filter = request.getParameter("dlog_value_filter"); String param_dlog_timestamp_start_filter = request.getParameter("dlog_timestamp_start_filter"); String param_dlog_timestamp_hour_start_filter = request.getParameter("dlog_timestamp_hour_start_filter"); String param_dlog_timestamp_minute_start_filter = request.getParameter("dlog_timestamp_minute_start_filter"); String param_dlog_timestamp_end_filter = request.getParameter("dlog_timestamp_end_filter"); String param_dlog_timestamp_hour_end_filter = request.getParameter("dlog_timestamp_hour_end_filter"); String param_dlog_timestamp_minute_end_filter = request.getParameter("dlog_timestamp_minute_end_filter"); // edited by ismawan String param_dlog_sma_filter = request.getParameter("dlogMd_sma"); // this for filter // log.info("param_dlog_sma_filter ["+param_dlog_sma_filter+"]"); if (Util.isNullOrEmpty(dlog_fieldOrder)) dlog_fieldOrder = (String) request.getSession().getAttribute("dlog_fieldOrder"); if (Util.isNullOrEmpty(dlog_orderType)) dlog_orderType = (String) request.getSession().getAttribute("dlog_orderType"); if (param_dlog_type_filter == null) param_dlog_type_filter = (String) request.getSession().getAttribute("dlog_type_filter"); if (param_dlog_source_filter == null) param_dlog_source_filter = (String) request.getSession().getAttribute("dlog_source_filter"); if (param_dlog_source_sma == null) param_dlog_source_sma = (String) request.getSession().getAttribute("dlog_source_sma"); if (Util.isNullOrEmpty(param_dlog_source_sma)) param_dlog_source_sma = SMA_EQUAL; // default CR#1 if (param_dlog_code_filter == null) param_dlog_code_filter = (String) request.getSession().getAttribute("dlog_code_filter"); if (param_dlog_code_sma == null) param_dlog_code_sma = (String) request.getSession().getAttribute("dlog_code_sma"); if (Util.isNullOrEmpty(param_dlog_code_sma)) param_dlog_code_sma = SMA_EQUAL; // default CR#1 if (param_dlogMd_label_filter == null) param_dlogMd_label_filter = (String) request.getSession().getAttribute("dlogMd_label_filter"); if (param_dlog_value_filter == null) param_dlog_value_filter = (String) request.getSession().getAttribute("dlog_value_filter"); if (Util.isNullOrEmpty(param_dlog_timestamp_start_filter)) { param_dlog_timestamp_start_filter = (String) request.getSession().getAttribute("dlog_timestamp_start_filter"); if (Util.isNullOrEmpty(param_dlog_timestamp_start_filter)) { // set default to Current Date param_dlog_timestamp_start_filter = Constant.SDFDS.format(new Date()); } } if (param_dlog_timestamp_hour_start_filter == null) { param_dlog_timestamp_hour_start_filter = (String) request.getSession().getAttribute("dlog_timestamp_hour_start_filter"); if (param_dlog_timestamp_hour_start_filter == null) param_dlog_timestamp_hour_start_filter = "0"; } if (param_dlog_timestamp_minute_start_filter == null) { param_dlog_timestamp_minute_start_filter = (String) request.getSession().getAttribute("dlog_timestamp_minute_start_filter"); if (param_dlog_timestamp_minute_start_filter == null) param_dlog_timestamp_minute_start_filter = "0"; } if (param_dlog_timestamp_end_filter == null) param_dlog_timestamp_end_filter = (String) request.getSession().getAttribute("dlog_timestamp_end_filter"); if (param_dlog_timestamp_hour_end_filter == null) param_dlog_timestamp_hour_end_filter = (String) request.getSession().getAttribute("dlog_timestamp_hour_end_filter"); if (param_dlog_timestamp_minute_end_filter == null) param_dlog_timestamp_minute_end_filter = (String) request.getSession().getAttribute("dlog_timestamp_minute_end_filter"); if (param_dlog_sma_filter == null) param_dlog_sma_filter = (String) request.getSession().getAttribute("dlogMd_sma"); if (Util.isNullOrEmpty(param_dlog_sma_filter)) param_dlog_sma_filter = SMA_EQUAL; // default CR#1 // default untuk order by timestamp desc if (Util.isNullOrEmpty(dlog_fieldOrder)) dlog_fieldOrder = "dlog.reqtimestamp"; if (Util.isNullOrEmpty(dlog_orderType)) dlog_orderType = "desc"; request.getSession().setAttribute("dlog_fieldOrder", dlog_fieldOrder == null ? "" : dlog_fieldOrder); request.getSession().setAttribute("dlog_orderType", dlog_orderType == null ? "" : dlog_orderType); StringBuffer dlog_filterSb = new StringBuffer(); List filterList = new LinkedList(); NameValue filter = null; if (!Util.isNullOrEmpty(param_dlog_type_filter)) { if (param_dlog_type_filter.length() > 0) { log.info("param_dlog_type_filter = " + param_dlog_type_filter); filter = new NameValue(); filter.setName("typeDlog"); filter.setValue("%" + param_dlog_type_filter.trim() + "%"); filterList.add(filter); dlog_filterSb.append(" AND dlog.typeDmd.type like :typeDlog "); } } request.getSession().setAttribute("dlog_type_filter", param_dlog_type_filter); // ==== FILTER WAKTU: DIBATASI MAKSIMAL 1 HARI ==== // User hanya memilih SATU tanggal (dlog_timestamp_start_filter); end date selalu // dipaksa sama dengan start date di server (parameter end date dari client diabaikan), // jadi range tetap maksimal 1 hari walaupun ada yang mengoplos parameter lewat URL. // Start time & end time (jam:menit) dalam tanggal itu tetap bisa diatur user. if (Util.isNullOrEmpty(param_dlog_timestamp_hour_start_filter)) param_dlog_timestamp_hour_start_filter = "0"; if (Util.isNullOrEmpty(param_dlog_timestamp_minute_start_filter)) param_dlog_timestamp_minute_start_filter = "0"; if (Util.isNullOrEmpty(param_dlog_timestamp_hour_end_filter)) param_dlog_timestamp_hour_end_filter = "23"; if (Util.isNullOrEmpty(param_dlog_timestamp_minute_end_filter)) param_dlog_timestamp_minute_end_filter = "59"; // end date selalu ikut start date, apapun yang dikirim client param_dlog_timestamp_end_filter = param_dlog_timestamp_start_filter; Calendar param_dlog_timestamp_start_filter_cal = Calendar.getInstance(); Calendar param_dlog_timestamp_end_filter_cal = Calendar.getInstance(); if (!Util.isNullOrEmpty(param_dlog_timestamp_start_filter)) { try { param_dlog_timestamp_start_filter_cal.setTime(new SimpleDateFormat(Constant.DATE_SHORT).parse(param_dlog_timestamp_start_filter)); param_dlog_timestamp_start_filter_cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(param_dlog_timestamp_hour_start_filter)); param_dlog_timestamp_start_filter_cal.set(Calendar.MINUTE, Integer.parseInt(param_dlog_timestamp_minute_start_filter)); param_dlog_timestamp_start_filter_cal.set(Calendar.SECOND, 0); param_dlog_timestamp_start_filter_cal.set(Calendar.MILLISECOND, 0); // end pakai tanggal yang sama (bukan hasil parse ulang param_dlog_timestamp_end_filter, // supaya walaupun ada yang usil kirim tanggal lain di parameter itu, tetap diabaikan) param_dlog_timestamp_end_filter_cal.setTime(param_dlog_timestamp_start_filter_cal.getTime()); param_dlog_timestamp_end_filter_cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(param_dlog_timestamp_hour_end_filter)); param_dlog_timestamp_end_filter_cal.set(Calendar.MINUTE, Integer.parseInt(param_dlog_timestamp_minute_end_filter)); param_dlog_timestamp_end_filter_cal.set(Calendar.SECOND, 59); param_dlog_timestamp_end_filter_cal.set(Calendar.MILLISECOND, 999); // jaga-jaga kalau end time-of-day < start time-of-day (misal user pilih start 20:00, end 08:00) -> tukar if (param_dlog_timestamp_end_filter_cal.before(param_dlog_timestamp_start_filter_cal)) { Calendar tmp = (Calendar) param_dlog_timestamp_start_filter_cal.clone(); param_dlog_timestamp_start_filter_cal.set(Calendar.HOUR_OF_DAY, param_dlog_timestamp_end_filter_cal.get(Calendar.HOUR_OF_DAY)); param_dlog_timestamp_start_filter_cal.set(Calendar.MINUTE, param_dlog_timestamp_end_filter_cal.get(Calendar.MINUTE)); param_dlog_timestamp_start_filter_cal.set(Calendar.SECOND, 0); param_dlog_timestamp_start_filter_cal.set(Calendar.MILLISECOND, 0); param_dlog_timestamp_end_filter_cal.set(Calendar.HOUR_OF_DAY, tmp.get(Calendar.HOUR_OF_DAY)); param_dlog_timestamp_end_filter_cal.set(Calendar.MINUTE, tmp.get(Calendar.MINUTE)); param_dlog_timestamp_end_filter_cal.set(Calendar.SECOND, 59); param_dlog_timestamp_end_filter_cal.set(Calendar.MILLISECOND, 999); String tmpH = param_dlog_timestamp_hour_start_filter, tmpM = param_dlog_timestamp_minute_start_filter; param_dlog_timestamp_hour_start_filter = param_dlog_timestamp_hour_end_filter; param_dlog_timestamp_minute_start_filter = param_dlog_timestamp_minute_end_filter; param_dlog_timestamp_hour_end_filter = tmpH; param_dlog_timestamp_minute_end_filter = tmpM; } filter = new NameValue(); filter.setName("timestampStart"); filter.setValue(param_dlog_timestamp_start_filter_cal.getTime()); filterList.add(filter); dlog_filterSb.append(" AND dlog.reqtimestamp >= :timestampStart "); filter = new NameValue(); filter.setName("timestampEnd"); filter.setValue(param_dlog_timestamp_end_filter_cal.getTime()); filterList.add(filter); dlog_filterSb.append(" AND dlog.reqtimestamp <= :timestampEnd "); log.info("FILTER TANGGAL (1 hari) :: " + formatSdf.format(param_dlog_timestamp_start_filter_cal.getTime()) + " s/d " + formatSdf.format(param_dlog_timestamp_end_filter_cal.getTime())); } catch (Exception e) { log.error("Gagal parse tanggal/jam filter [" + param_dlog_timestamp_start_filter + " " + param_dlog_timestamp_hour_start_filter + ":" + param_dlog_timestamp_minute_start_filter + " - " + param_dlog_timestamp_hour_end_filter + ":" + param_dlog_timestamp_minute_end_filter + "]", e); } } request.getSession().setAttribute("dlog_timestamp_start_filter", param_dlog_timestamp_start_filter); request.getSession().setAttribute("dlog_timestamp_hour_start_filter", param_dlog_timestamp_hour_start_filter); request.getSession().setAttribute("dlog_timestamp_minute_start_filter", param_dlog_timestamp_minute_start_filter); request.getSession().setAttribute("dlog_timestamp_end_filter", param_dlog_timestamp_end_filter); request.getSession().setAttribute("dlog_timestamp_hour_end_filter", param_dlog_timestamp_hour_end_filter); request.getSession().setAttribute("dlog_timestamp_minute_end_filter", param_dlog_timestamp_minute_end_filter); // ==== CR#1: SOURCE - equal / not_equal / like / not_like (default equal) ==== if (!Util.isNullOrEmpty(param_dlog_source_filter)) { if (param_dlog_source_filter.length() > 0) { filter = new NameValue(); filter.setName("source"); if (SMA_LIKE.equals(param_dlog_source_sma)) { filter.setValue("%" + param_dlog_source_filter.trim() + "%"); dlog_filterSb.append(" AND dlog.source like :source "); } else if (SMA_NOT_LIKE.equals(param_dlog_source_sma)) { filter.setValue("%" + param_dlog_source_filter.trim() + "%"); dlog_filterSb.append(" AND dlog.source not like :source "); } else if (SMA_NOT_EQUAL.equals(param_dlog_source_sma)) { filter.setValue(param_dlog_source_filter.trim()); dlog_filterSb.append(" AND dlog.source != :source "); } else { filter.setValue(param_dlog_source_filter.trim()); dlog_filterSb.append(" AND dlog.source = :source "); } filterList.add(filter); } } request.getSession().setAttribute("dlog_source_filter", param_dlog_source_filter); request.getSession().setAttribute("dlog_source_sma", param_dlog_source_sma); // ==== CR#1: CODE - equal / not_equal / like / not_like (default equal) ==== if (!Util.isNullOrEmpty(param_dlog_code_filter)) { if (param_dlog_code_filter.length() > 0) { filter = new NameValue(); filter.setName("code"); if (SMA_LIKE.equals(param_dlog_code_sma)) { filter.setValue("%" + param_dlog_code_filter.trim() + "%"); dlog_filterSb.append(" AND dlog.code like :code "); } else if (SMA_NOT_LIKE.equals(param_dlog_code_sma)) { filter.setValue("%" + param_dlog_code_filter.trim() + "%"); dlog_filterSb.append(" AND dlog.code not like :code "); } else if (SMA_NOT_EQUAL.equals(param_dlog_code_sma)) { filter.setValue(param_dlog_code_filter.trim()); dlog_filterSb.append(" AND dlog.code != :code "); } else { filter.setValue(param_dlog_code_filter.trim()); dlog_filterSb.append(" AND dlog.code = :code "); } filterList.add(filter); } } request.getSession().setAttribute("dlog_code_filter", param_dlog_code_filter); request.getSession().setAttribute("dlog_code_sma", param_dlog_code_sma); // ==== CR#1: CUSTOM FIELD (v_XX via dlogMd_label_filter) - equal / not_equal / like / not_like (default equal) ==== if (!Util.isNullOrEmpty(param_dlog_value_filter)) { if (!Util.isNullOrEmpty(param_dlogMd_label_filter)) { if (param_dlog_value_filter.length() > 0) { filter = new NameValue(); filter.setName("id"); String col = "dlog." + param_dlogMd_label_filter; if (SMA_LIKE.equals(param_dlog_sma_filter)) { filter.setValue("%" + param_dlog_value_filter.trim() + "%"); dlog_filterSb.append(" AND " + col + " like :id "); } else if (SMA_NOT_LIKE.equals(param_dlog_sma_filter)) { filter.setValue("%" + param_dlog_value_filter.trim() + "%"); dlog_filterSb.append(" AND " + col + " not like :id "); } else if (SMA_NOT_EQUAL.equals(param_dlog_sma_filter)) { filter.setValue(param_dlog_value_filter.trim()); dlog_filterSb.append(" AND " + col + " != :id "); } else { filter.setValue(param_dlog_value_filter.trim()); dlog_filterSb.append(" AND " + col + " = :id "); } filterList.add(filter); // log.info("dlog_filterSb ["+dlog_filterSb.toString()+"]"); //cek, udah nangkap parameternya lum } } } request.getSession().setAttribute("dlog_value_filter", param_dlog_value_filter); request.getSession().setAttribute("dlogMd_label_filter", param_dlogMd_label_filter); request.getSession().setAttribute("dlogMd_sma", param_dlog_sma_filter); // ActionForward forward = null; String order = null; if (dlog_fieldOrder != null && dlog_orderType != null) order = dlog_fieldOrder + " " + dlog_orderType; int start = 0; int count = Constant.PAGE_SIZE_LOG; try { try { String startStr = request.getParameter(Constant.START); if (startStr == null) startStr = (String) request.getSession().getAttribute("start"); if (startStr != null) { start = Integer.parseInt(startStr); } request.getSession().setAttribute("start", startStr == null ? "0" : startStr); // if (request.getParameter(Constant.START) != null) { // start = // Integer.parseInt(request.getParameter(Constant.START)); // } } catch (Exception e) { } // dlogMdList (dropdown Type) dan typeMap tetap perlu dimuat di initial load, // karena ini query ke DlogMd (metadata), BUKAN ke tabel DLOG. id.co.hanoman.service.List typeList = null; if (typeMap == null) { typeMap = getTypeList(psi, typeList); } request.setAttribute("dlogMdList", typeMap.keySet()); if (isSearch) { // ==== CR#2: hanya query ke tabel DLOG kalau ini benar-benar aksi user ==== NameValue[] filterArray = new NameValue[filterList.size()]; for (int i = 0; i < filterList.size(); i++) { filterArray[i] = filterList.get(i); } log.info("WHERE CLAUSE = " + dlog_filterSb.toString()); log.info("------------ DLOGLIST --------------- FROM DlogList dlog WHERE 1=1 " + dlog_filterSb +" order "+ order+" ??? "+filterArray); // ==== CR#3: ambil count+1 baris untuk deteksi next page, tanpa hitung total ==== id.co.hanoman.service.List list = psi.query(Constant.MWLOG_DS, "FROM DlogList dlog WHERE 1=1 " + dlog_filterSb + (Util.isNullOrEmpty(order) ? "" : " ORDER BY " + order), filterArray, start, count + 1); Object[] rawItems = list.getItems(); boolean hasNext = rawItems != null && rawItems.length > count; int showCount = rawItems == null ? 0 : (hasNext ? count : rawItems.length); Object[] items = new Object[showCount]; if (rawItems != null && showCount > 0) { System.arraycopy(rawItems, 0, items, 0, showCount); } boolean hasPrev = start > 0; int prevStart = Math.max(0, start - count); int nextStart = start + count; int pageNumber = (start / count) + 1; StringBuffer pagingHtml = new StringBuffer(); pagingHtml.append("<< "); if (hasPrev) { pagingHtml.append("< "); } else { pagingHtml.append("< "); } if (hasNext) { pagingHtml.append(">"); } else { pagingHtml.append(">"); } StringBuffer pagingItemHtml = new StringBuffer(); pagingItemHtml.append("Page ").append(pageNumber); request.setAttribute("paging", pagingHtml.toString()); request.setAttribute("pagingItem", pagingItemHtml.toString()); request.setAttribute("dlogList", items); request.setAttribute("dlog_start", new Integer(start)); for (int i = 0; i < items.length; i++) { DlogList dlogList = (DlogList) items[i]; log.info("-dlogList.getCode()- " + dlogList.getCode()); log.info("-dlogList.getSource()- " + dlogList.getSource()); } log.info("------------ DLOGLIST --------------- (no total count) FROM DlogList dlog WHERE 1=1 " + dlog_filterSb + " order " + order); } else { // ==== CR#2: initial load - tidak query ke tabel DLOG sama sekali ==== request.setAttribute("dlogList", null); request.setAttribute("paging", null); request.setAttribute("pagingItem", null); request.setAttribute("dlog_start", new Integer(0)); } } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage(), e); errors.add(Constant.ERROR_GENERAL, new ActionMessage(Constant.ERROR_GENERAL, e.getMessage())); // log.error(e.getMessage(), e); // response.sendRedirect("./"); // return null; } finally { } if (!errors.isEmpty()) { saveErrors(request, errors); // if(typeList == null) { // id.co.hanoman.service.List typeList = // psi.query(Constant.MWLOG_DS, "FROM DlogMd WHERE 1=1", null, 0, // 0); // Object[] itemsType = typeList.getItems(); // request.setAttribute("dlogMdList", itemsType); } // } return mapping.findForward(Constant.ACTION_LIST); } /** * Method untuk melakukan redirect ke halaman charge detail untuk menampilkan detail data dlog * * @param mapping * Action untuk melakukan redirect ke action form yang ingin dipanggil. * @param form * Action yang dipanggil sesuai dengan form yang ada di jsp. * @param request * Memanggil informasi HTTP servlet. * @param response * Mengirimkan response informasi HTTP servlet * @return object forward yang berisi action form yang dipanggil */ public ActionForward doDetail(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward = null; ActionMessages errors = new ActionMessages(); try { ServletContext ctx = getServlet().getServletContext(); PersistanceServiceInterface psi = ServiceUtil.getDaoClient(ctx); Dlog dlog = (Dlog) psi.queryById(Constant.MWLOG_DS, "Dlog", new Long(request.getParameter("id")), null); String reqtimestamp = formatSdf.format(dlog.getReqtimestamp().getTime()); String corellationId = dlog.getCorellationId(); String dlog_filterSb = "AND dlog.corellationId ='" + corellationId + "'" + " AND dlog.reqtimestamp ='" + reqtimestamp + "'"; String order = "dlog.timestamp"; id.co.hanoman.service.List dloglist = psi.query(Constant.MWLOG_DS, "FROM Dlog dlog WHERE 1=1 " + dlog_filterSb + (Util.isNullOrEmpty(order) ? "" : " ORDER BY " + order), null, 0, 0); Object[] dlogsLogs = dloglist.getItems(); BasicConfigurator.configure(); // CodexFactory cf = new CodexFactory(null, "db://" + ctx.getRealPath("/WEB-INF/classes/db-config.xml")); // CodexFactory cf = CodexLoader.getCodexFactory(); log.info("BEFORE CODEX FACTORY"); CodexFactory cf = CodexLoader.getCodexFactory(getServlet().getServletContext()); log.info("AFTER CODEX FACTORY"); List listDlog = new LinkedList(); if (dlogsLogs != null) { for (int i = 0; i < dlogsLogs.length; i++) { Map msg = new LinkedHashMap(); // Map msgOp = new LinkedHashMap(); Dlog dl = (Dlog) dlogsLogs[i]; if (dl.getId() != null) { msg.put("Id", dl.getId()); } msg.put("Type", dl.getTypeDmd().getType()); log.info("Type Message " + dl.getTypeDmd().getType()); msg.put("Dir", dl.getDir()); msg.put("Source", dl.getSource()); if (!Util.isNullOrEmpty(dl.getCode())) { msg.put("Code", dl.getCode()); } msg.put("Request Time", dl.getReqtimestamp()); msg.put("Timestamp", dl.getTimestamp()); msg.put("Corellation Id", dl.getCorellationId()); if (!(dl.getTypeDmd().getType() == null)) { if (dl.getV_1() != null) { msg.put(dl.getTypeDmd().getC_1(), dl.getV_1()); } else if (dl.getV_2() != null) { msg.put(dl.getTypeDmd().getC_2(), dl.getV_2()); } else if (dl.getV_3() != null) { msg.put(dl.getTypeDmd().getC_3(), dl.getV_3()); } else if (dl.getV_4() != null) { msg.put(dl.getTypeDmd().getC_4(), dl.getV_4()); } else if (dl.getV_5() != null) { msg.put(dl.getTypeDmd().getC_5(), dl.getV_5()); } else if (dl.getV_6() != null) { msg.put(dl.getTypeDmd().getC_6(), dl.getV_6()); } else if (dl.getV_7() != null) { msg.put(dl.getTypeDmd().getC_7(), dl.getV_7()); } else if (dl.getV_8() != null) { msg.put(dl.getTypeDmd().getC_8(), dl.getV_8()); } else if (dl.getV_9() != null) { msg.put(dl.getTypeDmd().getC_9(), dl.getV_9()); } else if (dl.getV_10() != null) { msg.put(dl.getTypeDmd().getC_10(), dl.getV_10()); } else if (dl.getV_11() != null) { msg.put(dl.getTypeDmd().getC_11(), dl.getV_11()); } else if (dl.getV_12() != null) { msg.put(dl.getTypeDmd().getC_12(), dl.getV_12()); } else if (dl.getV_13() != null) { msg.put(dl.getTypeDmd().getC_13(), dl.getV_13()); } else if (dl.getV_14() != null) { msg.put(dl.getTypeDmd().getC_14(), dl.getV_14()); } else if (dl.getV_15() != null) { msg.put(dl.getTypeDmd().getC_15(), dl.getV_15()); } else if (dl.getV_16() != null) { msg.put(dl.getTypeDmd().getC_16(), dl.getV_16()); } else if (dl.getV_17() != null) { msg.put(dl.getTypeDmd().getC_17(), dl.getV_17()); } else if (dl.getV_18() != null) { msg.put(dl.getTypeDmd().getC_18(), dl.getV_18()); } else if (dl.getV_19() != null) { msg.put(dl.getTypeDmd().getC_19(), dl.getV_19()); } else if (dl.getV_20() != null) { msg.put(dl.getTypeDmd().getC_20(), dl.getV_20()); } else if (dl.getV_21() != null) { msg.put(dl.getTypeDmd().getC_21(), dl.getV_21()); } else if (dl.getV_22() != null) { msg.put(dl.getTypeDmd().getC_22(), dl.getV_22()); } else if (dl.getV_23() != null) { msg.put(dl.getTypeDmd().getC_23(), dl.getV_23()); } else if (dl.getV_24() != null) { msg.put(dl.getTypeDmd().getC_24(), dl.getV_24()); } else if (dl.getV_25() != null) { msg.put(dl.getTypeDmd().getC_15(), dl.getV_25()); } else if (dl.getV_26() != null) { msg.put(dl.getTypeDmd().getC_26(), dl.getV_26()); } else if (dl.getV_27() != null) { msg.put(dl.getTypeDmd().getC_27(), dl.getV_27()); } else if (dl.getV_28() != null) { msg.put(dl.getTypeDmd().getC_28(), dl.getV_28()); } else if (dl.getV_29() != null) { msg.put(dl.getTypeDmd().getC_29(), dl.getV_29()); } else if (dl.getV_30() != null) { msg.put(dl.getTypeDmd().getC_30(), dl.getV_30()); } else if (dl.getV_31() != null) { msg.put(dl.getTypeDmd().getC_31(), dl.getV_31()); } else if (dl.getV_32() != null) { msg.put(dl.getTypeDmd().getC_32(), dl.getV_32()); } else if (dl.getV_33() != null) { msg.put(dl.getTypeDmd().getC_33(), dl.getV_33()); } else if (dl.getV_34() != null) { msg.put(dl.getTypeDmd().getC_34(), dl.getV_34()); } else if (dl.getV_35() != null) { msg.put(dl.getTypeDmd().getC_35(), dl.getV_35()); } else if (dl.getV_36() != null) { msg.put(dl.getTypeDmd().getC_36(), dl.getV_36()); } else if (dl.getV_37() != null) { msg.put(dl.getTypeDmd().getC_37(), dl.getV_37()); } else if (dl.getV_38() != null) { msg.put(dl.getTypeDmd().getC_38(), dl.getV_38()); } else if (dl.getV_39() != null) { msg.put(dl.getTypeDmd().getC_22(), dl.getV_39()); } else if (dl.getV_40() != null) { msg.put(dl.getTypeDmd().getC_40(), dl.getV_40()); } } msg.put("Raw_Codex", dl.getRaw()); String type = dl.getTypeDmd().getType().toLowerCase(); log.info("dl.getTypeDmd().getType().toLowerCase() >>>> " + type); if (type.startsWith("http://", 0) || (type.startsWith("https://", 0)) || type.equals("rpg") || (type.equals("error") || type.startsWith("error:", 0))) { log.info("1[][][][][][]"); String rawData = new String(org.apache.commons.codec.binary.Base64.encodeBase64(dl.getRaw())); byte b[] = Base64.decode(rawData); // log.info("sebelum XMLoutput["+new String(b)+"]"); // log.info("HASIL RAW XMLOut >>>>>>>>"+new org.jdom.output.XMLOutputter(Format.getPrettyFormat()).outputString(new SAXBuilder().build(new ByteArrayInputStream(b)))); msg.put("Raw", new String(b)); } else if (type.equalsIgnoreCase("*")) { String rawData = new String(org.apache.commons.codec.binary.Base64.encodeBase64(dl.getRaw())); log.info("2[][][][][][]"); msg.put("Raw", rawData); } else { Codex c = null; try { // DEV & QA c = cf.getCodex(dl.getTypeDmd().getCodex()); // PROD // c = cf.getCodex(dl.getTypeDmd().getType()); } catch (Exception e) { log.error(e.getMessage(), e); } if (c != null) { log.info("code is [" + dlog.getCode() + "]"); // check again is TEXT in code if (dlog.getCode().startsWith("TEXT:")) { String rawData = new String(org.apache.commons.codec.binary.Base64.encodeBase64(dl.getRaw())); byte b[] = Base64.decode(rawData); msg.put("Raw", new String(b)); } else { log.info("dlog. ().getType() codex " + dlog.getTypeDmd().getType()); String rawData = new String(org.apache.commons.codec.binary.Base64.encodeBase64(dl.getRaw())); byte b[] = Base64.decode(rawData); log.info("b size " + b.length); // log.info(">>>> " + BeanUtil.dumpBean(b)); ByteBuffer buf = ByteBuffer.wrap(b); c.decode(new CodexContext(), msg, buf); if (buf.remaining() > 0) { msg.put("Broker Log", new String(buf.array(), buf.position(), buf.remaining()).trim()); } log.info("3[][][]][][]"); } } else { log.info("4[][][][][][]"); String rawData = new String(org.apache.commons.codec.binary.Base64.encodeBase64(dl.getRaw())); // byte b[] = Base64.decode(rawData); msg.put("Raw", rawData); } } listDlog.add(msg); } } // log.info("hasil print OOOOOOOOOOOOOOOOo"+id.co.hanoman.config.Util.print(listDlog)); request.setAttribute("listDlog", listDlog); } catch (Exception e) { log.error(e.getMessage(), e); errors.add(Constant.ERROR_GENERAL, new ActionMessage(Constant.ERROR_GENERAL, e.getMessage())); } finally { } if (!errors.isEmpty()) { saveErrors(request, errors); forward = doList(mapping, form, request, response); } else { forward = mapping.findForward(Constant.ACTION_DETAIL); } return forward; } /** * Method untuk query data dlog untuk kolum raw dengan parameter id pada objek dlog. Data dari kolum raw di simpan pada StringBuffer kemudian data tersebut dilempar ke fungsi javascript * * @param mapping * Action untuk melakukan redirect ke action form yang ingin dipanggil * @param form * Action yang dipanggil sesuai dengan form yang ada di jsp. * @param request * Memanggil informasi HTTP servlet. * @param response * Mengirimkan response informasi HTTP servlet * @return object forward yang berisi action form yang dipanggil */ protected void doLoadRaw(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { response.setContentType("text/xml"); response.setHeader("Content-Type", "text/xml"); ServletContext ctx = getServlet().getServletContext(); PersistanceServiceInterface psi = ServiceUtil.getDaoClient(ctx); Dlog dlog = (Dlog) psi.queryById(Constant.MWLOG_DS, "Dlog", new Long(request.getParameter("id")), null); request.setAttribute("dlog", dlog); StringBuffer sb = new StringBuffer(); sb.append(""); if (dlog.getRaw() == null) { sb.append("null"); } else { byte[] raw = dlog.getRaw(); sb.append("" + Util.forXML(new String(org.apache.commons.codec.binary.Base64.encodeBase64(raw))) + ""); } sb.append(""); log.info("----------------------- "+sb.toString()+" --------------------------------"); PrintWriter pw = response.getWriter(); pw.write(sb.toString()); pw.close(); } catch (Exception e) { log.error(e.getMessage(), e); } } private void doGetCList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { log.info("MASUK DO GET"); PrintWriter pw = null; Gson gson = new Gson(); // response.setContentType("text/xml"); // List cList = new LinkedList(); try { pw = response.getWriter(); // StringBuffer sb = new StringBuffer(); String type = request.getParameter("type"); log.info("TYPE::" + type); if (Util.isNullOrEmpty(type)) { pw.write(""); } else { Iterator iterator = typeMap.keySet().iterator(); while (iterator.hasNext()) { Object o = iterator.next(); if (o instanceof String) { String key = (String) o; if (key.equals(type)) { List cList = (List) typeMap.get(key); pw.print(gson.toJson(cList)); log.info("STRING BUFFER::" + cList); } } } } } catch (Exception e) { e.printStackTrace(); pw.write(""); } finally { pw.close(); } } /* * private void doGetCList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { log.info("MASUK DO GET"); PrintWriter pw = null; response.setContentType("text/xml"); // List cList = new LinkedList(); * * try { pw = response.getWriter(); StringBuffer sb = new StringBuffer(); String type = request.getParameter("type"); log.info("TYPE::" + type); if (Util.isNullOrEmpty(type)) { pw.write(""); } else { sb.append(""); Iterator iterator = typeMap.keySet().iterator(); while (iterator.hasNext()) { Object o = iterator.next(); if (o instanceof String) { String key = (String) o; if (key.equals(type)) { List cList = (List) typeMap.get(key); for (int i = 0; i < cList.size(); i++) { sb.append(""); sb.append("" + cList.get(i).get("id") + ""); sb.append("" + cList.get(i).get("name") + ""); sb.append(""); } } } } sb.append(""); * * log.info("STRING BUFFER::" + sb.toString()); pw.write(sb.toString()); JSONObject jsonObj = XML.toJSONObject(xml); } } catch (Exception e) { e.printStackTrace(); pw.write(""); } finally { pw.close(); } } */ private synchronized static LinkedHashMap getTypeList(PersistanceServiceInterface psi, id.co.hanoman.service.List typeList) throws Exception { typeList = psi.query(Constant.MWLOG_DS, "FROM DlogMd WHERE 1=1 order by type ASC ", null, 0, 0); // log.info("-------------------------------------------------------- getTypeList(PersistanceServiceInterface psi, id.co.hanoman.service.List typeList) ----------------------------------------------------"); Object[] typeItems = typeList.getItems(); typeMap = new LinkedHashMap(); for (Object typeObj : typeItems) { Map map = new HashMap(); List cList = new LinkedList(); DlogMd dlogMd = (DlogMd) typeObj; cList = addCList(dlogMd, cList); // if(set.size() > 0) { // Iterator iterator = typeMap.keySet().iterator(); // while(iterator.hasNext()) { // Object o = iterator.next(); // if(o instanceof String) { // String key = (String) o; // if(typeMap.containsKey(key)) { // log.info("duplicate"); // typeMap = new LinkedHashMap(); // typeMap.put(dlogMd.getType(), cList); // } // } // } // } map.put(dlogMd.getType(), cList); typeMap.putAll(map); // log.info(("Key::"+typeMap.keySet()+"Value::"+typeMap.values())); } return typeMap; } public static List addCList(DlogMd dlogMd, List cList) throws Exception { try { Map cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_1())) { cMap1.put("id", "v_1"); cMap1.put("name", dlogMd.getC_1()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_2())) { cMap1.put("id", "v_2"); cMap1.put("name", dlogMd.getC_2()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_3())) { cMap1.put("id", "v_3"); cMap1.put("name", dlogMd.getC_3()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_4())) { cMap1.put("id", "v_4"); cMap1.put("name", dlogMd.getC_4()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_5())) { cMap1.put("id", "v_5"); cMap1.put("name", dlogMd.getC_5()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_6())) { cMap1.put("id", "v_6"); cMap1.put("name", dlogMd.getC_6()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_7())) { cMap1.put("id", "v_7"); cMap1.put("name", dlogMd.getC_7()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_8())) { cMap1.put("id", "v_8"); cMap1.put("name", dlogMd.getC_8()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_9())) { cMap1.put("id", "v_9"); cMap1.put("name", dlogMd.getC_9()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_10())) { cMap1.put("id", "v_10"); cMap1.put("name", dlogMd.getC_10()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_11())) { cMap1.put("id", "v_11"); cMap1.put("name", dlogMd.getC_11()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_12())) { cMap1.put("id", "v_12"); cMap1.put("name", dlogMd.getC_12()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_13())) { cMap1.put("id", "v_13"); cMap1.put("name", dlogMd.getC_13()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_14())) { cMap1.put("id", "v_14"); cMap1.put("name", dlogMd.getC_14()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_15())) { cMap1.put("id", "v_15"); cMap1.put("name", dlogMd.getC_15()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_16())) { cMap1.put("id", "v_16"); cMap1.put("name", dlogMd.getC_16()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_17())) { cMap1.put("id", "v_17"); cMap1.put("name", dlogMd.getC_17()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_18())) { cMap1.put("id", "v_18"); cMap1.put("name", dlogMd.getC_18()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_19())) { cMap1.put("id", "v_19"); cMap1.put("name", dlogMd.getC_19()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_20())) { cMap1.put("id", "v_20"); cMap1.put("name", dlogMd.getC_20()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_21())) { cMap1.put("id", "v_21"); cMap1.put("name", dlogMd.getC_21()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_22())) { cMap1.put("id", "v_22"); cMap1.put("name", dlogMd.getC_22()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_23())) { cMap1.put("id", "v_23"); cMap1.put("name", dlogMd.getC_23()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_24())) { cMap1.put("id", "v_24"); cMap1.put("name", dlogMd.getC_24()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_25())) { cMap1.put("id", "v_25"); cMap1.put("name", dlogMd.getC_25()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_26())) { cMap1.put("id", "v_26"); cMap1.put("name", dlogMd.getC_26()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_27())) { cMap1.put("id", "v_27"); cMap1.put("name", dlogMd.getC_27()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_28())) { cMap1.put("id", "v_28"); cMap1.put("name", dlogMd.getC_28()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_29())) { cMap1.put("id", "v_29"); cMap1.put("name", dlogMd.getC_29()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_30())) { cMap1.put("id", "v_30"); cMap1.put("name", dlogMd.getC_30()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_31())) { cMap1.put("id", "v_31"); cMap1.put("name", dlogMd.getC_31()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_32())) { cMap1.put("id", "v_32"); cMap1.put("name", dlogMd.getC_32()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_33())) { cMap1.put("id", "v_33"); cMap1.put("name", dlogMd.getC_33()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_34())) { cMap1.put("id", "v_34"); cMap1.put("name", dlogMd.getC_34()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_35())) { cMap1.put("id", "v_35"); cMap1.put("name", dlogMd.getC_35()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_36())) { cMap1.put("id", "v_36"); cMap1.put("name", dlogMd.getC_36()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_37())) { cMap1.put("id", "v_37"); cMap1.put("name", dlogMd.getC_37()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_38())) { cMap1.put("id", "v_38"); cMap1.put("name", dlogMd.getC_38()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_39())) { cMap1.put("id", "v_39"); cMap1.put("name", dlogMd.getC_39()); cList.add(cMap1); } cMap1 = new HashMap(); if (!Util.isNullOrEmpty(dlogMd.getC_40())) { cMap1.put("id", "v_40"); cMap1.put("name", dlogMd.getC_40()); cList.add(cMap1); } } catch (Exception e) { e.printStackTrace(); } return cList; } }