コード例 #1
0
 /**
  * @param $modelAttributeToDataProviderAdapter
  * @param null | string $onTableAliasName
  * @return string
  */
 protected function resolveFinalContent($modelAttributeToDataProviderAdapter, $onTableAliasName = null)
 {
     if ($modelAttributeToDataProviderAdapter instanceof ReadOptimizationDerivedAttributeToDataProviderAdapter) {
         $builder = new ReadOptimizationModelWhereAndJoinBuilder($modelAttributeToDataProviderAdapter, $this->joinTablesAdapter);
         $clausePosition = 1;
         $where = array();
         $builder->resolveJoinsAndBuildWhere(null, null, $clausePosition, $where, $onTableAliasName);
         return $where[1];
     } else {
         $modelClassName = $modelAttributeToDataProviderAdapter->getResolvedModelClassName();
         $metadataAdapter = new FilterForReportFormToDataProviderMetadataAdapter($this->componentForm);
         $attributeData = $metadataAdapter->getAdaptedMetadata();
         //todo: right now in makeWhere we always set setDistinct to true when instantiating new ModelWhereAndJoinBuilder
         //todo: but when we are calling makeWhere from here we should not set that to true. or should it? TBD
         return ModelDataProviderUtil::makeWhere($modelClassName, $attributeData, $this->joinTablesAdapter, $onTableAliasName);
     }
 }
 public function testIsNotNull()
 {
     $filter = new FilterForReportForm('ReportsTestModule', 'ReportModelTestItem', Report::TYPE_ROWS_AND_COLUMNS);
     $filter->attributeIndexOrDerivedType = 'string';
     $filter->operator = OperatorRules::TYPE_IS_NOT_NULL;
     $metadataAdapter = new FilterForReportFormToDataProviderMetadataAdapter($filter);
     $metadata = $metadataAdapter->getAdaptedMetadata();
     $compareClauses = array(1 => array('attributeName' => 'string', 'operatorType' => 'isNotNull', 'value' => null));
     $compareStructure = '1';
     $this->assertEquals($compareClauses, $metadata['clauses']);
     $this->assertEquals($compareStructure, $metadata['structure']);
 }