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

📄 sqlselectbuilderdb2impl.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
字号:
/* * Copyright 2006-2007 Queplix Corp. * * Licensed under the Queplix Public License, Version 1.1.1 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.queplix.com/solutions/commercial-open-source/queplix-public-license/ * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */package com.queplix.core.modules.eql.parser.db2;import com.queplix.core.error.GenericSystemException;import com.queplix.core.jxb.entity.Efield;import com.queplix.core.jxb.entity.types.SqlSType;import com.queplix.core.modules.eql.EQLReq;import com.queplix.core.modules.eql.EQLReqEntity;import com.queplix.core.modules.eql.EQLReqField;import com.queplix.core.modules.eql.EQLReqSelectAttr;import com.queplix.core.modules.eql.error.EQLException;import com.queplix.core.modules.eql.funcs.FTSFunc;import com.queplix.core.modules.eql.funcs.LowerFunc;import com.queplix.core.modules.eql.funcs.UpperFunc;import com.queplix.core.modules.eql.parser.generic.SQLSelectBuilderGenericImpl;import org.apache.regexp.RE;import org.apache.regexp.RESyntaxException;/** * <p>Select SQL builder DB2 implementation</p> * @author Timofei Nevolin [TN] * @author Andrey Baranov [ALB] * @version $Revision: 1.1.1.1 $ $Date: 2005/09/12 15:30:28 $ */public class SQLSelectBuilderDB2Impl    extends SQLSelectBuilderGenericImpl {    /*     * (No javadoc)     * @see SQLBuilderGenericImpl#getCountSql     */    protected String getCountSql( String mainSql )        throws EQLException {        try {            // remove <ORDER BY> tail            RE re = new RE( "order[ \t\n\r]+by", RE.MATCH_CASEINDEPENDENT );            if( re.match( mainSql ) ) {                mainSql = mainSql.substring( 0, re.getParenStart( 0 ) );            }        } catch( RESyntaxException ex ) {            throw new GenericSystemException( ex );        }        return "SELECT COUNT(*) FROM (" + mainSql + ") REQ";    }    /*     * (No javadoc)     * @see SQLBuilderGenericImpl#addFromClause     */    protected void addFromClause()        throws EQLException {        if( req.getFrom().fromSize() == 0 ) {            // add dummy table if no any phys. tables found            fromClause.append( "sysibm.sysdummy1" );        } else {            super.addFromClause();        }    }    /*     * No javadoc     * @see SQLBuilderGenericImpl#getSQLFieldSelect     */    protected String getSQLFieldSelect( EQLReq req, EQLReqSelectAttr reqSelectAttr, int i )        throws EQLException {        StringBuffer sql = new StringBuffer();        Efield field = reqSelectAttr.getReqField().getField();        int sql_type = field.getSqltype().getType();        // Check if field lazy        boolean isLazy = req.isLazy( field );        if( isLazy ) {            if( sql_type == SqlSType.MEMO_TYPE ) {                // add LENGTH() for MEMO                String sqlColumnName = getSQLOperand( reqSelectAttr.getReqOp() );                sql.append( "LENGTH(" ).append( sqlColumnName ).append( ") AS LAZYFIELD" ).append( i );            } else {                // add '1' for the rest                sql.append( "1 AS LAZYFIELD" ).append( i );            }            return sql.toString();        }        // Return default column        return super.getSQLFieldSelect( req, reqSelectAttr, i );    }    /*     * No javadoc     * @see SQLBuilderGenericImpl#getSQLOperandMember(FTSFunc)     */    protected String getSQLOperandMember( FTSFunc memberField )        throws EQLException {        throw new UnsupportedOperationException();    }    /*     * No javaodc     * @see SQLBuilder#getSQLColumnName(EQLReqField)     */    protected String getSQLColumnName( EQLReqField reqField ) {        EQLReqEntity reqEntity = reqField.getReqEntity();        Efield field = reqField.getField();        return getDbAlias( reqEntity ) + ".\"" + field.getName().toUpperCase() + "\"";    }    /*     * No javaodc     * @see SQLBuilder#getSQLOperandMember(LowerFunc)     */    protected String getSQLOperandMember( LowerFunc memberField )        throws EQLException {        String operand = getSQLOperand( memberField.getParameter( 0 ) );        if( operand.equals( "?" ) ) {            // .. only varchar(N) supported            int n = getLastSqlParameter().toString().length();            return "LOWER(CAST(? AS VARCHAR(" + n + ")))";        } else {            return "LOWER(" + operand + ")";        }    }    /*     * No javaodc     * @see SQLBuilder#getSQLOperandMember(UpperFunc)     */    protected String getSQLOperandMember( UpperFunc memberField )        throws EQLException {        String operand = getSQLOperand( memberField.getParameter( 0 ) );        if( operand.equals( "?" ) ) {            // .. only varchar(N) supported            int n = getLastSqlParameter().toString().length();            return "UPPER(CAST(? AS VARCHAR(" + n + ")))";        } else {            return "UPPER(" + operand + ")";        }    }}

⌨️ 快捷键说明

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