197 lines
6.0 KiB
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;
|
|
}
|
|
}
|