http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/pogo/MapLiteSerializer.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/pogo/MapLiteSerializer.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/pogo/MapLiteSerializer.java
deleted file mode 100644
index fe9b09a..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/pogo/MapLiteSerializer.java
+++ /dev/null
@@ -1,338 +0,0 @@
-package com.gemstone.gemfire.internal.tools.gfsh.app.pogo;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Date;
-import java.util.zip.DataFormatException;
-import java.util.zip.Deflater;
-import java.util.zip.Inflater;
-
-import com.gemstone.gemfire.DataSerializer;
-import com.gemstone.gemfire.internal.DSCODE;
-import com.gemstone.gemfire.internal.InternalDataSerializer;
-
-/**
- * MapLiteSerializer serializes MapLite specifics. It is for internal use only.
- * @author dpark
- *
- */
-abstract class MapLiteSerializer extends DataSerializer
-{
-       public static void write(Class cls, Object object, DataOutput out) 
throws IOException
-       {
-               if (cls == String.class) {
-                       writeUTF((String) object, out);
-               } else if (cls == boolean.class || cls == Boolean.class) {
-                       writeBoolean((Boolean) object, out);
-               } else if (cls == byte.class || cls == Byte.class) {
-                       writeByte((Byte) object, out);
-               } else if (cls == char.class || cls == Character.class) {
-                       writeCharacter((Character) object, out);
-               } else if (cls == double.class || cls == Double.class) {
-                       writeDouble((Double) object, out);
-               } else if (cls == float.class || cls == Float.class) {
-                       writeFloat((Float) object, out);
-               } else if (cls == int.class || cls == Integer.class) {
-                       writeInteger((Integer) object, out);
-               } else if (cls == long.class || cls == Long.class) {
-                       writeLong((Long) object, out);
-               } else if (cls == short.class || cls == Short.class) {
-                       writeShort((Short) object, out);
-               } else if (cls == MapLite.class) {
-                       writeMapLite((MapLite) object, out);
-               } else if (cls == Date.class) {
-                       writeObject((Date) object, out);
-               } else if (cls == boolean[].class) {
-                       writeBooleanArray((boolean[]) object, out);
-               } else if (cls == byte[].class) {
-                       writeByteArray((byte[]) object, out);
-               } else if (cls == char[].class) {
-                       writeCharArray((char[]) object, out);
-               } else if (cls == double[].class) {
-                       writeDoubleArray((double[]) object, out);
-               } else if (cls == float[].class) {
-                       writeFloatArray((float[]) object, out);
-               } else if (cls == int[].class) {
-                       writeIntArray((int[]) object, out);
-               } else if (cls == long[].class) {
-                       writeLongArray((long[]) object, out);
-               } else if (cls == short[].class) {
-                       writeShortArray((short[]) object, out);
-               } else {
-                       writeObject(object, out);
-               }
-       }
-       
-       public static Object read(Class cls, DataInput in) throws IOException, 
ClassNotFoundException
-       {
-               Object value;
-               if (cls == String.class) {
-                       value = readUTF(in);
-               } else if (cls == boolean.class || cls == Boolean.class) {
-                       value = readBoolean(in);
-               } else if (cls == byte.class || cls == Byte.class) {
-                       value = readByte(in);
-               } else if (cls == char.class || cls == Character.class) {
-                       value = readCharacter(in);
-               } else if (cls == double.class || cls == Double.class) {
-                       value = readDouble(in);
-               } else if (cls == float.class || cls == Float.class) {
-                       value = readFloat(in);
-               } else if (cls == int.class || cls == Integer.class) {
-                       value = readInteger(in);
-               } else if (cls == long.class || cls == Long.class) {
-                       value = readLong(in);
-               } else if (cls == short.class || cls == Short.class) {
-                       value = readShort(in);
-               } else if (cls == MapLite.class) {
-                       value = readMapLite(in);
-               } else if (cls == Date.class) {
-                       value = readObject(in);
-               } else if (cls == boolean[].class) {
-                       value = DataSerializer.readBooleanArray(in);
-               } else if (cls == byte[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else if (cls == char[].class) {
-                       value = DataSerializer.readCharacter(in);
-               } else if (cls == double[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else if (cls == float[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else if (cls == int[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else if (cls == long[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else if (cls == short[].class) {
-                       value = DataSerializer.readByteArray(in);
-               } else {
-                       value = DataSerializer.readObject(in);
-               }
-               return value;
-       }
-       
-       /**
-        * Writes the specified byte array to the output stream. This method is 
-        * not thread safe.
-        * 
-        * @param array The byte array to compress
-        * @param buffer The byte array buffer used as input to the deflater. 
This
-        *               buffer must have enough space to hold the compressed 
data.
-        * @param compressor java.util.Deflater. 
-        * @param output The data output stream.
-        * @throws IOException Thrown if unable to write to the output stream.
-        */
-       public static void writeByteArray(byte array[], byte buffer[], Deflater 
compressor, DataOutput output) throws IOException
-       {
-               // Compress the bytes
-                compressor.setInput(array);
-                compressor.finish();
-                int compressedDataLength = compressor.deflate(buffer);
-                DataSerializer.writeByteArray(buffer, compressedDataLength, 
output);
-       }
-       
-       /**
-        * Reads byte array from the input stream. This method is not thread 
safe.
-        * 
-        * @param buffer The buffer to hold the decompressed data. This buffer
-        *               must be large enough to hold the decompressed data.
-        * @param decompressor java.util.Inflater
-        * @param input The data input stream.
-        * @return Returns the actual byte array (not compressed) read from the 
-        *         input stream.
-        * @throws IOException Thrown if unable to read from the input stream or
-        *                     unable to decompress the data.
-        */
-       public static byte[] readByteArray(byte buffer[], Inflater 
decompressor, DataInput input) throws IOException
-       {
-               byte compressedBuffer[] = DataSerializer.readByteArray(input);  
-               // Decompress the bytes
-               decompressor.setInput(compressedBuffer, 0, 
compressedBuffer.length);
-               byte retval[] = null;
-               try {
-                       int resultLength = decompressor.inflate(buffer);
-                       retval = new byte[resultLength];
-                       System.arraycopy(compressedBuffer, 0, retval, 0, 
resultLength);
-               } catch (DataFormatException e) {
-                       throw new IOException("Unable to decompress the byte 
array due to a data format error. " + e.getMessage());
-               }
-               return retval;
-       }
-       
-       /**
-        * Reads UTF string from the input. This method is analogous to 
-        * DataInput.readUTF() except that it supports null string.
-        * @param input The data input stream.
-        * @return Returns null or non-null string value.
-        * @throws IOException Thrown if unable to read from the input stream.
-        */
-       public static String readUTF(DataInput input) throws IOException
-       {
-               byte header = input.readByte();
-               if (header == DSCODE.NULL_STRING) {
-                       return null;
-               } 
-               return input.readUTF();
-       }
-       
-       /**
-        * Writes the specified sting value to the output stream. This method
-        * is analogous to DataOutput.writeUTF() except that it supports null
-        * string.
-        * @param value The string value to write to the output stream.
-        * @param output The data output stream.
-        * @throws IOException Thrown if unable to write to the output stream. 
-        */
-       public static void writeUTF(String value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeByte(DSCODE.NULL_STRING);
-               } else {
-                       output.writeByte(DSCODE.STRING);
-                       output.writeUTF(value);
-               }               
-       }
-       
-       /**
-        * Reads boolean value;
-        */
-       public static Boolean readBoolean(DataInput input) throws IOException
-       {
-               return input.readBoolean();
-       }
-       
-       /**
-        * Writes the specified boolean value to the stream. If the value is 
null
-        * then it write false.
-        * @param value The value to write
-        * @param output
-        * @throws IOException
-        */
-       public static void writeBoolean(Boolean value, DataOutput output) 
throws IOException
-       {
-               if (value == null) {
-                       output.writeBoolean(false);
-               } else {
-                       output.writeBoolean(value);
-               }
-       }
-       
-       public static Byte readByte(DataInput input) throws IOException
-       {
-               return input.readByte();
-       }
-       
-       public static void writeByte(Byte value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeByte(0);
-               } else {
-                       output.writeByte(value);
-               }
-       }
-       
-       public static Character readCharacter(DataInput input) throws 
IOException
-       {
-               return input.readChar();
-       }
-       
-       public static void writeCharacter(Character value, DataOutput output) 
throws IOException
-       {
-               if (value == null) {
-                       output.writeChar(0);
-               } else {
-                       output.writeChar(value);
-               }
-       }
-       
-       public static Double readDouble(DataInput input) throws IOException
-       {
-               return input.readDouble();
-       }
-       
-       public static void writeDouble(Double value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeDouble(0);
-               } else {
-                       output.writeDouble(value);
-               }
-       }
-       
-       public static Float readFloat(DataInput input) throws IOException
-       {
-               return input.readFloat();
-       }
-       
-       public static void writeFloat(Float value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeFloat(0);
-               } else {
-                       output.writeFloat(value);
-               }
-       }
-       
-       public static Integer readInteger(DataInput input) throws IOException
-       {
-               return input.readInt();
-       }
-       
-       public static void writeInteger(Integer value, DataOutput output) 
throws IOException
-       {
-               if (value == null) {
-                       output.writeInt(0);
-               } else {
-                       output.writeInt(value);
-               }
-       }
-       
-       public static Long readLong(DataInput input) throws IOException
-       {
-               return input.readLong();
-       }
-       
-       public static void writeLong(Long value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeLong(0);
-               } else {
-                       output.writeLong(value);
-               }
-       }
-       
-       public static Short readShort(DataInput input) throws IOException
-       {
-               return input.readShort();
-       }
-       
-       public static void writeShort(Short value, DataOutput output) throws 
IOException
-       {
-               if (value == null) {
-                       output.writeShort(0);
-               } else {
-                       output.writeShort(value);
-               }
-       }
-       
-       public static MapLite readMapLite(DataInput input) throws 
ClassNotFoundException, IOException
-       {
-               byte header = input.readByte();
-               if (header == DSCODE.NULL){
-                       return null;
-               }
-               MapLite fo = new MapLite();
-               InternalDataSerializer.invokeFromData(fo, input);
-               return fo;
-       }
-       
-       public static void writeMapLite(MapLite value, DataOutput output) 
throws IOException
-       {
-               if (value == null) {
-                       output.writeByte(DSCODE.NULL);
-               } else {
-                       output.writeByte(DSCODE.DS_NO_FIXED_ID);
-                       InternalDataSerializer.invokeToData(value, output);
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtil.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtil.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtil.java
deleted file mode 100644
index 42ee2c7..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtil.java
+++ /dev/null
@@ -1,1094 +0,0 @@
-/*=========================================================================
- * Copyright (c) 2008, Pivotal Software, Inc. All Rights Reserved.
- * This product is protected by U.S. and international copyright
- * and intellectual property laws. Pivotal products are covered by
- * more patents listed at http://www.pivotal.io/patents.
- *========================================================================
- */
-package com.gemstone.gemfire.internal.tools.gfsh.app.util;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.Driver;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.Struct;
-import com.gemstone.gemfire.cache.query.types.CollectionType;
-import com.gemstone.gemfire.cache.query.types.ObjectType;
-import com.gemstone.gemfire.cache.query.types.StructType;
-import com.gemstone.gemfire.internal.tools.gfsh.app.Gfsh;
-import com.gemstone.gemfire.internal.tools.gfsh.app.command.task.QueryResults;
-import com.gemstone.gemfire.internal.tools.gfsh.app.command.task.QueryTask;
-import com.gemstone.gemfire.internal.tools.gfsh.app.misc.util.ReflectionUtil;
-import com.gemstone.gemfire.internal.tools.gfsh.command.CommandResults;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-/**
- * DBUtil is a simple database utility class that updates the database
- * with the RBC TradeCapture specific objects.
- * 
- * @author dpark
- */
-public class DBUtil
-{
-       public static final int TYPE_KEYS = 0;
-       public static final int TYPE_VALUES = 1;
-       public static final int TYPE_KEYS_VALUES = 2;
-       
-       
-       private static DBUtil dbutil;
-       
-    static SimpleDateFormat dateFormat = new SimpleDateFormat(
-            "MM/dd/yyyy HH:mm:ss.SSS");
-    static SimpleDateFormat smallDateFormat = new SimpleDateFormat(
-    "MM/dd/yy");
-
-    protected Connection conn;
-    private String driverName;
-    private String url;
-    private String userName;
-    
-
-    /**
-     * Creates a DBUtil object that provides access to the database.
-     *
-     * @param driverName The JDBC dirver name. For example,
-     *                   com.nywe.db.sybaseImpl.SybaseDBConn.
-     * @throws DBUtilException Thrown if the driver does not exist.
-     */
-    private DBUtil(String driverName) throws DBUtilException
-    {
-        init(driverName);
-    }
-    
-    @SuppressFBWarnings(value="LI_LAZY_INIT_UPDATE_STATIC",justification="This 
looks like singleton and at present looks like desired functionality")
-    public static DBUtil initialize(String driverName, String url, String 
userName,
-            String password) throws DBUtilException
-    {
-       if (dbutil != null) {
-               dbutil.close();
-       }
-       dbutil = new DBUtil(driverName);
-       dbutil.connect(url, userName, password);
-       return dbutil;
-    }
-    
-    public static DBUtil getDBUtil()
-    {
-       return dbutil;
-    }
-
-    /**
-     * Initializes DB.
-     * @param driverName The name of the JDBC Driver. For example,
-     *                   com.nywe.db.sybaseImpl.SybaseDBConn.
-     */
-    private void init(String driverName) throws DBUtilException
-    {
-        try {
-            // finds and loads the driver dynamically
-            Driver driver = (Driver) Class.forName(driverName).newInstance();
-            DriverManager.registerDriver(driver);
-            this.driverName = driverName;
-        } catch (Exception ex) {
-            throw new DBUtilException(ex);
-        }
-    }
-
-    /**
-     * Establishes connection to the database server.
-     * @param url The database URL.
-     * @param userName The user name used to login to the database.
-     * @param password The password used to login to the database.
-     * @throws DBUtilException Thrown if it encounters a database connection 
error.
-     */
-    private synchronized void connect(String url, String userName,
-        String password) throws DBUtilException
-    {
-        if (conn != null) {
-            throw new 
DBUtilException(DBUtilException.ERROR_CONNECTION_ALREADY_ESTABLISHED,
-                                      "The database connection has already 
been established. To establish a new connection, close it first.");
-        }
-
-        Properties props = new Properties();
-        props.put("user", userName);
-        props.put("password", password);
-
-        try {
-            conn = DriverManager.getConnection(url, props);
-            this.url = url;
-            this.userName = userName;
-        } catch (SQLException ex) {
-            ex.printStackTrace();
-            System.out.println("Error Code: " + ex.getErrorCode());
-        } catch (Exception ex) {
-            ex.printStackTrace();
-            throw new DBUtilException(ex);
-        }
-    }
-
-    public String getDriverName()
-       {
-               return driverName;
-       }
-
-       public String getUrl()
-       {
-               return url;
-       }
-
-       public String getUserName()
-       {
-               return userName;
-       }
-
-       /**
-     * Cloases the database connection and frees all system resources used
-     * by DBUtil.
-     *
-     * @throws DBUtilException Thrown if it encounters a database communcations
-     *                         error.
-     */
-    public synchronized void close() throws DBUtilException
-    {
-        try {
-            if (conn != null) {
-                conn.close();
-                conn = null;
-            }
-        } catch (Exception ex) {
-            throw new DBUtilException(ex);
-        }
-    }
-    
-    
-    /**
-     * Returns true if DBUtil has been closed, otherwise, false. If DBUtil is
-     * closed then DBUtil is no longer usable. To reconnect, call connect() 
again.
-     */
-    public boolean isClosed()
-    {
-        return (conn == null);
-    }
-       
-       public int loadDB(Gfsh gfsh, Region region, 
-                       Class keyClass, 
-                       Class valueClass, 
-                       String sql, 
-                       String primaryColumn) throws DBUtilException 
-       {
-               int count = 0;
-    PreparedStatement statement = null;
-               
-               try {
-                       Map<String, Method> keySettersMap = 
ReflectionUtil.getAllSettersMap(keyClass);
-                       Map<String, Method> valueSettersMap = 
ReflectionUtil.getAllSettersMap(valueClass);
-                       
-                       // realMap is for mapping methods to case-insensitive 
table columns
-                       Map<String, Method> realMap = new HashMap();
-                       
-                       if (sql.startsWith("select ") == false) {
-                               // it's table name. create sql
-                               sql = "select * from " + sql;
-                       }
-
-               statement = conn.prepareStatement(sql);
-               ResultSet resultSet = statement.executeQuery();
-               
-               while (resultSet.next()) {
-                   
-                   // key
-               Object key = updateObject(gfsh, keyClass, keySettersMap, 
realMap, resultSet, primaryColumn);
-               
-               // value
-               Object value = updateObject(gfsh, valueClass, valueSettersMap, 
realMap, resultSet, null);
-               
-               region.put(key, value);
-               
-                   count++;
-            }
-        
-       } catch (Exception ex) {
-               throw new DBUtilException(ex);
-       } finally {
-         if (statement != null) {
-           try {
-            statement.close();
-          } catch (SQLException e) {
-            throw new DBUtilException(e);
-          }
-        }
-       }
-       
-       return count;
-       }
-    
-       public int storeDB(Gfsh gfsh, Region region, String tableName, 
-                       int storeType, String primaryColumn, 
-                       boolean isKeyPrimary) throws DBUtilException
-       {
-               int count = 0;
-               try {
-                       DatabaseMetaData meta = conn.getMetaData();
-                       ResultSet resultSet = meta.getColumns(null, null, 
tableName, null);
-                       ArrayList<ColumnInfo> columnList = new ArrayList();
-                       while (resultSet.next()) {
-                               ColumnInfo info = new ColumnInfo();
-                               info.name = 
(String)resultSet.getObject("COLUMN_NAME");
-                               info.type = 
(Integer)resultSet.getObject("DATA_TYPE"); // java.sql.Types
-                               columnList.add(info);
-                       }
-                       
-                       // Collect all matching field names from the region 
object
-                       Set<Region.Entry> entrySet = region.entrySet();
-                       
-                       Map<String, Method> keyGettersMap = new HashMap(0);
-                       Map<String, Method> valueGettersMap = new HashMap(0);
-                       int columnCount = 0; 
-                       String keyKeys[] = new String[0];
-                       String valueKeys[] = new String[0];
-                       for (Region.Entry entry : entrySet) {
-                               Object key = entry.getKey();
-                               Object value = entry.getValue();
-                               switch (storeType) {
-                               case TYPE_KEYS:
-                                       keyGettersMap = 
ReflectionUtil.getAllGettersMap(key.getClass());
-                                       keyGettersMap = 
getGettersMap(keyGettersMap, columnList);
-                                       columnCount = keyGettersMap.size(); 
-                                       keyKeys = 
keyGettersMap.keySet().toArray(new String[0]);
-                                       break;
-                               case TYPE_VALUES:
-                                       valueGettersMap = 
ReflectionUtil.getAllGettersMap(value.getClass());
-                                       valueGettersMap = 
getGettersMap(valueGettersMap, columnList);
-                                       columnCount = valueGettersMap.size();
-                                       valueKeys = 
valueGettersMap.keySet().toArray(new String[0]);
-                                       break;
-                               case TYPE_KEYS_VALUES:
-                                       keyGettersMap = 
ReflectionUtil.getAllGettersMap(key.getClass());
-                                       keyGettersMap = 
getGettersMap(keyGettersMap, columnList);
-                                       valueGettersMap = 
ReflectionUtil.getAllGettersMap(value.getClass());
-                                       valueGettersMap = 
getGettersMap(valueGettersMap, columnList);
-                                       columnCount = keyGettersMap.size() + 
valueGettersMap.size(); 
-                                       keyKeys = 
keyGettersMap.keySet().toArray(new String[0]);
-                                       valueKeys = 
valueGettersMap.keySet().toArray(new String[0]);
-                               default:
-                                       break;
-                               }
-                               
-                               Set<String> keySet = valueGettersMap.keySet();
-                               // take care of case senstiveness
-                               if (primaryColumn != null) {
-                                       for (String keyStr : keySet) {
-                                               if 
(primaryColumn.equalsIgnoreCase(keyStr)) {
-                                                       primaryColumn = keyStr;
-                                                       break;
-                                               }
-                                       }
-                               }
-                               
-                               // Remove all duplicate entries from 
keyGettersMap
-                               // keep only primary key (column)
-                               for (String keyStr : keySet) {
-                                       if (isKeyPrimary == false || 
primaryColumn == null || primaryColumn.equalsIgnoreCase(keyStr) == false) {
-                                               keyGettersMap.remove(keyStr);
-                                       }
-                               }
-                               break;
-                       }
-                       
-                       try {
-                               
-                               String insertQuery = createInsertQuery(keyKeys, 
valueKeys, tableName);
-                               String updateQuery = createUpdateQuery(keyKeys, 
valueKeys, tableName, primaryColumn, isKeyPrimary);
-//                             
-//                             System.out.println(insertQuery);
-//                             System.out.println(updateQuery);
-                               
-                               // tries insert followed by update (upsert)
-                               for (Region.Entry entry : entrySet) {
-                                       Object key = entry.getKey();
-                                       Object value = entry.getValue();
-                                       
-                                       // try insert first. if it fails then 
do update
-                               PreparedStatement statement = 
createInsertPreparedStatement(keyGettersMap, valueGettersMap, keyKeys, 
valueKeys, key, value, insertQuery);
-//                             System.out.println(statement.toString());
-                               try {
-                                       statement.executeUpdate();
-                               } catch (SQLException ex) {
-                                       
-                                       // try update
-                                       statement = 
createUpdatePreparedStatement(keyGettersMap, valueGettersMap, keyKeys, 
valueKeys, key, value, updateQuery, primaryColumn, isKeyPrimary);
-                                       statement.executeUpdate();
-//                                     
System.out.println(statement.toString());
-                               }
-                               count++;
-                               }
-               } catch (SQLException ex) {
-                       throw new DBUtilException(ex);
-               }
-               
-               } catch (Exception ex) {
-                       throw new DBUtilException(ex);
-               }
-               return count;
-       }
-       
-       private List<ColumnInfo> getColumnInfoList(String tableName) throws 
SQLException
-       {
-               String lowercase = tableName.toLowerCase();
-               ArrayList<ColumnInfo> columnList = new ArrayList();
-               if (lowercase.startsWith("insert ")) {
-                       // insert
-                       
-                       
-               } else if (lowercase.startsWith("update ")) {
-                       
-                       // update
-                       
-                       // TODO: hack
-                       // Replace the following with real parser
-                       // This breaks if string literals that has '?', ',', or 
'=' character
-                       String split[] = tableName.split("= *\\?");
-                       for (int i = 0; i < split.length; i++) {
-                               String token = split[i].trim();
-                               int index = token.indexOf('=');
-                               if (index >= 0) {
-                                       String x = token.substring(index);
-                                       x = x.trim();
-                                       index = x.lastIndexOf(',');
-                                       if (index > 0) {
-                                               token = x.substring(index+1);
-                                       } else {
-                                               index = x.lastIndexOf(' ');
-                                               if (index > 0) {
-                                                       token = 
x.substring(index+1);
-                                               } else {
-                                                       continue;
-                                               }
-                                       }
-                               }
-                               index = token.lastIndexOf(' ');
-                               if (index != -1) {
-                                       token = token.substring(index);
-                               }
-                               token = token.replace(',', ' ');
-                               token = token.trim();
-                               ColumnInfo info = new ColumnInfo();
-                               info.name = token;
-                               columnList.add(info);
-                       }
-                       
-               } else {
-                       // table name
-                       DatabaseMetaData meta = conn.getMetaData();
-                       ResultSet resultSet = meta.getColumns(null, null, 
tableName, null);
-                       
-                       while (resultSet.next()) {
-                               ColumnInfo info = new ColumnInfo();
-                               info.name = 
(String)resultSet.getObject("COLUMN_NAME");
-                               info.type = 
(Integer)resultSet.getObject("DATA_TYPE"); // java.sql.Types
-                               columnList.add(info);
-                       }
-               }
-               
-               return columnList;
-       }
-       
-       private String[] getColumnNames(List<ColumnInfo> columnList)
-       {
-               String columnNames[] = new String[columnList.size()];
-               for (int i = 0; i < columnList.size(); i++) {
-                       columnNames[i] = ((ColumnInfo)columnList.get(i)).name;
-               } 
-               return columnNames;
-       }
-       
-       private int storeMapDB(Gfsh gfsh, Map map, String tableName, 
-                       int storeType, String primaryColumn, 
-                       boolean isKeyPrimary, List<ColumnInfo> columnList, 
boolean isQuery) throws DBUtilException
-       {
-               int count = 0;
-               try {
-                       
-                       // Collect all matching field names from the region 
object
-                       Set<Map.Entry> entrySet = map.entrySet();
-                       
-                       Map<String, Method> keyGettersMap = new HashMap(0);
-                       Map<String, Method> valueGettersMap = new HashMap(0);
-                       int columnCount = 0; 
-                       String keyKeys[] = new String[0];
-                       String valueKeys[] = new String[0];
-                       for (Map.Entry entry : entrySet) {
-                               Object key = entry.getKey();
-                               Object value = entry.getValue();
-                               switch (storeType) {
-                               case TYPE_KEYS:
-                                       keyGettersMap = 
ReflectionUtil.getAllGettersMap(key.getClass());
-                                       keyGettersMap = 
getGettersMap(keyGettersMap, columnList);
-                                       columnCount = keyGettersMap.size(); 
-                                       if (isQuery) {
-                                               keyKeys = 
getColumnNames(columnList);
-                                       } else { 
-                                               keyKeys = 
keyGettersMap.keySet().toArray(new String[0]);
-                                       }
-                                       
-                                       break;
-                               case TYPE_VALUES:
-                                       valueGettersMap = 
ReflectionUtil.getAllGettersMap(value.getClass());
-                                       valueGettersMap = 
getGettersMap(valueGettersMap, columnList);
-                                       columnCount = valueGettersMap.size();
-                                       if (isQuery) {
-                                               valueKeys = 
getColumnNames(columnList);
-                                       } else { 
-                                               valueKeys = 
valueGettersMap.keySet().toArray(new String[0]);
-                                       }
-                                       break;
-                               case TYPE_KEYS_VALUES:
-                                       keyGettersMap = 
ReflectionUtil.getAllGettersMap(key.getClass());
-                                       keyGettersMap = 
getGettersMap(keyGettersMap, columnList);
-                                       valueGettersMap = 
ReflectionUtil.getAllGettersMap(value.getClass());
-                                       valueGettersMap = 
getGettersMap(valueGettersMap, columnList);
-                                       columnCount = keyGettersMap.size() + 
valueGettersMap.size(); 
-                                       
-                                       if (isQuery) {
-                                               keyKeys = 
getColumnNames(columnList);
-                                               valueKeys = 
getColumnNames(columnList);
-                                       } else {
-                                               keyKeys = 
keyGettersMap.keySet().toArray(new String[0]);
-                                               valueKeys = 
valueGettersMap.keySet().toArray(new String[0]);
-                                       }
-                               default:
-                                       break;
-                               }
-                               
-                               Set<String> keySet = valueGettersMap.keySet();
-                               // take care of case senstiveness
-                               if (primaryColumn != null) {
-                                       for (String keyStr : keySet) {
-                                               if 
(primaryColumn.equalsIgnoreCase(keyStr)) {
-                                                       primaryColumn = keyStr;
-                                                       break;
-                                               }
-                                       }
-                               }
-                               
-                               // Remove all duplicate entries from 
keyGettersMap
-                               // keep only primary key (column)
-                               for (String keyStr : keySet) {
-                                       if (isKeyPrimary == false || 
primaryColumn == null || primaryColumn.equalsIgnoreCase(keyStr) == false) {
-                                               keyGettersMap.remove(keyStr);
-                                       }
-                               }
-                               break;
-                       }
-                       
-                       try {
-                               
-                               String insertQuery = createInsertQuery(keyKeys, 
valueKeys, tableName);
-                               String updateQuery = createUpdateQuery(keyKeys, 
valueKeys, tableName, primaryColumn, isKeyPrimary);
-                               if (gfsh.isDebug()) {
-                                       System.out.println("insert: " + 
insertQuery);
-                                       System.out.println("update: " + 
updateQuery);
-                               }
-
-                               // tries insert followed by update (upsert)
-                               for (Map.Entry entry : entrySet) {
-                                       Object key = entry.getKey();
-                                       Object value = entry.getValue();
-                                       
-                                       // try insert first. if it fails then 
do update
-                               PreparedStatement statement;
-                               if (insertQuery != null) {
-                                       try {
-                                               statement = 
createInsertPreparedStatement(keyGettersMap, valueGettersMap, keyKeys, 
valueKeys, key, value, insertQuery);
-                                               statement.executeUpdate();
-                                       } catch (SQLException ex) {
-                                               
-                                               // try update
-                                               if (updateQuery != null) {
-                                                       statement = 
createUpdatePreparedStatement(keyGettersMap, valueGettersMap, keyKeys, 
valueKeys, key, value, updateQuery, primaryColumn, isKeyPrimary);
-                                                       
statement.executeUpdate();
-                                               }
-
-                                       }
-                               } else {
-                                       statement = 
createUpdatePreparedStatement(keyGettersMap, valueGettersMap, keyKeys, 
valueKeys, key, value, updateQuery, primaryColumn, isKeyPrimary);
-                                       statement.executeUpdate();
-                               }
-                               
-                               count++;
-                               }
-               } catch (SQLException ex) {
-                       throw new DBUtilException(ex);
-               }
-               
-               } catch (Exception ex) {
-                       throw new DBUtilException(ex);
-               }
-               return count;
-       }
-       
-       public int storeDB(Gfsh gfsh, String oql, String tableName, 
-                       int storeType, String primaryColumn, 
-                       boolean isKeyPrimary, int batchSize) throws 
DBUtilException
-       {
-               String lowercase = tableName.toLowerCase();
-               boolean isQuery = lowercase.startsWith("insert ") || 
lowercase.startsWith("update ");
-               int count = 0;
-               int actualSize;
-               String insertQuery = null;
-               String updateQuery = null;
-               int columnCount = 0; 
-               Map<String, Method> valueGettersMap = null;
-               String valueKeys[] = null;
-               try {
-                       
-                       List<ColumnInfo>columnList = 
getColumnInfoList(tableName);
-                       
-                       // Use command client to fetch data from the server
-                       do {
-                               CommandResults cr = 
gfsh.getCommandClient().execute(new QueryTask(oql, batchSize, true));
-                               if (cr.getCode() == QueryTask.ERROR_QUERY) {
-                                       gfsh.println(cr.getCodeMessage());
-                                       return -1;
-                               }
-                               QueryResults results = (QueryResults) 
cr.getDataObject();
-                               if (results == null || results.getResults() == 
null) {
-                                       return count;
-                               }
-                               
-                               if (results.getResults() instanceof Map) {
-                                       
-                                       // Map
-                                       
-                                       Map map = (Map)results.getResults();
-                                       count += storeMapDB(gfsh, map, 
tableName, storeType, primaryColumn, isKeyPrimary, columnList, isQuery);
-                                       
-                               } else {
-
-                                       // SelectResults
-                                       
-                                       SelectResults sr = 
(SelectResults)results.getResults();
-                                       CollectionType type = 
sr.getCollectionType();
-                                       ObjectType elementType = 
type.getElementType();
-                                       List srList = sr.asList();
-                                       Object element = null;
-                                       StructType structType = null;
-                                       Struct struct = null;
-                                       
-                                       // Create insert prepared query strings
-                                       if (insertQuery == null && 
srList.size() > 0) {
-                                               element = srList.get(0);
-                                               
-                                               if (elementType.isStructType()) 
{
-                                                       // struct
-                                                       structType = 
(StructType) elementType;
-                                                       insertQuery = 
createInsertQuery(structType.getFieldNames(), tableName);
-                                                       updateQuery = 
createUpdateQuery(structType.getFieldNames(), tableName, primaryColumn);
-                                               } else {
-                                                       // object
-                                                       valueGettersMap = new 
HashMap(0);
-                                                       valueGettersMap = 
ReflectionUtil.getAllGettersMap(element.getClass());
-                                                       valueGettersMap = 
getGettersMap(valueGettersMap, columnList);
-                                                       columnCount = 
valueGettersMap.size();
-                                                       
-                                                       if (isQuery) {
-                                                               valueKeys = 
getColumnNames(columnList);
-                                                       } else {
-                                                               valueKeys = 
valueGettersMap.keySet().toArray(new String[0]);
-                                                       }
-                                                       
-                                                       insertQuery = 
createInsertQuery(valueKeys, tableName);
-                                                       updateQuery = 
createUpdateQuery(valueKeys, tableName, primaryColumn);
-                                               }
-                                               
-                                               if (gfsh.isDebug()) {
-                                                       
System.out.println("insert: " + insertQuery);
-                                                       
System.out.println("update: " + updateQuery);
-                                               }
-                                       }
-                                               
-                                       // Upsert
-                                       for (int i = 0; i < srList.size(); i++) 
{
-                                               element = srList.get(i);
-       
-                                               if (elementType.isStructType()) 
{
-                                                       
-                                                       structType = 
(StructType) elementType;
-                                                       struct = (Struct) 
element;
-                                                       PreparedStatement 
statement = createInsertPreparedStatement(struct, insertQuery);
-//                                                     
System.out.println(statement.toString());
-                                                       
-                                                       try {
-                                                       
statement.executeUpdate();
-                                               } catch (SQLException ex) {
-                                                       
-                                                       // try update
-                                                       statement = 
createUpdatePreparedStatement(struct, updateQuery, primaryColumn);
-                                                       
statement.executeUpdate();
-//                                                     
System.out.println(statement.toString());
-                                               }
-       
-                                               } else {
-       
-                                                       PreparedStatement 
statement;
-                                                       if (insertQuery != 
null) {
-                                                               try {
-                                                                       
statement = createInsertPreparedStatement(valueGettersMap, valueKeys, element, 
insertQuery);
-                                                               
statement.executeUpdate();
-                                                       } catch (SQLException 
ex) {
-                                                               
-                                                               // try update
-                                                               if (updateQuery 
!= null) {
-                                                                       
statement = createUpdatePreparedStatement(valueGettersMap, valueKeys, element, 
updateQuery, primaryColumn);
-                                                                       
statement.executeUpdate();
-                                                               }
-                                                       }
-                                                       } else {
-                                                               statement = 
createUpdatePreparedStatement(valueGettersMap, valueKeys, element, updateQuery, 
primaryColumn);
-                                                               
System.out.println(statement.toString());
-                                                       
statement.executeUpdate();
-                                                       }
-                                               }
-                                       }
-                                       
-                                       count += sr.size();
-                               }
-                               actualSize = results.getActualSize();
-                               oql = null;
-                       } while (count < actualSize);
-                       
-               } catch (Exception ex) {
-                       throw new DBUtilException(ex);
-               }
-               return count;
-       }
-       
-       private PreparedStatement createUpdatePreparedStatement(
-                       Struct struct,
-                       String query,
-                       String primaryColumn) throws SQLException, 
InvocationTargetException, IllegalAccessException
-       {
-               Object primaryObj = null;
-               PreparedStatement statement = conn.prepareStatement(query);
-               String fieldNames[] = struct.getStructType().getFieldNames();
-               Object fieldValues[] = struct.getFieldValues();
-               int i;
-       for (i = 0; i < fieldValues.length; i++) {
-               statement.setObject(i+1, fieldValues[i]);
-               Object obj = fieldValues[i];
-               if (primaryColumn != null && 
primaryColumn.equals(fieldNames[i])) {
-                       primaryObj = obj;
-               } else {
-                       statement.setObject(i+1, obj);
-               }
-       }
-       
-       if (primaryObj != null) {
-               statement.setObject(i+1, primaryObj);
-       }
-       
-       return statement;
-       }
-       
-       private PreparedStatement createInsertPreparedStatement(Struct struct, 
String query) 
-                               throws SQLException, InvocationTargetException, 
IllegalAccessException
-       {
-               PreparedStatement statement = conn.prepareStatement(query);
-               Object fieldValues[] = struct.getFieldValues();
-       for (int i = 0; i < fieldValues.length; i++) {
-               statement.setObject(i+1, fieldValues[i]);
-               }
-       return statement;
-       }
-       
-       
-       private PreparedStatement createUpdatePreparedStatement( 
-                       Map<String, Method> valueGettersMap, 
-                       String valueKeys[],
-                       Object value,
-                       String query,
-                       String primaryColumn) throws SQLException, 
InvocationTargetException, IllegalAccessException
-       {
-               return createUpdatePreparedStatement(null, valueGettersMap, 
null, valueKeys, null, value, query, primaryColumn, false);
-       }
-       
-       private PreparedStatement createInsertPreparedStatement(
-                       Map<String, Method> valueGettersMap, 
-                       String valueKeys[],
-                       Object value,
-                       String query) throws SQLException, 
InvocationTargetException, IllegalAccessException
-       {
-               return createInsertPreparedStatement(null, valueGettersMap, 
null, valueKeys, null, value, query);
-       }
-       
-       private PreparedStatement createUpdatePreparedStatement(Map<String, 
Method> keyGettersMap, 
-                       Map<String, Method> valueGettersMap, 
-                       String keyKeys[], 
-                       String valueKeys[],
-                       Object key,
-                       Object value,
-                       String query,
-                       String primaryColumn,
-                       boolean isKeyPrimary) throws SQLException, 
InvocationTargetException, IllegalAccessException
-       {
-               Object primaryObj = null;
-               PreparedStatement statement = conn.prepareStatement(query);
-               int index = 1;
-               if (keyKeys != null) {
-               for (int i = 0; i < keyKeys.length; i++) {
-                       Method method = keyGettersMap.get(keyKeys[i]);
-                       Object obj = method.invoke(key, (Object[])null);
-                       if (primaryColumn != null && isKeyPrimary==false && 
primaryColumn.equals(keyKeys[i])) {
-                               primaryObj = obj;
-                       } else {
-                               statement.setObject(index++, obj);
-                       }
-                       }
-               }
-               
-               if (valueKeys != null) {
-               for (int i = 0; i < valueKeys.length; i++) {
-                       Method method = valueGettersMap.get(valueKeys[i]);
-                       Object obj = method.invoke(value, (Object[])null);
-                       if (primaryColumn != null && isKeyPrimary == false && 
primaryColumn.equals(valueKeys[i])) {
-                               primaryObj = obj;
-                       } else {
-                               statement.setObject(index++, obj);
-                       }
-                       }
-               }
-       
-       if (primaryObj != null) {
-               statement.setObject(index, primaryObj);
-       }
-       
-       return statement;
-       }
-       
-       private PreparedStatement createInsertPreparedStatement(Map<String, 
Method> keyGettersMap, 
-                       Map<String, Method> valueGettersMap, 
-                       String keyKeys[], 
-                       String valueKeys[],
-                       Object key,
-                       Object value,
-                       String query) throws SQLException, 
InvocationTargetException, IllegalAccessException
-       {
-               PreparedStatement statement = conn.prepareStatement(query);
-               if (keyKeys!= null) {
-               for (int i = 0; i < keyKeys.length; i++) {
-                       Method method = keyGettersMap.get(keyKeys[i]);
-                       Object obj = method.invoke(key, (Object[])null);
-                       statement.setObject(i+1, obj);
-                       }
-               }
-               if (valueKeys != null) {
-               for (int i = 0; i < valueKeys.length; i++) {
-                       Method method = valueGettersMap.get(valueKeys[i]);
-                       Object obj = method.invoke(value, (Object[])null);
-                       statement.setObject(i+1, obj);
-                       }
-               }
-       
-       return statement;
-       }
-       
-       private String createUpdateQuery(String fieldNames[],
-                       String tableName, 
-                       String primaryColumn)
-       {
-               String query = null;
-               String lowercase = tableName.trim().toLowerCase();
-               if (lowercase.startsWith("insert ")) {
-                       // insert not honored for update operation
-                       query = null;
-               } else if (lowercase.startsWith("update ")) {
-                       // use the passed in update statement
-                       query = tableName;
-               } else {
-                       
-                       // build update
-                       query = "UPDATE " + tableName + " SET ";
-                       for (int i = 0; i < fieldNames.length; i++) {
-                               if (primaryColumn != null && 
primaryColumn.equals(fieldNames[i])) {
-                                       // skip
-                               } else {
-                                       query += fieldNames[i] + "=?,";
-                               }
-                       }
-               
-                       int index = query.lastIndexOf(",");
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       if (primaryColumn != null) {
-                               query += " WHERE " + primaryColumn + "=?";
-                       }
-               }
-               
-               return query;
-       }
-       
-       private String createInsertQuery(String fieldNames[], String tableName)
-       {
-               
-               String lowercase = tableName.trim().toLowerCase();
-               String query = null;
-               
-               if (lowercase.startsWith("insert ")) {
-                       // use the passed in insert statement
-                       query = tableName;
-               } else if (lowercase.startsWith("update ")) {
-                       // update not honored for insert operation
-                       query = null;
-               } else {
-
-                       // build insert
-                       query = "INSERT INTO " + tableName + " (";
-                       for (int i = 0; i < fieldNames.length; i++) {
-                               query += fieldNames[i] + ",";
-                       }
-                       int index = query.lastIndexOf(',');
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       int columnCount = fieldNames.length;  
-                       query += ") VALUES (";
-                       for (int i = 0; i < columnCount; i++) {
-                               query += "?,";
-                       }
-                       index = query.lastIndexOf(',');
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       query += ")";
-               }
-               
-               return query;
-       }
-       
-       private String createUpdateQuery(String keyKeys[], String valueKeys[], 
-                       String tableName, 
-                       String primaryColumn,
-                       boolean isKeyPrimary)
-       {
-               String query = null;
-               String lowercase = tableName.trim().toLowerCase();
-               if (lowercase.startsWith("insert ")) {
-                       // insert not honored for update operation
-                       query = null;
-               } else if (lowercase.startsWith("update ")) {
-                       // use the passed in update statement
-                       query = tableName;
-               } else {
-                       
-                       // build update
-                       query = "UPDATE " + tableName + " SET ";
-                       for (int i = 0; i < keyKeys.length; i++) {
-                               if (primaryColumn != null && isKeyPrimary && 
primaryColumn.equals(keyKeys[i])) {
-                                       // skip
-                               } else {
-                                       query += keyKeys[i] + "=?,";
-                               }
-                       }
-                       for (int i = 0; i < valueKeys.length; i++) {
-                               if (primaryColumn != null && isKeyPrimary == 
false && primaryColumn.equals(valueKeys[i])) {
-                                       // skip
-                               } else {
-                                       query += valueKeys[i] + "=?,";
-                               }
-                       }
-                       int index = query.lastIndexOf(",");
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       if (primaryColumn != null) {
-                               query += " WHERE " + primaryColumn + "=?";
-                       }
-               }
-               
-               return query;
-       }
-       
-       private String createInsertQuery(String keyKeys[], String valueKeys[], 
String tableName)
-       {
-               String lowercase = tableName.trim().toLowerCase();
-               String query = null;
-               
-               if (lowercase.startsWith("insert ")) {
-                       // use the passed in insert statement
-                       query = tableName;
-               } else if (lowercase.startsWith("update ")) {
-                       // update not honored for insert operation
-                       query = null;
-               } else {
-               
-                       // build insert
-                       int columnCount = 0;
-                       query = "INSERT INTO " + tableName + " (";
-                       if (keyKeys != null) {
-                               for (int i = 0; i < keyKeys.length; i++) {
-                                       query += keyKeys[i] + ",";
-                               }
-                               columnCount += keyKeys.length;
-                       }
-                       if (valueKeys != null) {
-                               for (int i = 0; i < valueKeys.length; i++) {
-                                       query += valueKeys[i] + ",";
-                               }
-                               columnCount += valueKeys.length;
-                       }
-                       int index = query.lastIndexOf(',');
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       
-                       query += ") VALUES (";
-                       for (int i = 0; i < columnCount; i++) {
-                               query += "?,";
-                       }
-                       index = query.lastIndexOf(',');
-                       if (index != -1) {
-                               query = query.substring(0, index);
-                       }
-                       query += ")";
-               }
-               
-               return query;
-       }
-       
-       private Map getGettersMap(Map<String, Method> gettersMap, 
List<ColumnInfo> columnList)
-       {
-               HashMap map = new HashMap();
-               Set<String> keySet = gettersMap.keySet();
-               for (int i = 0; i < columnList.size(); i++) {
-                       ColumnInfo info = columnList.get(i);
-                       Method getterMethod  = gettersMap.get("get" + 
info.name);
-                       if (getterMethod == null) {
-                               for (String key : keySet) {
-                                       if 
(key.substring(3).equalsIgnoreCase(info.name)) {
-                                               getterMethod = 
gettersMap.get(key);
-                                               break;
-                                       }
-                               }
-                       }
-                       if (getterMethod != null) {
-                               map.put(info.name, getterMethod);
-                       }
-               }
-               return map;
-       }
-       
-       private Object updateObject(Gfsh gfsh, Class clazz, 
-                       Map<String, Method> settersMap, Map<String, Method> 
realMap,
-                       ResultSet resultSet,
-                       String primaryColumn) throws Exception
-       {
-               
-               // If primaryColumn is set then set the mapping method only
-               
-               if (primaryColumn != null) {
-                       
-                       // Set the primary column value only
-                       Object obj = resultSet.getObject(primaryColumn);
-                       if (clazz == null ||
-                               clazz == byte.class || clazz == Byte.class ||
-                               clazz == char.class || clazz == Character.class 
||
-                               clazz == short.class || clazz == Short.class ||
-                               clazz == int.class || clazz == Integer.class ||
-                               clazz == long.class || clazz == Long.class ||
-                               clazz == float.class || clazz == Float.class ||
-                               clazz == double.class || clazz == Double.class 
||
-                               clazz == Date.class || clazz == String.class)
-                       {
-                               return obj;
-                       }
-                       
-                       Object value = clazz.newInstance();             
-               Method setterMethod  = realMap.get(primaryColumn);
-                       if (setterMethod == null) {
-                               setterMethod = settersMap.get("set" + 
primaryColumn);
-                               if (setterMethod == null) {
-                                       Set<Entry<String, Method>> entrySet = 
settersMap.entrySet(); //FindBugs - entrySet efficient over keyset
-                                       for (Entry<String, Method> entry : 
entrySet) {
-                                         String key  = entry.getKey();
-            if (key.substring(3).equalsIgnoreCase(primaryColumn)) {
-            setterMethod = entry.getValue();
-            realMap.put(primaryColumn, settersMap.get(key));
-            }
-          }
-                               }
-                       }
-                       setterMethod.invoke(value, obj);
-               return value;
-               }
-               
-               // Set the entire object
-               
-               if (clazz == null ||
-                       clazz == byte.class || clazz == Byte.class ||
-                       clazz == char.class || clazz == Character.class ||
-                       clazz == short.class || clazz == Short.class ||
-                       clazz == int.class || clazz == Integer.class ||
-                       clazz == long.class || clazz == Long.class ||
-                       clazz == float.class || clazz == Float.class ||
-                       clazz == double.class || clazz == Double.class ||
-                       clazz == Date.class || clazz == String.class)
-               {
-                       
-                       return resultSet.getObject(1);
-                       
-               } else {
-                       
-                       Object value = clazz.newInstance();
-               ResultSetMetaData meta = resultSet.getMetaData();
-               for (int i = 1; i <= meta.getColumnCount(); i++) {
-                       String columnName = meta.getColumnName(i);
-                       Method setterMethod  = realMap.get(columnName);
-                       if (setterMethod == null) {
-                               setterMethod = settersMap.get("set" + 
columnName);
-                               if (setterMethod == null) {
-                                       Set<String> keySet = 
settersMap.keySet();
-                                       for (String key : keySet) {
-                                                       if 
(key.substring(3).equalsIgnoreCase(columnName)) {
-                                                               setterMethod = 
settersMap.get(key);
-                                                               
realMap.put(columnName, settersMap.get(key));
-                                                       }
-                                               }
-                               }
-                       }
-                       if (setterMethod == null) {
-//                                             throw new 
DBUtilException(DBUtilException.ERROR_NO_MATCHING_METHOD_FOR_COLUMN, "Undefined 
method for the column " + columnName);
-                               continue;
-                       }
-                       
-                       Object obj = resultSet.getObject(i);
-                       setterMethod.invoke(value, obj);
-               }
-               return value;
-               }
-
-       }
-       //FindBugs - make static inner class
-       static class ColumnInfo
-       {
-               String name;
-               int type;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtilException.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtilException.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtilException.java
deleted file mode 100644
index 45c1c6a..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/DBUtilException.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*=========================================================================
- * Copyright (c) 2008, Pivotal Software, Inc. All Rights Reserved.
- * This product is protected by U.S. and international copyright
- * and intellectual property laws. Pivotal products are covered by
- * more patents listed at http://www.pivotal.io/patents.
- *========================================================================
- */
-package com.gemstone.gemfire.internal.tools.gfsh.app.util;
-
-/**
- * DBUtilException is thrown by DBUtil when it encounters DB errors.
- * 
- * @author dpark
- *
- */
-public class DBUtilException extends Exception
-{
-       private static final long serialVersionUID = 1L;
-       
-       public static final int ERROR_CONNECTION_CLOSED = 1;
-    public static final int ERROR_CONNECTION_ALREADY_ESTABLISHED = 2;
-    public static final int ERROR_NO_MATCHING_METHOD_FOR_COLUMN = 3;
-    public static final int ERROR_UNDEFINED = -1;
-
-    private int errorCode = ERROR_UNDEFINED;
-
-    public DBUtilException()
-    {
-    }
-
-    public DBUtilException(int errorCode, String message)
-    {
-        super(message);
-        this.errorCode = errorCode;
-    }
-
-    public DBUtilException(String message, Throwable cause)
-    {
-        super(cause.getClass() + ": " + cause.getMessage() + ". " + message);
-        initCause(cause);
-    }
-
-    public DBUtilException(Throwable cause)
-    {
-        super(cause.getClass() + ": " + cause.getMessage() + ".");
-        initCause(cause);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/GfshResultsBag.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/GfshResultsBag.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/GfshResultsBag.java
deleted file mode 100644
index 7f88de7..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/GfshResultsBag.java
+++ /dev/null
@@ -1,600 +0,0 @@
-package com.gemstone.gemfire.internal.tools.gfsh.app.util;
-
-import it.unimi.dsi.fastutil.objects.Object2IntMap;
-import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ObjectIterator;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.AbstractCollection;
-import java.util.AbstractSet;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import com.gemstone.gemfire.DataSerializable;
-import com.gemstone.gemfire.DataSerializer;
-import com.gemstone.gemfire.cache.query.SelectResults;
-import com.gemstone.gemfire.cache.query.internal.ResultsCollectionWrapper;
-import com.gemstone.gemfire.cache.query.internal.types.CollectionTypeImpl;
-import com.gemstone.gemfire.cache.query.types.CollectionType;
-import com.gemstone.gemfire.cache.query.types.ObjectType;
-
-// @todo probably should assert element type when elements added
-// @todo support generics when no longer support Java 1.4
-/**
- * Implementation of SelectResults that allows duplicates and
- * extends HashMap. The keys store the elements of the collection and the
- * the values store the number of occurrances as an int.
- * If the elements are Structs, then use a StructBag instead.
- *
- * @author Eric Zoerner
- * @since 5.1
- */
-public class GfshResultsBag extends AbstractCollection implements 
SelectResults, DataSerializable {
-  protected ObjectType elementType;
-  protected Object2IntOpenHashMap map;
-  protected int size = 0;
-  /** adds support for null elements, since a TObjectIntHashMap does not
-      support null elements
-   */
-  protected int numNulls = 0;
-  //Asif: These fields are used for limiting the results based on the limit 
-  //clause in the query 
-  private int limit = -1;
-  boolean hasLimitIterator = false;
-  final Object limitLock = new Object();
-
-  public GfshResultsBag() {
-    this.map = new Object2IntOpenHashMap();
-  }
-
-  public void setElementType(ObjectType elementType) {
-    this.elementType = elementType;
-  }
-    
-  // @todo Currently does an iteration, could make this more efficient
-  // by providing a ListView
-  /**
-   * Returns this bag as a list.
-   */
-  public List asList() {
-    return new ArrayList(this);
-  }
-  
-  /**
-   * Return an unmodifiable Set view of this bag.
-   * Does not require an iteration by using a lightweight wrapper.
-   */
-  public Set asSet() {
-    return new SetView();
-  }
-  
-  public CollectionType getCollectionType() {
-    return new CollectionTypeImpl(Collection.class, this.elementType);
-  }
-  
-  public boolean isModifiable() {
-    return true;
-  }
-    
-  public int occurrences(Object element) {
-    if (this.hasLimitIterator) {
-      // Asif: If limit iterator then occurence should be calculated
-      // via the limit iterator
-      int count = 0;
-      boolean encounteredObject = false;
-      for (Iterator itr = this.iterator()/* this.base.iterator() */; itr
-          .hasNext();) {
-        Object v = itr.next();
-        if (element == null ? v == null : element.equals(v)) {
-          count++;
-          encounteredObject = true;
-        }
-        else if (encounteredObject) {
-          // Asif: No possibility of its occurence again
-          break;
-        }
-      }
-      return count;
-    }
-    else {
-      if (element == null) {
-        return this.numNulls;
-      }
-      return this.map.getInt(element); // returns 0 if not found
-    }
-  }
-  
-  /**
-   * Return an iterator over the elements in this collection. Duplicates will
-   * show up the number of times it has occurrances.
-   */
-  @Override
-  public Iterator iterator() {
-    if (this.hasLimitIterator) {
-      // Asif: Return a new LimitIterator in the block so that
-      // the current Limit does not get changed by a remove
-      // operation of another thread. The current limit is
-      // set in the limit iterator. So the setting of the current limit
-      // & creation of iterator should be atomic .If any subsequent
-      // modifcation in limit occurs, the iterator will itself fail.
-      // Similarly a remove called by a iterator should decrease the
-      // current limit and underlying itr.remove atomically
-      synchronized (this.limitLock) {
-        return new LimitResultsBagIterator();
-      }
-    }
-    else {
-      return new ResultsBagIterator();
-    }
-  }
-
-  @Override
-  public boolean contains(Object element) {
-    if (this.hasLimitIterator) {
-      return super.contains(element);
-    }
-    else {
-      if (element == null) {
-        return this.numNulls > 0;
-      }
-      return this.map.containsKey(element);
-    }
-  }
-  
-  // not thread safe!
-  @Override
-  public boolean add(Object element) {
-    if( this.limit > -1) {
-      throw new UnsupportedOperationException("Addition to the SelectResults 
not allowed as the query result is constrained by LIMIT");
-    }
-    if (element == null) {
-      numNulls++;
-    }
-    else {
-    int count = this.map.getInt(element); // 0 if not found
-      this.map.put(element, count + 1);
-    }
-    this.size++;
-    assert this.size >= 0 : this.size;
-    return true;
-  }
-  
-  // Internal usage method
-  // Asif :In case of StructBag , we will ensure that it
-  // gets an Object [] indicating field values as parameter
-  // from the CompiledSelect
-  public int addAndGetOccurence(Object element) {
-    int occurence;
-    if (element == null) {
-      numNulls++;
-      occurence = numNulls;
-    }
-    else {
-      occurence = this.map.getInt(element); // 0 if not found
-      this.map.put(element, ++occurence);
-    }
-    this.size++;
-    assert this.size >= 0: this.size;
-    return occurence;
-  }
-  
-  @Override
-  public int size() {
-    if (this.hasLimitIterator) {
-      synchronized (this.limitLock) {
-        return this.limit;
-      }
-    } else {
-      return this.size; 
-    }
-  }    
-  
-  // not thread safe!
-  @Override
-  public boolean remove(Object element) {
-    if(this.hasLimitIterator) {
-      return super.remove(element);
-    }else {
-    if (element == null) {
-      if (this.numNulls > 0) {
-        this.numNulls--;
-        this.size--;
-        assert this.size >= 0 : this.size;
-        return true;
-      }
-      else {
-        return false;
-      }
-    }      
-    int count = this.map.getInt(element); // 0 if not found
-    if (count == 0) {
-      return false;
-    }
-    if (count == 1) {
-      this.map.remove(element);
-    }
-    else {
-      this.map.put(element, --count);
-    }
-    this.size--;
-    assert this.size >= 0 : this.size;
-    return true;
-    }
-  }
-    
-  // not thread safe!
-  @Override
-  public void clear() {
-    this.map.clear();
-    this.numNulls = 0;
-    this.size = 0;
-    if (this.hasLimitIterator) {
-      synchronized (this.limitLock) {
-        this.limit = 0;
-      }
-    }
-  }
-  
-  // not thread safe!
-  @Override
-  public boolean equals(Object o) {
-    if (!(o instanceof GfshResultsBag)) {
-      return false;
-    }
-    GfshResultsBag otherBag = (GfshResultsBag)o;
-    return this.size == otherBag.size
-      && this.elementType.equals(otherBag.elementType)
-      && this.map.equals(otherBag.map)
-      && this.numNulls == otherBag.numNulls;
-  }
-  
-  @Override // GemStoneAddition
-  public int hashCode() {
-    return this.map.hashCode();
-  }
-  public boolean addAll(Collection coll) {
-    if(this.limit > -1) {
-      throw new UnsupportedOperationException("Addition to the SelectResults 
not allowed as the query result is constrained by LIMIT");
-    }else {
-      return super.addAll(coll);
-    }
-  }
-  protected Object2IntOpenHashMap createMapForFromData() {
-    return new Object2IntOpenHashMap(this.size);
-  }
-
-  public void fromData(DataInput in) throws IOException, 
ClassNotFoundException {
-    this.elementType = (ObjectType)DataSerializer.readObject(in);
-    this.size = in.readInt();
-    assert this.size >= 0: this.size;
-    this.readNumNulls(in);
-    // Asif: The size will be including null so the Map should at max contain
-    // size - number of nulls
-    int numLeft = this.size - this.numNulls;
-
-    while (numLeft > 0) {
-      Object key = DataSerializer.readObject(in);
-      int occurence = in.readInt();
-      this.map.put(key, occurence);
-      numLeft -= occurence;
-    }
-  }
-//
-//  public int getDSFID() {
-//    return RESULTS_BAG;
-//  }
-
-  public void toData(DataOutput out) throws IOException {
-       DataSerializer.writeObject(this.elementType, out);
-    out.writeInt(this.size());
-    this.writeNumNulls(out);
-    // TODO:Asif: Should we actually pass the limit in serialization?
-    // For the time being not passing , assuming PR Has parsed
-    // it
-    // out.writeInt(this.limit);
-    int numLeft = this.size() - this.numNulls;
-    for (ObjectIterator<Object2IntMap.Entry<?>>  itr = 
this.map.object2IntEntrySet().fastIterator(); itr.hasNext()
-        && numLeft > 0;) {
-      Object2IntMap.Entry<?> entry = itr.next();
-      Object key = entry.getKey();
-      DataSerializer.writeObject(key, out);
-      int occurence = entry.getValue();
-      if (numLeft < occurence) {
-        occurence = numLeft;
-      }
-      out.writeInt(occurence);
-      numLeft -= occurence;
-    }
-  }
-  
-  /**
-   * 
-   * @param out
-   * @throws IOException
-   */
-  void writeNumNulls(DataOutput out) throws IOException {
-    out.writeInt(this.numNulls);
-  }
-  
-  /**
-   * 
-   * @param in
-   * @throws IOException
-   */
-  void readNumNulls(DataInput in) throws IOException {
-    this.numNulls = in.readInt();
-  }
-
-  /**
-   */
-  void createObject2IntHashMap() {
-    this.map = new Object2IntOpenHashMap(this.size - this.numNulls);
-  }
-
-  void applyLimit(int limit) {
-    this.limit = limit;
-    // Asif : From the code of TObjectIntHashMap, it appears that if no data is
-    // going to be added , then the rehash does not occur & default code
-    // of rehash does not appear to change the order of data . So we can assume
-    // that this iterator will be returning data in order.
-    // Limit Iterator is needed if the limit happens to be less than the size
-    if (this.limit > -1 && this.size > this.limit) {
-      this.hasLimitIterator = true;
-    }
-  }
- 
-  protected class ResultsBagIterator implements Iterator {
-    final ObjectIterator<Object2IntMap.Entry<?>> mapIterator = 
GfshResultsBag.this.map.object2IntEntrySet().fastIterator();
-    Object2IntMap.Entry<?> mapIteratorEntry;
-    Object current = null;
-    
-    /**
-     * duplicates are numbered from 1 to n;
-     * 0 = no current, otherwise goes from 1 to dupLimit,
-     * indicating the last dup that was emitted by next()
-     */
-    int currentDup = 0;
-    /**
-     * dupLimit is the total number of occurrences;
-     * start by emitting the nulls
-     */
-    int dupLimit = GfshResultsBag.this.numNulls;
-    
-    public boolean hasNext() {
-      return this.mapIterator.hasNext() || this.currentDup < this.dupLimit;
-    }
-    
-    public Object next() {
-      // see if there is another duplicate to emit
-      if (this.currentDup < this.dupLimit) {
-        this.currentDup++;
-        return this.current;
-      }
-      //otherwise, go to next object
-      this.mapIteratorEntry = this.mapIterator.next();
-      this.dupLimit = this.mapIteratorEntry.getValue();
-      this.currentDup = 1;
-      this.current = this.mapIteratorEntry.getKey();
-      return this.current;
-    }
-    
-    public void remove() {
-//      if (this.currentDup == 0) {
-//        // next has not yet been called
-//        throw new 
IllegalStateException(LocalizedStrings.ResultsBag_NEXT_MUST_BE_CALLED_BEFORE_REMOVE.toLocalizedString());
-//      }
-      
-      this.dupLimit--;
-      assert this.dupLimit >= 0 : this.dupLimit;
-      if (this.current == null) {
-         GfshResultsBag.this.numNulls = this.dupLimit;
-        assert GfshResultsBag.this.numNulls >= 0 : 
GfshResultsBag.this.numNulls;
-      }
-      else {
-        if (this.dupLimit > 0) {
-          this.mapIteratorEntry.setValue(this.dupLimit);
-        }
-        else {
-          this.mapIterator.remove();
-        }
-      }
-      GfshResultsBag.this.size--;
-      this.currentDup--;
-      assert GfshResultsBag.this.size >= 0 : GfshResultsBag.this.size;
-      assert this.currentDup >= 0 : this.currentDup;
-    }    
-  }
-  
-  /** package visibility so ResultsCollectionWrapper can reference
-   * it.
-   * This SetView is serialized as a special case by a
-   * ResultsCollectionWrapper.
-   * Keith: Refactored to add consideration for LIMIT, April 1, 2009
-   * @see ResultsCollectionWrapper#toData
-   */
-  class SetView extends AbstractSet {
-
-    private int localLimit;
-
-    SetView() {
-      localLimit = GfshResultsBag.this.limit;
-    }
-
-    public Iterator iterator() {
-      if (localLimit > -1) {
-        return new LimitSetViewIterator();
-      } else {
-        return new SetViewIterator();
-      }
-    }
-
-    @Override
-    public boolean add(Object o) {
-      if(contains(o)) {
-        return false;
-      }
-      return GfshResultsBag.this.add(o);
-    }
-
-    @Override
-    public void clear() {
-       GfshResultsBag.this.clear();
-    }
-    
-    @Override
-    public int size() {      
-      int calculatedSize = GfshResultsBag.this.map.size() +
-                           (GfshResultsBag.this.numNulls > 0 ? 1 : 0);
-      if (localLimit > -1) {
-        return Math.min(localLimit, calculatedSize);
-      }
-      return calculatedSize;
-    }
-    
-    @Override
-    public boolean contains(Object o) {
-      if (o == null) {
-        return GfshResultsBag.this.numNulls > 0;
-      }
-      return GfshResultsBag.this.map.containsKey(o);
-    }
-    
-    @Override
-    public boolean isEmpty() {
-      if(localLimit == 0) {
-        return true;
-      }
-      if (GfshResultsBag.this.numNulls > 0) {
-        return false;
-      }
-      return GfshResultsBag.this.map.isEmpty();
-    }
-
-    public class SetViewIterator implements Iterator {
-      /** need to emit a null value if true */
-      boolean emitNull = GfshResultsBag.this.numNulls > 0;
-      final ObjectIterator<Object2IntMap.Entry<?>> it = 
GfshResultsBag.this.map.object2IntEntrySet().fastIterator();
-      Object2IntMap.Entry<?> currEntry;
-      boolean currentIsNull = false;  
-
-      public Object next() {
-        if (this.emitNull) {
-          this.emitNull = false;
-          currentIsNull = true;
-          return null;
-        }
-        currEntry = it.next();
-        currentIsNull = false;
-        return currEntry.getKey();
-      }
-        
-      public boolean hasNext() {
-        if (this.emitNull) {
-          return true;
-        }
-        return it.hasNext();
-      }
-        
-      public void remove() {
-        if(currentIsNull) {
-          GfshResultsBag.this.numNulls = 0;
-        } else {
-          it.remove();
-        }
-      }
-    };
-
-    class LimitSetViewIterator extends SetViewIterator {
-      private int currPos = 0;
-      @Override
-      public Object next() {
-        if (this.currPos == GfshResultsBag.SetView.this.localLimit) {
-          throw new NoSuchElementException();
-        }
-        else {
-          Object next = super.next();
-          ++currPos;
-          return next;
-        }
-      }
-
-      @Override
-      public boolean hasNext() {
-        return (this.currPos < GfshResultsBag.SetView.this.localLimit)
-                && super.hasNext();
-      }
-
-      @Override
-      public void remove() {
-        if (this.currPos == 0) {
-          // next has not yet been called
-          throw new IllegalStateException("next() must be called before 
remove()");
-        }
-        synchronized (GfshResultsBag.this.limitLock) {
-          if(currentIsNull) {
-            GfshResultsBag.this.limit -= GfshResultsBag.this.numNulls;
-            GfshResultsBag.this.numNulls = 0;
-            GfshResultsBag.SetView.this.localLimit--;
-          } else {
-            Object key = currEntry.getKey();
-            int count = GfshResultsBag.this.map.removeInt(key);
-            assert count != 0 : "Attempted to remove an element that was not 
in the map.";
-            GfshResultsBag.this.limit -= count; 
-            GfshResultsBag.SetView.this.localLimit--;
-          }
-        }
-      }
-    }
-  }
-  
-  /**
-   * @author Asif
-   *
-   */
-  protected class LimitResultsBagIterator extends 
GfshResultsBag.ResultsBagIterator {
-    final private int localLimit;
-
-    private int currPos = 0;
-
-    /**
-     *guarded by GfshResultsBag2.this.limitLock object 
-     */
-    public LimitResultsBagIterator() {
-      localLimit = GfshResultsBag.this.limit;
-    }
-
-    public boolean hasNext() {
-      return this.currPos < this.localLimit;
-    }
-
-    public Object next() {
-      if (this.currPos == this.localLimit) {
-        throw new NoSuchElementException();
-      }
-      else {
-        Object next = super.next();
-        ++currPos;
-        return next;
-      }
-
-    }
-
-    public void remove() {
-      if (this.currPos == 0) {
-        // next has not yet been called
-        throw new IllegalStateException("next() must be called before 
remove()");
-      }
-      synchronized (GfshResultsBag.this.limitLock) {
-        super.remove();
-        --GfshResultsBag.this.limit;
-      }
-    }
-  }  
-  
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/ObjectUtil.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/ObjectUtil.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/ObjectUtil.java
deleted file mode 100644
index 1dd66de..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/ObjectUtil.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package com.gemstone.gemfire.internal.tools.gfsh.app.util;
-
-import java.lang.reflect.Method;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import com.gemstone.gemfire.internal.tools.gfsh.app.Gfsh;
-import com.gemstone.gemfire.internal.tools.gfsh.app.misc.util.ReflectionUtil;
-
-public class ObjectUtil
-{
-       public static Object updateObject(Gfsh gfsh, 
-                       Map<String, Method> setterMap, 
-                       Object obj, 
-                       String setterMethodName, 
-                       String value, 
-                       SimpleDateFormat dateFormat, boolean isCsvFormat) 
throws Exception
-       {
-               Method setterMethod = setterMap.get(setterMethodName);
-               if (setterMethod == null) {
-                       return obj;
-               }
-               
-               Class types[] = setterMethod.getParameterTypes();
-               Class arg = types[0];
-               if (arg == byte.class || arg == Byte.class) {
-                       setterMethod.invoke(obj, Byte.parseByte(value));
-               } else if (arg == char.class || arg == Character.class) {
-                       setterMethod.invoke(obj, value.charAt(0));
-               } else if (arg == short.class || arg == Short.class) {
-                       setterMethod.invoke(obj, Short.parseShort(value));
-               } else if (arg == int.class || arg == Integer.class) {
-                       setterMethod.invoke(obj, Integer.parseInt(value));
-               } else if (arg == long.class || arg == Long.class) {
-                       setterMethod.invoke(obj, Long.parseLong(value));
-               } else if (arg == float.class || arg == Float.class) {
-                       setterMethod.invoke(obj, Float.parseFloat(value));
-               } else if (arg == double.class || arg == Double.class) {
-                       setterMethod.invoke(obj, Double.parseDouble(value));
-               } else if (arg == Date.class) {
-                       Date date = dateFormat.parse(value);
-                       setterMethod.invoke(obj, date);
-               } else if (arg == String.class) {
-                       
-                       if (isCsvFormat) {
-                               // Replace double quotes with single quotes
-                               value = value.replaceAll("\"\"", "\"");
-                               
-                               // if begins with a quote then remove it
-                               if (value.startsWith("\"")) {
-                                       value = value.substring(1);
-                               }
-                               // if ends with a quote  then remove it
-                               if (value.endsWith("\"")) {
-                                       value = value.substring(0, 
value.length() - 1);
-                               }
-                       }
-                       setterMethod.invoke(obj, value);
-               } else {
-                       gfsh.println("Error: unsupported type: " + 
setterMethod.getName() + "(" + arg.getName() + ")");
-               }
-               return obj;
-       }
-       
-       public static Object getPrimitive(Gfsh gfsh, String value, boolean 
quoted) throws ParseException
-       {
-               if (quoted) {
-                       // string
-                       return value;
-               }
-               
-               
-               value = value.trim().toLowerCase();
-               if (value.length() == 0) {
-                       return null;
-               }
-               char firstChar = value.charAt(0);
-               if (!(firstChar == '.' || firstChar >= '0' && firstChar <= 
'9')) {
-                       // it's not number
-                       return null;
-               }
-               
-               Object obj = null;
-               if (value.endsWith("b")) {
-                       // byte
-                       obj = new Byte(value.substring(0, value.length() - 1));
-               } else if (value.endsWith("c")) {
-                       // char
-                       obj = value.charAt(0);
-               } else if (value.endsWith("s")) {
-                       // short
-                       obj = new Short(value.substring(0, value.length() - 1));
-               } else if (value.endsWith("i")) {
-                       // int
-                       obj = new Integer(value.substring(0, value.length() - 
1));
-               } else if (value.endsWith("l")) {
-                       // long
-                       obj = new Long(value.substring(0, value.length() - 1));
-               } else if (value.endsWith("f")) {
-                       // float
-                       obj = new Float(value.substring(0, value.length() - 1));
-               } else if (value.endsWith("d")) {
-                       // double
-                       obj = new Double(value.substring(0, value.length() - 
1));
-               } else if (value.startsWith("to_date")) {
-                       obj = gfsh.getDate(value);
-               } else {
-                       if (value.indexOf(".") != -1 || value.indexOf("e") != 
-1) {
-                               // use double by default
-                               obj = new Double(value);
-                       } else {
-                               // us int by default
-                               obj = new Integer(value);
-                       }
-               }
-               
-               return obj;
-       }
-       
-       public static Object updateObject(Gfsh gfsh, 
-                       Map<String, Method> setterMap, 
-                       Object obj, 
-                       String tableColumnName, 
-                       Object value) throws Exception
-       {
-               Method setterMethod = setterMap.get("set" + tableColumnName);
-               if (setterMethod == null) {
-                       // TODO: need to search the map. column names can be 
case insensitive 
-                       return obj;
-               }
-               setterMethod.invoke(obj, value);
-               
-               return obj;
-       }
-       
-       public static Object getPrintableObject(Object object)
-       {
-               if (object == null) {
-                       return "null";
-               }
-               if (object instanceof String || object.getClass().isPrimitive() 
|| 
-                               object.getClass() == Boolean.class ||
-                               object.getClass() == Byte.class ||
-                               object.getClass() == Character.class ||
-                               object.getClass() == Short.class ||
-                               object.getClass() == Integer.class ||
-                               object.getClass() == Long.class ||
-                               object.getClass() == Float.class ||
-                               object.getClass() == Double.class)
-               {
-                       return object.toString();
-                       
-               } else if (object instanceof Date) {
-                       
-                       return object.toString();
-                       
-               } else {
-                       return ReflectionUtil.toStringGettersAnd(object);
-               }
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/49d99d4e/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/OutputUtil.java
----------------------------------------------------------------------
diff --git 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/OutputUtil.java
 
b/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/OutputUtil.java
deleted file mode 100644
index 0f24d14..0000000
--- 
a/gemfire-core/src/main/java/com/gemstone/gemfire/internal/tools/gfsh/app/util/OutputUtil.java
+++ /dev/null
@@ -1,255 +0,0 @@
-package com.gemstone.gemfire.internal.tools.gfsh.app.util;
-
-import java.io.PrintWriter;
-import java.lang.reflect.Method;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import com.gemstone.gemfire.internal.tools.gfsh.app.misc.util.ReflectionUtil;
-
-public class OutputUtil
-{
-       public static final int TYPE_KEYS = 0;
-       public static final int TYPE_VALUES = 1;
-       public static final int TYPE_KEYS_VALUES = 2;
-       
-       public static final String TAG_COLUMN_SEPARATOR = "#|";
-       
-       public static final String TAG_KEY = "#%key";
-       public static final String TAG_DATE_FORMAT = "#%date_format";
-       public static final String TAG_VALUE = "#%value";
-       public static final String TAG_VALUE_KEY = "#%value_key";
-       
-       
-       public static void printEntries(PrintWriter writer, Map map, 
-                       String fieldTerminator, String rowTerminator, 
-                       int firstRow, int lastRow,
-                       int printType, boolean printHeader, 
-                       SimpleDateFormat dateFormat, String valueKeyFieldName)
-       {
-               if (map == null) {
-                       System.out.println("Error: map is null");
-                       return;
-               }
-               
-               // Get all getters
-               Set<Map.Entry> entrySet = map.entrySet();
-               Object key = null;
-               Object value = null;
-               Method keyGetters[] = null;
-               Method valueGetters[] = null;
-               for (Entry entry : entrySet) {
-                       key = entry.getKey();
-                       value = entry.getValue();
-                       keyGetters = 
ReflectionUtil.getAllGetters(key.getClass());
-                       if (value == null) {
-                               valueGetters = new Method[0];
-                       } else {
-                               valueGetters = 
ReflectionUtil.getAllGetters(value.getClass());
-                       }
-                       break;
-               }
-               
-               if (value == null) {
-                       System.out.println("Error: value is null");
-                       return;
-               }
-               
-               switch (printType) {
-               case TYPE_KEYS:
-                       // Print keys
-                       if (printHeader) {
-                               writer.print(TAG_KEY + " " + 
key.getClass().getName());
-                               writer.print(rowTerminator);
-                               writer.print(TAG_DATE_FORMAT + " " + 
dateFormat.toPattern());
-                               writer.print(rowTerminator);
-                               printHeader(writer, key, keyGetters, 
fieldTerminator, rowTerminator);
-                       }
-                       for (Entry entry : entrySet) {
-                               key = entry.getKey();
-                               printObject(writer, keyGetters, key, 
fieldTerminator, rowTerminator, dateFormat);
-                       }
-                       break;
-               case TYPE_VALUES:
-                       // Print values
-                       if (printHeader) {
-                               if (value != null) {
-                                       writer.print(TAG_VALUE + " " + 
value.getClass().getName());
-                               }
-                               writer.print(rowTerminator);
-                               writer.print(TAG_VALUE_KEY + " " + 
valueKeyFieldName);
-                               writer.print(rowTerminator);
-                               writer.print(TAG_DATE_FORMAT + " " + 
dateFormat.toPattern());
-                               writer.print(rowTerminator);
-                               printHeader(writer, value, valueGetters, 
fieldTerminator, rowTerminator);
-                       }
-                       for (Entry entry : entrySet) {
-                               value = entry.getValue();
-                               printObject(writer, valueGetters, value, 
fieldTerminator, rowTerminator, dateFormat);
-                       }
-                       break;
-               case TYPE_KEYS_VALUES:
-               default:
-                       // Print keys and values
-                       if (printHeader) {
-                               writer.print(TAG_KEY + " " + 
key.getClass().getName());
-                               writer.print(rowTerminator);
-                               if (value != null) {
-                                       writer.print(TAG_VALUE + " " + 
value.getClass().getName());
-                               }
-                               writer.print(rowTerminator);
-                               writer.print(TAG_DATE_FORMAT + " " + 
dateFormat.toPattern());
-                               writer.print(rowTerminator);
-                               printHeader(writer, key, keyGetters, 
fieldTerminator);
-                               writer.print(",");
-                               printHeader(writer, value, valueGetters, 
fieldTerminator, rowTerminator);
-                       }
-                       for (Entry entry : entrySet) {
-                               key = entry.getKey();
-                               value = entry.getValue();
-                               printObject(writer, keyGetters, key, 
fieldTerminator, dateFormat);
-                               writer.print(",");
-                               printObject(writer, valueGetters, value, 
fieldTerminator, dateFormat);
-                               writer.print(rowTerminator);
-                       }
-                       break;
-               
-               }
-       }
-       
-       private static void printHeader(PrintWriter writer, Object object, 
Method methods[], 
-                       String fieldTerminator, String rowTerminator)
-       {
-               printHeader(writer, object, methods, fieldTerminator);
-               writer.print(rowTerminator);
-       }
-       
-       private static void printHeader(PrintWriter writer, Object object, 
Method methods[], 
-                       String fieldTerminator)
-       {
-               writer.print(TAG_COLUMN_SEPARATOR);
-
-               if (object == null || object instanceof String || 
object.getClass().isPrimitive() || 
-                               object.getClass() == Boolean.class ||
-                               object.getClass() == Byte.class ||
-                               object.getClass() == Character.class ||
-                               object.getClass() == Short.class ||
-                               object.getClass() == Integer.class ||
-                               object.getClass() == Long.class ||
-                               object.getClass() == Float.class ||
-                               object.getClass() == Double.class ||
-                               object instanceof Date)  
-               {
-                       writer.print("Value");
-               } else {
-                       for (int i = 0; i < methods.length; i++) {
-                               String name = methods[i].getName().substring(3);
-                               writer.print(name);
-                               if (i < methods.length - 1) {
-                                       writer.print(fieldTerminator);
-                               }
-                       }
-               }
-       }
-       
-       public static void printObject(PrintWriter writer, 
-                       Method methods[], 
-                       Object object, 
-                       String fieldTerminator, String rowTerminator, 
-                       SimpleDateFormat dateFormat)
-       {
-               printObject(writer, methods, object, fieldTerminator, 
dateFormat);
-               writer.print(rowTerminator);
-       }
-       
-       private static void printObject(PrintWriter writer, 
-                       Method methods[], 
-                       Object object, 
-                       String fieldTerminator, 
-                       SimpleDateFormat dateFormat)
-       {
-               if (object == null) {
-                       writer.print("null");
-               } else if (object instanceof String ) { //FindBugs (Below) - 
Possible null pointer dereference of object
-                       String value = object.toString();
-                       
-                       // For each quote add matching quote
-                       value = value.replaceAll("\"", "\"\"");
-                       
-                       // If contains a quote then enclose it with quotes
-                       if (value.indexOf("\"") != -1) {
-                               value = "\"" + value;
-                               value = value + "\"";
-                       } else {
-                       
-                               // If begins with a " then prepend a ".
-                               if (value.startsWith("\"")) {
-                                       value = "\"" + value;
-                               }
-                               
-                               // If ends with a " then end it with a ".
-                               if (value.endsWith("\"")) {
-                                       value = value + "\"";
-                               }
-                       }
-                       writer.print(value);
-                       
-               } else if(object.getClass().isPrimitive() || 
-                               object.getClass() == Boolean.class ||
-                               object.getClass() == Byte.class ||
-                               object.getClass() == Character.class ||
-                               object.getClass() == Short.class ||
-                               object.getClass() == Integer.class ||
-                               object.getClass() == Long.class ||
-                               object.getClass() == Float.class ||
-                               object.getClass() == Double.class)
-               {
-                       writer.print(object.toString());
-                       
-               } else if (object instanceof Date) {
-                       
-                       writer.print(dateFormat.format((Date)object));
-                       
-               } else if (methods != null) {
-                       for (int i = 0; i < methods.length; i++) {
-                               Method method = methods[i];
-                               String name = method.getName();
-                               try {
-                                       Object value = method.invoke(object, 
(Object[])null);
-                                       value = getPrintableValue(value);
-                                       printObject(writer, null, value, 
fieldTerminator, dateFormat);
-                                       if (i < methods.length - 1) {
-                                               writer.print(fieldTerminator);
-                                       }
-                               } catch (Exception ex) {
-                               }
-                       }
-               }
-       }
-       
-       private static Object getPrintableValue(Object value)
-       {
-               if (value instanceof Byte) {
-                       value = ((Byte) value).toString();
-               } else if (value instanceof byte[]) {
-                       value = "[B " + ((byte[])value).length;
-               } else if (value instanceof boolean[]) {
-                       value = "[Z " + ((boolean[])value).length;
-               } else if (value instanceof short[]) {
-                       value = "[S " + ((short[])value).length;
-               } else if (value instanceof int[]) {
-                       value = "[I " + ((int[])value).length;
-               } else if (value instanceof long[]) {
-                       value = "[J " + ((long[])value).length;
-               } else if (value instanceof float[]) {
-                       value = "[F " + ((float[])value).length;
-               } else if (value instanceof double[]) {
-                       value = "[D " + ((double[])value).length;
-               }
-               return value;
-       }
-
-}

Reply via email to