Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
   */
  
  package com.jfinal.plugin.activerecord;
  
 
 import java.io.Reader;
 import java.sql.*;
 import java.util.List;
 import java.util.Map;

ModelBuilder.
 
 public class ModelBuilder {
 
     public static <T> List<T> build(ResultSet rsClass<? extends ModelmodelClass)
             throws SQLExceptionInstantiationExceptionIllegalAccessException {
         List<T> result = Lists.newArrayList();
         final ResultSetMetaData rsmd = rs.getMetaData();
         int columnCount = rsmd.getColumnCount();
         String[] labelNames = new String[columnCount + 1];
         int[] types = new int[columnCount + 1];
         buildLabelNamesAndTypes(rsmdlabelNamestypes);
         while (rs.next()) {
             Model<?> ar = modelClass.newInstance();
             Map<StringObjectattrs = ar.getAttrs();
             for (int i = 1; i <= columnCounti++) {
                 Object value;
                 if (types[i] < .)
                     value = rs.getObject(i);
                 else if (types[i] == .)
                     value = handleClob(rs.getClob(i));
                 else if (types[i] == .)
                     value = handleClob(rs.getNClob(i));
                 else if (types[i] == .)
                     value = handleBlob(rs.getBlob(i));
                 else
                     value = rs.getObject(i);
 
                 attrs.put(labelNames[i], value);
             }
             result.add((T) ar);
         }
         return result;
     }
 
     private static void buildLabelNamesAndTypes(ResultSetMetaData rsmdString[] labelNamesint[] types)
             throws SQLException {
         for (int i = 1; i < labelNames.lengthi++) {
             labelNames[i] = rsmd.getColumnLabel(i).toLowerCase();
             types[i] = rsmd.getColumnType(i);
         }
     }
 
     public static byte[] handleBlob(Blob blobthrows SQLException {
         if (blob == null)
             return null;
 
         InputStream is = null;
         try {
             is = blob.getBinaryStream();
             byte[] data = new byte[(intblob.length()];        // byte[] data = new byte[is.available()];
             is.read(data);
             is.close();
             return data;
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {
             try {
                 if (is != null) {
                     is.close();
                 }
             } catch (IOException e) {
                 throw new RuntimeException(e);
             }
         }
     }
 
     public static String handleClob(Clob clobthrows SQLException {
         if (clob == null)
             return null;
 
         Reader reader = null;
         try {
             reader = clob.getCharacterStream();
             char[] buffer = new char[(intclob.length()];
             reader.read(buffer);
             return new String(buffer);
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
	/* backup before use columnType
    @SuppressWarnings({"rawtypes", "unchecked"})
	static final <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass) throws SQLException, InstantiationException, IllegalAccessException {
		List<T> result = new ArrayList<T>();
		ResultSetMetaData rsmd = rs.getMetaData();
		int columnCount = rsmd.getColumnCount();
		String[] labelNames = getLabelNames(rsmd, columnCount);
		while (rs.next()) {
			Model<?> ar = modelClass.newInstance();
			Map<String, Object> attrs = ar.getAttrs();
			for (int i=1; i<=columnCount; i++) {
				Object attrValue = rs.getObject(i);
				attrs.put(labelNames[i], attrValue);
			}
			result.add((T)ar);
		}
		return result;
	}
	private static final String[] getLabelNames(ResultSetMetaData rsmd, int columnCount) throws SQLException {
		String[] result = new String[columnCount + 1];
		for (int i=1; i<=columnCount; i++)
			result[i] = rsmd.getColumnLabel(i);
		return result;
	}
	*/
	/* backup
	@SuppressWarnings({"rawtypes", "unchecked"})
	static final <T> List<T> build(ResultSet rs, Class<? extends Model> modelClass) throws SQLException, InstantiationException, IllegalAccessException {
		List<T> result = new ArrayList<T>();
		ResultSetMetaData rsmd = rs.getMetaData();
		List<String> labelNames = getLabelNames(rsmd);
		while (rs.next()) {
			Model<?> ar = modelClass.newInstance();
			Map<String, Object> attrs = ar.getAttrs();
			for (String lableName : labelNames) {
				Object attrValue = rs.getObject(lableName);
				attrs.put(lableName, attrValue);
			}
			result.add((T)ar);
		}
		return result;
	}
	private static final List<String> getLabelNames(ResultSetMetaData rsmd) throws SQLException {
		int columCount = rsmd.getColumnCount();
		List<String> result = new ArrayList<String>();
		for (int i=1; i<=columCount; i++) {
			result.add(rsmd.getColumnLabel(i));
		}
		return result;
	}
	*/
New to GrepCode? Check out our FAQ X