static gapi_boolean
initViewQuery (
    _DataReaderView dataReaderView)
{
    gapi_boolean result = FALSE;
    gapi_expression expr;
    u_dataView uReaderView;
    
    dataReaderView->reader_mask.sampleStateMask   = (c_long)0;
    dataReaderView->reader_mask.viewStateMask     = (c_long)0;
    dataReaderView->reader_mask.instanceStateMask = (c_long)0;
    
    uReaderView = u_dataView(U_DATAREADERVIEW_GET(dataReaderView));
    expr = gapi_createReadExpression(u_entity(uReaderView),
                                     &dataReaderView->reader_mask);
    if ( expr != NULL ) {
        dataReaderView->uQuery = gapi_expressionCreateQuery(expr,
                                                            u_reader(uReaderView),
                                                            NULL,
                                                            NULL);
        gapi_expressionFree(expr);
        if ( dataReaderView->uQuery ) {
            result = TRUE;
        }
    }
    return result;
}
Exemple #2
0
_QueryCondition
_QueryConditionNew(
    const gapi_sampleStateMask sample_states,
    const gapi_viewStateMask view_states,
    const gapi_instanceStateMask instance_states,
    const gapi_char *query_expression,
    const gapi_stringSeq *query_parameters,
    _DataReader datareader,
    _DataReaderView datareaderview)
{
    _QueryCondition _this;
    u_reader      uReader;
    u_dataView    uDataView;


    /* Allocate QueryCondition */
    _this = _QueryConditionAlloc();
    if (_this != NULL) {
        /* Initialise QueryCondition */
        if (datareaderview != NULL) {
          _ConditionInit(_Condition(_this),
                         _Entity(datareaderview),
                         _ReadConditionGetTriggerValue);
        } else {
          _ConditionInit(_Condition(_this),
                         _Entity(datareader),
                         _ReadConditionGetTriggerValue);
        }
        _this->_parent.dataReader = datareader;
        _this->_parent.dataReaderView = datareaderview;
        _this->_parent.readerMask.sampleStateMask = sample_states;
        _this->_parent.readerMask.viewStateMask = view_states;
        _this->_parent.readerMask.instanceStateMask = instance_states;
        _this->query_expression = gapi_string_dup(query_expression);
        _this->query_parameters = gapi_stringSeq_dup(query_parameters);

        uReader = u_reader(_DataReaderUreader(datareader));

        _this->expression =
            gapi_createQueryExpression(u_entity(uReader),
                                       _this->query_expression);
        if (_this->expression) {
            if (datareaderview) {
                uDataView = u_dataView(_DataReaderViewUreaderView(datareaderview));
                _this->_parent.uQuery = gapi_expressionCreateQuery(
                                                _this->expression,
                                                 u_reader(uDataView),
                                                 NULL,
                                                 _this->query_parameters);
            } else {
                uReader = u_reader(_DataReaderUreader(datareader));
                _this->_parent.uQuery = gapi_expressionCreateQuery(
                                                _this->expression,
                                                 uReader,
                                                 NULL,
                                                 _this->query_parameters);
            }


            if (_this->_parent.uQuery) {
                /* Success: fill UserData and mark as valid */
                u_entitySetUserData(u_entity(_this->_parent.uQuery),_this);
                _Condition(_this)->uEntity = u_entity(_this->_parent.uQuery);
            } else {
                gapi_free(_this->query_expression);
                gapi_free(_this->query_parameters);
                gapi_expressionFree(_this->expression);
                _ConditionDispose(_Condition(_this));
                _this = NULL;
            }
        } else {
            gapi_free(_this->query_expression);
            gapi_free(_this->query_parameters);
            _ConditionDispose(_Condition(_this));
            _this = NULL;
        }
    }

    return _this;
}