/**
  * Set a default sorting for the x- and y-axis without losing any existing rules
  *
  * @return  self
  */
 protected function adjustSorting()
 {
     $currentOrderColumns = $this->baseQuery->getOrderColumns();
     $xAxisOrderColumns = array(array($this->baseQuery->getMappedField($this->xAxisColumn), BaseQuery::SORT_ASC));
     $yAxisOrderColumns = array(array($this->baseQuery->getMappedField($this->yAxisColumn), BaseQuery::SORT_ASC));
     foreach ($currentOrderColumns as $orderInfo) {
         if ($orderInfo[0] === $xAxisOrderColumns[0][0]) {
             $xAxisOrderColumns[0] = $orderInfo;
         } elseif ($orderInfo[0] === $yAxisOrderColumns[0][0]) {
             $yAxisOrderColumns[0] = $orderInfo;
         } else {
             $xAxisOrderColumns[] = $orderInfo;
             $yAxisOrderColumns[] = $orderInfo;
         }
     }
     $this->xAxisQuery->setOrderColumns($xAxisOrderColumns);
     $this->yAxisQuery->setOrderColumns($yAxisOrderColumns);
     return $this;
 }
 /**
  * Parse an operator node to an sql string
  *
  * @param Node $node        The operator node to parse
  * @return string           The sql string representing this node
  */
 private function parseOperatorNode(Node $node)
 {
     if (!$this->query->isValidFilterTarget($node->left) && $this->query->getMappedField($node->left)) {
         return '';
     }
     $this->query->requireColumn($node->left);
     $queryString = '(' . $this->query->getMappedField($node->left) . ')';
     if ($this->query->isAggregateColumn($node->left)) {
         $this->type = 'HAVING';
     }
     $queryString .= ' ' . (is_integer($node->right) ? $node->operator : $this->getSqlOperator($node->operator, $node->right)) . ' ';
     $queryString = $this->addValueToQuery($node, $queryString);
     return $queryString;
 }