private function CreateLegacyFilter(FilterCondition $filterCondition) { switch ($filterCondition->GetOperator()) { case FilterConditionOperator::IsBetween: return new BetweenFieldFilter($filterCondition->getValue(0), $filterCondition->getValue(1)); case FilterConditionOperator::IsNotBetween: return new NotPredicateFilter(new BetweenFieldFilter($filterCondition->getValue(0), $filterCondition->getValue(1))); case FilterConditionOperator::Contains: return new FieldFilter('%' . $filterCondition->GetValue(0) . '%', 'ILIKE'); case FilterConditionOperator::DoesNotContain: return new NotPredicateFilter(new FieldFilter('%' . $filterCondition->GetValue(0) . '%', 'ILIKE')); case FilterConditionOperator::BeginsWith: return new FieldFilter($filterCondition->GetValue(0) . '%', 'ILIKE'); case FilterConditionOperator::EndsWith: return new FieldFilter('%' . $filterCondition->GetValue(0), 'ILIKE'); case FilterConditionOperator::IsNotLike: return new NotPredicateFilter(new FieldFilter($filterCondition->GetValue(0), 'ILIKE')); case FilterConditionOperator::IsBlank: return new IsBlankFieldFilter(); case FilterConditionOperator::IsNotBlank: return new NotPredicateFilter(new IsBlankFieldFilter()); default: return new FieldFilter($filterCondition->GetValue(0), $this->GetConditionOperatorName($filterCondition->GetOperator())); } }
private function GetFilterConditionAsSQL(Dataset $dataset, FilterCondition $filter) { if ($filter->GetValue(0) == '' && $filter->GetDisplayValue() != '') { $newFilter = new FilterCondition($dataset->IsLookupFieldByPrimaryName($filter->GetFieldName()), $filter->GetOperator(), $filter->GetDisplayValue()); $legacyFilter = $this->CreateLegacyFilter($newFilter); return $this->legacyGenerator->CreateCondition($legacyFilter, $dataset->GetFieldInfoByName($newFilter->GetFieldName())); } else { $legacyFilter = $this->CreateLegacyFilter($filter); return $this->legacyGenerator->CreateCondition($legacyFilter, $dataset->GetFieldInfoByName($filter->GetFieldName())); } /*return StringUtils::Format('(%s %s %s)', $filter->GetFieldName(), $this->GetConditionOperatorAsSQL($filter->GetOperator()), $this->GetFieldValueAsSQL($filter->GetFieldName(), $filter->GetValue(0)) );*/ }