Java tutorial
/* * This file is part of AceQL. * AceQL: Remote JDBC access over HTTP. * Copyright (C) 2015, KawanSoft SAS * (http://www.kawansoft.com). All rights reserved. * * AceQL is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * AceQL is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA * * Any modifications to this file must keep this entire header * intact. */ package org.kawanfw.sql.json.no_obfuscation; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.Vector; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; import org.kawanfw.commons.util.FrameworkDebug; import org.kawanfw.sql.jsontypes.StaParms; public class CallableStatementHolderTransportJsonSimple { /** Debug flag */ private static boolean DEBUG = FrameworkDebug.isSet(CallableStatementHolderTransportJsonSimple.class); /** * Convert to Json a unique of StatementHolder * * @return the instance converted to Json */ public static String toJson(CallableStatementHolder statementHolder) { int[] stP = statementHolder.getStP(); List<Integer> list = new Vector<Integer>(); for (int i = 0; i < stP.length; i++) { list.add(stP[i]); } String stPstr = JSONValue.toJSONString(list); String parmsTstr = JSONValue.toJSONString(statementHolder.getParmsT()); String parmsVstr = JSONValue.toJSONString(statementHolder.getParmsV()); String outPstr = JSONValue.toJSONString(statementHolder.getOutP()); // Put all in map Map<String, Object> map = new HashMap<String, Object>(); map.put("sql", statementHolder.getSql()); map.put("stP", stPstr); map.put("parmsT", parmsTstr); map.put("parmsV", parmsVstr); map.put("outP", outPstr); map.put("paramatersEncrypted", statementHolder.isParamatersEncrypted()); map.put("htmlEncodingOn", statementHolder.isHtmlEncodingOn()); String theString = JSONValue.toJSONString(map); // Clean all to release memory for GC stP = null; statementHolder = null; map = null; return theString; } /** * Convert from a Json string a List of StatementHolder * * @return the StatementHolder list converted from Json */ @SuppressWarnings({ "rawtypes" }) public static CallableStatementHolder fromJson(String jsonString) { // Revert it Object obj = JSONValue.parse(jsonString); JSONObject mapBack = (JSONObject) obj; String sql = (String) mapBack.get("sql"); String stPstr = (String) mapBack.get("stP"); String parmsTstr = (String) mapBack.get("parmsT"); String parmsVstr = (String) mapBack.get("parmsV"); String outPstr = (String) mapBack.get("outP"); Boolean paramatersEncrypted = (Boolean) mapBack.get("paramatersEncrypted"); Boolean htmlEncodingOn = (Boolean) mapBack.get("htmlEncodingOn"); mapBack = null; Object objParmsT = JSONValue.parse(parmsTstr); JSONObject mapBackParmsT = (JSONObject) objParmsT; Object objParmsV = JSONValue.parse(parmsVstr); JSONObject mapBackParmsV = (JSONObject) objParmsV; Object JSONArray = JSONValue.parse(stPstr); JSONArray arrayBackStP = (JSONArray) JSONArray; Object outPstrT = JSONValue.parse(outPstr); JSONArray arrayBackoutP = (JSONArray) outPstrT; int[] stP = new int[StaParms.NUM_PARMS]; for (int i = 0; i < arrayBackStP.size(); i++) { long myLong = (Long) arrayBackStP.get(i); stP[i] = (int) myLong; } Map<Integer, Integer> parmsT = new TreeMap<Integer, Integer>(); Set set = mapBackParmsT.keySet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { String key = (String) iterator.next(); long value = (Long) mapBackParmsT.get(key); parmsT.put(Integer.parseInt(key), (int) value); } Map<Integer, String> parmsV = new TreeMap<Integer, String>(); set = mapBackParmsV.keySet(); for (Iterator iterator = set.iterator(); iterator.hasNext();) { String key = (String) iterator.next(); String value = (String) mapBackParmsV.get(key); parmsV.put(Integer.parseInt(key), value); } List<Integer> outP = new ArrayList<Integer>(); for (int i = 0; i < arrayBackoutP.size(); i++) { long myLong = (Long) arrayBackoutP.get(i); outP.add((int) myLong); } // Clean all to release memory for GC obj = null; objParmsT = null; objParmsV = null; arrayBackStP = null; arrayBackoutP = null; if (DEBUG) { String stPaString = "["; for (int i = 0; i < stP.length; i++) { stPaString += stP[i] + " "; } stPaString += "]"; System.out.println(); System.out.println(sql); System.out.println(stPaString); System.out.println(parmsT); System.out.println(parmsV); System.out.println(outP); System.out.println(paramatersEncrypted); System.out.println(htmlEncodingOn); System.out.println(); } CallableStatementHolder callableStatementHolder = new CallableStatementHolder(); callableStatementHolder.setSql(sql); callableStatementHolder.setStP(stP); callableStatementHolder.setParmsT(parmsT); callableStatementHolder.setParmsV(parmsV); callableStatementHolder.setOutP(outP); callableStatementHolder.setParamatersEncrypted(paramatersEncrypted); callableStatementHolder.setHtmlEncodingOn(htmlEncodingOn); return callableStatementHolder; } /** * Debug * * @param s */ public static void debug(String s) { if (DEBUG) { System.out.println(s); } } }