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; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import org.json.simple.JSONObject; import org.json.simple.JSONValue; import org.kawanfw.commons.util.FrameworkDebug; import org.kawanfw.commons.util.HtmlConverter; /** * * Class to transport Result Set column names and * values between host <==> PC. * * @author Nicolas de Pomereu */ public class JsonColPosition { /** For debug info */ private static boolean DEBUG = FrameworkDebug.isSet(JsonColPosition.class); /** * Format for JSON String the Map<String, Integer> of (column name, column * position) of a result set * * @param columnPositions * the Map<String, Integer> of (column name, column position) of * a result set * @return the formated JSON string ready for transport */ public static String toJson(Map<String, Integer> columnPositions) { if (columnPositions == null) { throw new IllegalArgumentException("columsAndValues is null!"); } String jsonString = JSONValue.toJSONString(columnPositions); jsonString = HtmlConverter.toHtml(jsonString); debug(" toJson(Map<String, Integer> columnPositions) jsonString: " + jsonString); return jsonString; } /** * Format from JSON string Map<String, Integer> of (column name, column * position) of a result set * * @param jsonString * formated JSON string containing the Map<String, Integer> of * (column name, column position) * @return Map<String, Integer> of (column name, column position) */ public static Map<String, Integer> fromJson(String jsonString) { if (jsonString == null) { throw new IllegalArgumentException("jsonString is null!"); } jsonString = HtmlConverter.fromHtml(jsonString); // Revert it Object obj = JSONValue.parse(jsonString); JSONObject mapBack = (JSONObject) obj; debug("jsonString : " + jsonString); debug("mapBack.toString(): " + mapBack.toString()); Map<String, Integer> columnPositions = new LinkedHashMap<String, Integer>(); Set<?> set = mapBack.keySet(); for (Iterator<?> iterator = set.iterator(); iterator.hasNext();) { String key = (String) iterator.next(); long value = (Long) mapBack.get(key); columnPositions.put(key, (int) value); } // free objects obj = null; mapBack = null; return columnPositions; } /** * @param args */ public static void main(String[] args) throws Exception { Map<String, Integer> columnPositions = new LinkedHashMap<String, Integer>(); columnPositions.put("col_1", 1); columnPositions.put("col_2", 2); columnPositions.put("col_3", 2); System.out.println(columnPositions); String jsonString = toJson(columnPositions); System.out.println(jsonString); System.out.println(); Map<String, Integer> columnPositionsBack = fromJson(jsonString); System.out.println(columnPositionsBack); } private static void debug(String s) { if (DEBUG) { System.out.println(s); } } }