⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oracleadapter.java

📁 EasyJForum 是一个基于 Java 技术的免费社区论坛软件系统
💻 JAVA
字号:
package com.hongshee.ejforum.data.sql;

/**
 * <p>Title: OracleAdapter.java</p>
 * <p>Description: OracleAdapter</p>
 * <p>Copyright: Hongshee Software (c) 2007</p>
 * @author jackie du
 * @version 1.0
 */

import java.lang.reflect.Field;

import com.hongshee.ejforum.data.SqlAdapter;

public class OracleAdapter extends SqlAdapter 
{
    public OracleAdapter()
    {
    }
    
    public void init() throws Exception
    {
        // Add sequence
        Section_Insert = addSeqToInsertSql(Section_Insert, "sectionID", "ejf_section_seq");
        Board_Insert = addSeqToInsertSql(Board_Insert, "boardID", "ejf_board_seq");
        Topic_Insert = addSeqToInsertSql(Topic_Insert, "topicID", "ejf_topic_seq");
        Reply_Insert = addSeqToInsertSql(Reply_Insert, "replyID", "ejf_reply_seq");
        Attach_Insert = addSeqToInsertSql(Attach_Insert, "attachID", "ejf_attach_seq");
        ShortMsg_Insert = addSeqToInsertSql(ShortMsg_Insert, "msgID", "ejf_short_msg_seq");
        Bookmark_Insert = addSeqToInsertSql(Bookmark_Insert, "markID", "ejf_bookmark_seq");
        AdminLog_Insert = addSeqToInsertSql(AdminLog_Insert, "logID", "ejf_admin_log_seq");
        ModerateLog_Insert = addSeqToInsertSql(ModerateLog_Insert, "logID", "ejf_moderator_log_seq");
        ErrorLog_Insert = addSeqToInsertSql(ErrorLog_Insert, "logID", "ejf_error_log_seq");
        ReportLog_Insert = addSeqToInsertSql(ReportLog_Insert, "logID", "ejf_report_log_seq");
        CensorLog_Insert = addSeqToInsertSql(CensorLog_Insert, "logID", "ejf_censor_log_seq");
        CreditsLog_Insert = addSeqToInsertSql(CreditsLog_Insert, "logID", "ejf_credits_log_seq");
        BackupTask_Insert = addSeqToInsertSql(BackupTask_Insert, "taskID", "ejf_backup_task_seq");

        // LEFT() function -> SUBSTR()
        VisitStat_GetList = VisitStat_GetList.replaceAll("LEFT\\(([^,]+),", "SUBSTR($1,");
        VisitStat_GetMonths = VisitStat_GetMonths.replaceAll("LEFT\\(([^,]+),", "SUBSTR($1,");
        
        Field[] fields = super.getClass().getFields();
        Object fieldValue = null;
        String strValue = null;
        for (int i=0; i<fields.length; i++)
        {
            fieldValue = fields[i].get(this);
            if (fieldValue != null)
            {
                strValue = fieldValue.toString();
                strValue = strValue.replace("NOW()", "SYSDATE");
                fields[i].set(this, strValue);
            }
        }
    }

    public String addSeqToInsertSql(String sql, String primaryKey, String seqName)
    {
        StringBuilder sqlBuf = new StringBuilder(sql);
        int p = sqlBuf.indexOf("(");
        sqlBuf.insert(p+1, primaryKey + ",");
        p = sqlBuf.indexOf("values(");
        sqlBuf.insert(p+7, seqName + ".NEXTVAL,");
        return sqlBuf.toString();
    }
    
    public String getPageQuerySql(StringBuilder sqlBuf, 
                                  int pageNo, int pageRows, int totalCount)
    {
        int[] pageParams = getPageQueryParams(pageNo, pageRows, totalCount);
        
        sqlBuf.insert(0, "select * from (select page_a.*, ROWNUM as page_row from (");
        sqlBuf.append(") page_a where ROWNUM <= ").append(pageParams[0])
              .append(") where page_row > ").append(pageParams[1]);
        return sqlBuf.toString();
    }
    
    protected int[] getPageQueryParams(int pageNo, int pageRows, int totalCount)
    {
        int[] result = new int[2];
        int offset = pageNo * pageRows;
        result[0] = offset;
        result[1] = offset - pageRows;
        return result;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -