/**
  * Adds new column to collection
  *
  * @param ColumnInterface $column
  */
 public function add(ColumnInterface $column)
 {
     $this->items[$column->getAlias()] = $column;
 }
 /**
  * Adds additional where/having clauses for given dataset's column
  *
  * @param QueryBuilder       $queryBuilder
  * @param ColumnInterface    $column
  * @param ConditionInterface $condition
  */
 protected function addColumnConditionToQueryBuilder(QueryBuilder $queryBuilder, ColumnInterface $column, ConditionInterface $condition)
 {
     $source = $column->getSource();
     $alias = $column->getAlias();
     $operator = $condition->getOperator();
     $identifier = sprintf('%s_%s', $condition->getIdentifier(), $this->paramIteration++);
     if ($column->isAggregated()) {
         $expression = $queryBuilder->expr()->{$operator}($alias, ':' . $identifier);
         $queryBuilder->andHaving($expression);
     } else {
         $expression = $queryBuilder->expr()->{$operator}($source, ':' . $identifier);
         $queryBuilder->andWhere($expression);
     }
     $queryBuilder->setParameter($identifier, $condition->getValue());
 }