code: private String computeWhereFragment(List<String> searchFields) throws Exception {
  		StringWriter sw = new StringWriter();
  		PrintWriter pw = new PrintWriter(sw);
  		
  		boolean first = true;
  		for(int loop=0; loop<searchFields.size(); ++loop) {
  			if( first ) {
  				first = false;
  				pw.print(" WHERE ");
  			} else {
  				pw.print(" OR ");
  			}
  			pw.print("lower(");
  			pw.print(searchFields.get(loop));
  			pw.print(") LIKE lower(?)");
  		}
  
  		pw.flush();
  		return sw.toString();
  	}
docs: Given a number of search fields, compute the SQL fragment
  used to filter the searched rows
  
  WHERE lower(X) LIKE lower(?)
  OR lower(Y) LIKE lower(?)...
  
  @param searchFields Columns to search
  @return
  @throws Exception