fairnet/src/main/java/seed/utils/SeedDbUtilsSupport.java

197 lines
6.0 KiB
Java

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;
}
}