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

📄 eqlintmediator.java

📁 CRM源码This file describes some issues that should be implemented in future and how it should be imple
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
     * @param reqWhere parent where object     * @param where_op where operation id     * @param subWhereCond EQLReqSubWhereCond sub where condition     * @throws EQLException     */    public void addSubWhereCondition( EQLReqWhere reqWhere,                                      int where_op,                                      EQLReqSubWhereCond subWhereCond )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addSubWhereCondition(): " + where_op );        }        // add sub where condition        EQLReqSubWhere reqSubWhere = new EQLReqSubWhere( where_op, subWhereCond );        if( !reqWhere.contains( reqSubWhere ) ) {            reqWhere.addSubWhere( reqSubWhere );        }    }    /**     * Create and add new where as subwhere object     * @param reqWhere parent where object     * @param where_op where operation id     * @return new child where object     * @throws EQLException     */    public EQLReqWhere addSubWhere( EQLReqWhere reqWhere, int where_op )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addSubWhere(): " + where_op );        }        // create new EQL req where        EQLReqWhere newReqWhere = new EQLReqWhere();        // add sub where condition        EQLReqSubWhere reqSubWhere = new EQLReqSubWhere( where_op, newReqWhere );        if( !reqWhere.contains( reqSubWhere ) ) {            reqWhere.addSubWhere( reqSubWhere );        }        return newReqWhere;    }    /**     * Create and add new where as subwhere object     * @param reqField EQLReqField object     * @param order_op order operation id     * @param mandatory mandatory order or not     * @throws EQLException     */    public void addSubOrder( EQLReqField reqField, int order_op, boolean mandatory )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addSubOrder(): " + order_op );        }        if( reqField.getField().getListref() != null ) {            // add list reference            reqField = interpreter.addListField( reqField );        } else {            // add field            reqField = interpreter.addField( reqField );        }        // create bew req operation        EQLReqOp reqOp = buildSelectEQLReqOp( reqField );        // create and add new sub order        EQLReqSubOrder subOrder = new EQLReqSubOrder( order_op, reqOp, mandatory );        getEQLReq().getOrder().addSubOrder( subOrder );    }    /**     * Add sub operation in operation object     * @param reqSubOp sub operation object object     * @param reqOp operation object     * @throws EQLException     */    public void addSubOp( EQLReqSubOp reqSubOp, EQLReqOp reqOp )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addSubOp() " + reqSubOp.getClass() );        }        // add sub operation        reqOp.addSubOp( reqSubOp );    }    /**     * Try to get EQLReqSubOpMember object from EQL prepared statement     * @return EQLReqSubOpMember object or build new     * @throws EQLException     */    public EQLReqSubOpMember buildNextSubOperation()        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " nextSubOperation()" );        }        EQLReqSubOpMember o = null;        if( interpreter.getPreparedStatement() != null ) {            // get sub operation member from EQL prepared statement            o = interpreter.getPreparedStatement().next();        }        return( o == null ) ? new EQLReqSubOpMemberUnknown() : o;    }    /**     * Build new sub operation member     * @param value number     * @return EQLObject object     * @throws EQLException     */    public EQLObject buildSubOperationMemberNumber( String value )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberNumber(): " + value );        }        // build sub operation member number        Number number = EQLUtils.parseEQLNumber( value );        return new EQLNumberObject( number );    }    /**     * Build new sub operation member     * @param value string     * @return EQLObject object     * @throws EQLException     */    public EQLObject buildSubOperationMemberString( String value )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberString(): " + value );        }        // build sub operation member string        return new EQLStringObject( value );    }    /**     * Build new sub operation member     * @return EQLObject object     * @throws EQLException     */    public EQLObject buildSubOperationMemberNull()        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberNull()" );        }        // build sub operation member null        return EQLNullObject.getInstance();    }    /**     * Build new sub operation member     * @param reqField req field object     * @return EQLReqSubOpMember object     * @throws EQLException     */    public EQLReqSubOpMember buildSubOperationMemberField( EQLReqField reqField )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberField(): " + reqField );        }        /** @todo check for virtual field */        // add field        reqField = interpreter.addField( reqField );        // build sub operation member field        return new EQLReqSubOpMemberField( reqField );    }    /**     * Build new sub operation member     * @param reqField EQLReqField object     * @return EQLReqSubOpMember object     * @throws EQLException     */    public EQLReqSubOpMember buildSubOperationMemberListField( EQLReqField reqField )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberListField(): " + reqField );        }        /** @todo check for virtual field */        // add list field        EQLReqField listReqField = interpreter.addListField( reqField );        return buildSelectEQLReqOp( listReqField );    }    /**     * Build new sub operation member     * @param func EQLReqSubOpMemberFunc object     * @return EQLReqSubOpMember object     * @throws EQLException     */    public EQLReqSubOpMember buildSubOperationMemberFunc( EQLReqSubOpMemberFunc func )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " buildSubOperationMemberFunc(): " + func );        }        if( func instanceof EQLReqFuncExecutable ) {            // execute function            return( ( EQLReqFuncExecutable ) func ).execute();        } else {            return func;        }    }    /**     * Add new function parameter     * @param func EQL function     * @param funcParam function parameter     * @throws EQLException     */    public void addFunctionParameter( EQLReqSubOpMemberFunc func, EQLReqOp funcParam )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addFunctionParameter(): " + func + "," + funcParam );        }        func.addParameter( funcParam );        // register field in EQL interpreter        int size = funcParam.size();        for( int i = 0; i < size; i++ ) {            EQLReqSubOp subOp = funcParam.getSubOp( i );            EQLReqSubOpMember subOpMember = subOp.getMember();            if( subOpMember instanceof EQLReqSubOpMemberField ) {                EQLReqSubOpMemberField memberField = ( EQLReqSubOpMemberField ) subOpMember;                EQLReqField reqField = memberField.getReqField();                // add entity and entity constraint                // and get new req field                reqField = interpreter.addField( reqField );                if( func instanceof EQLReqAggFunc ) {                    // for aggregate function add entity WHERE condition                    addEntityWhereCondition( reqField.getReqEntity() );                }                // substitute member field                subOp.setMember( new EQLReqSubOpMemberField( reqField ) );            }        }    }    /**     * Add new enumeration parameter     * @param en EQL enumeration     * @param enumParam enumeration parameter     * @throws EQLException     */    public void addEnumParameter( EQLReqSubOpMemberEnum en, EQLObject enumParam )        throws EQLException {        if( getLogger().isDebugEnabled() ) {            DEBUG( " addEnumParameter(): " + en + "," + enumParam );        }        // currently supportes only primitive types in enumeration        /** @todo make support of other EQL types */        en.addParameter( enumParam );    }    // ------------------------------------------------------- private methods    /**     * Add list reference default value     * @param reqSelectAttr parent EQLReqSelectAttr object     * @param reqField EQLReqField object     * @throws EQLException     */    private void addListFieldAsDefault( EQLReqSelectAttr reqSelectAttr,                                        EQLReqField reqField )        throws EQLException {        Entity entity = reqField.getReqEntity().getEntity();        Listref listRef = reqField.getField().getListref();        if( listRef == null ) {            return;        }        // get listref entity and field        Entity lrefEntity = interpreter.getSession().findEntity( listRef.getEntity() );        Efield lrefField = EntityHelper.getEfield( listRef.getEfield(), lrefEntity );        // construct list ref EQLReqEntity and EQLReqField objects        EQLReqEntity lrefReqEntity = new EQLReqEntity( lrefEntity, reqField );        EQLReqField listReqField = new EQLReqField( lrefReqEntity, lrefField );        //        // Left operation doesn't contain field.        // So we can't add JOIN - add WHERE clause instead!        //        Dataschema ds = listRef.getDataschema();        String[] keys1 = ds.getTable( 0 ).getKey();        String[] keys2 = ds.getTable( 1 ).getKey();        int keySize = keys1.length;        for( int i = 0; i < keySize; i++ ) {            Efield efield1 = EntityHelper.getEfieldBySrc( keys1[i], entity );            Efield efield2 = EntityHelper.getEfieldBySrc( keys2[i], lrefEntity );            EQLReqField reqField1 = new EQLReqField( entity, efield1 );            EQLReqField reqField2 = new EQLReqField( lrefEntity, efield2 );            EQLReqOp reqOp = buildDefaultSelectEQLReqOp( reqField1 );            EqCond cond = new EqCond( reqOp, new EQLReqOp( reqField2 ) );            interpreter.addWhere( reqField2, cond );        }        if( getLogger().isDebugEnabled() ) {            DEBUG( "Add def list field: " + listReqField );        }        // build list reference EQLReqSelectAttr object        reqSelectAttr.setListFieldSelectAttr(            new EQLReqSelectAttr( listReqField, buildSelectEQLReqOp( listReqField ) )            );    }    /**     * Build EQLReqOp object for select attribute     * Takes <code>eql-src</code> Efield attribute if exists     * @param reqField EQLReqField object     * @return EQLReqOp object     * @throws EQLException     */    private EQLReqOp buildSelectEQLReqOp( EQLReqField reqField )        throws EQLException {        Efield field = reqField.getField();        // check: has field 'eql-src' attribute        EQLReqOp reqOp;        if( field.getEqlSrc() != null ) {            reqOp = parseSrc( field.getEqlSrc() );        } else {            reqOp = new EQLReqOp( reqField );        }        return reqOp;    }    /**     * Build EQLReqOp object for select attribute     * Takes <code>eql-defsrc</code> Efield attribute     * @param reqField EQLReqField object     * @return EQLReqOp object     * @throws EQLException     */    private EQLReqOp buildDefaultSelectEQLReqOp( EQLReqField reqField )        throws EQLException {        Efield field = reqField.getField();        String eqlDefSrc = field.getEqlDefsrc();        // check: has field 'eql-defsrc' attribute        EQLReqOp reqOp = null;        if( eqlDefSrc != null ) {            reqOp = parseSrc( eqlDefSrc );        } else {            reqOp = new EQLReqOp();            reqOp.addSubOp( new NoneOp( EQLNullObject.getInstance() ) );        }        return reqOp;    }}

⌨️ 快捷键说明

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