package seed.utils; import java.io.IOException; import java.io.Reader; import java.math.BigDecimal; import java.sql.SQLException; import org.apache.log4j.Logger; import com.tmax.tibero.jdbc.TbNClob; import oracle.sql.CLOB; public class SeedDbUtilsSupport { private Logger log = Logger.getLogger(this.getClass()); public String sqlQueryPagingProcess(String strSql, int page, int row){ SeedProperties seedProperties = new SeedProperties(); String dbType = seedProperties.getConfigValue("database").toUpperCase(); //String dbVersion = seedProperties.getConfigValue("database.version").toUpperCase(); int firstPage = (page - 1) * row; if(strSql!=null && !"".equals(strSql)){ if(dbType.equals("ORACLE") || dbType.equals("CUBRID")){ strSql = " SELECT * FROM " + " ( " + " SELECT ROW_.*, ROWNUM AS RNUM FROM " + " ( " + strSql + " ) ROW_" + " ) " + " WHERE RNUM > " + firstPage + " AND ROWNUM <= " + row; }else if(dbType.equals("MSSQL")){ String strOrder = strSql.substring(strSql.lastIndexOf("ORDER BY")+8); strSql = " SELECT TOP " + row + " * FROM " + " ( " + " SELECT ROW_.*, ROW_NUMBER() OVER(ORDER BY " + strOrder + " ) AS RNUM " + " FROM (" + strSql.substring(0, strSql.lastIndexOf("ORDER BY")) + ") AS ROW_ ) AS ROW1_ " + " WHERE RNUM > " + firstPage; }else if(dbType.equals("MYSQL")){ strSql = strSql + " LIMIT " + firstPage + " , " + row; }else if(dbType.equals("DB2")) { strSql = " SELECT * FROM " + " ( " + " SELECT ROW_.*, ROWNUM AS RNUM " + " FROM (" + strSql + ") ROW_ " + " ) " + " WHERE RNUM > " + firstPage + " AND ROWNUM <= " + row; } } return strSql; } public String sqlQueryPagingProcess(String strSql, int page, int row, String dbType){ int firstPage = (page - 1) * row; if(strSql!=null && !"".equals(strSql)){ if(dbType.equals("ORACLE") || dbType.equals("CUBRID")){ strSql = " SELECT * FROM " + " ( " + " SELECT ROW_.*, ROWNUM AS RNUM FROM " + " ( " + strSql + " ) ROW_" + " ) " + " WHERE RNUM > " + firstPage + " AND ROWNUM <= " + row; }else if(dbType.equals("MSSQL")){ String strOrder = strSql.substring(strSql.lastIndexOf("ORDER BY")+8); strSql = " SELECT TOP " + row + " * FROM " + " ( " + " SELECT ROW_.*, ROW_NUMBER() OVER(ORDER BY " + strOrder + " ) AS RNUM " + " FROM (" + strSql.substring(0, strSql.lastIndexOf("ORDER BY")) + ") AS ROW_ ) AS ROW1_ " + " WHERE RNUM > " + firstPage; }else if(dbType.equals("MYSQL")){ strSql = strSql + " LIMIT " + firstPage + " , " + row; }else if(dbType.equals("DB2")) { strSql = " SELECT * FROM " + " ( " + " SELECT ROW_.*, ROWNUM AS RNUM " + " FROM (" + strSql + ") ROW_ " + " ) " + " WHERE RNUM > " + firstPage + " AND ROWNUM <= " + row; } } return strSql; } public String clobToString(Object convertData){ if(convertData!=null){ CLOB clobData = (CLOB)convertData; StringBuffer returnStr = new StringBuffer(); try { Reader reader = clobData.getCharacterStream(); char[] buff = new char[1024]; int nchars = 0; while ((nchars = reader.read(buff)) > 0) { returnStr.append(buff, 0, nchars); } }catch (SQLException e) { log.error("CHECK ERROR:",e); }catch (IOException e) { log.error("CHECK ERROR:",e); } return returnStr.toString(); }else{ return ""; } } public String tbNclobToString(Object convertData){ if(convertData!=null){ TbNClob clobData = (TbNClob)convertData; StringBuffer returnStr = new StringBuffer(); try { Reader reader = clobData.getCharacterStream(); char[] buff = new char[1024]; int nchars = 0; while ((nchars = reader.read(buff)) > 0) { returnStr.append(buff, 0, nchars); } }catch (SQLException e) { log.error("CHECK ERROR:",e); }catch (IOException e) { log.error("CHECK ERROR:",e); } return returnStr.toString(); }else{ return ""; } } public String dbMoveClobToString(Object convertData, String dbType){ if(convertData!=null){ if(dbType.equals("ORACLE")){ CLOB clobData = (CLOB)convertData; StringBuffer returnStr = new StringBuffer(); try { Reader reader = clobData.getCharacterStream(); char[] buff = new char[1024]; int nchars = 0; while ((nchars = reader.read(buff)) > 0) { returnStr.append(buff, 0, nchars); } }catch (SQLException e) { log.error("CHECK ERROR:",e); }catch (IOException e) { log.error("CHECK ERROR:",e); } return returnStr.toString(); }else if(dbType.equals("TIBERO")){ TbNClob clobData = (TbNClob)convertData; StringBuffer returnStr = new StringBuffer(); try { Reader reader = clobData.getCharacterStream(); char[] buff = new char[1024]; int nchars = 0; while ((nchars = reader.read(buff)) > 0) { returnStr.append(buff, 0, nchars); } }catch (SQLException e) { log.error("CHECK ERROR:",e); }catch (IOException e) { log.error("CHECK ERROR:",e); }catch (Exception e) { log.error("CHECK ERROR:",e); } return returnStr.toString(); }else{ return ""; } }else{ return ""; } } public int countDataToInt(Object countData){ SeedProperties seedProperties = new SeedProperties(); String dbType = seedProperties.getConfigValue("database").toUpperCase(); if(countData!=null){ if(dbType.equals("ORACLE")){ return ((BigDecimal)countData).intValue(); }else if(dbType.equals("MSSQL") || dbType.equals("MYSQL") || dbType.equals("CUBRID")){ return SeedUtils.safeLongToInt((Long)countData); } } return 0; } }