protected function registerRecordImpl(array &$records = NULL, $record) {
        parent::registerRecordImpl($records, $record);

        $value = NULL;
        if (isset($this->columnName)) {
            $value = isset($record[$this->columnName]) ? $record[$this->columnName] : NULL;
        }
        else {
            $count = count($record);
            switch ($count) {
                case 0:
                    // it is the same as NULL
                    break;
                case 1:
                    $value = reset($record);
                    break;
                default:
                    throw new IllegalArgumentException(t('Only one column is supported by this result formatter'));
            }
        }

        if (isset($value)) {
            if ($this->storage == self::STORAGE__KEY) {
                $records[$value] = TRUE;
            }
            elseif ($this->storage == self::STORAGE__VALUE) {
                $records[] = $value;
            }
        }

        return TRUE;
    }
    protected function registerRecordImpl(array &$records = NULL, $record) {
        parent::registerRecordImpl($records, $record);

        $recordKey = NULL;
        foreach ($this->keyColumnNames as $keyColumnName) {
            $recordKey[] = isset($record[$keyColumnName]) ? $record[$keyColumnName] : NULL;
        }

        $key = ArrayHelper::prepareCompositeKey($recordKey);
        if (isset($records[$key])) {
            if ($this->isColumnValueUnique) {
                throw new IllegalArgumentException(t(
                	'Found several records for the key: %key',
                    array('%key' => ArrayHelper::serialize($recordKey, ', ', TRUE, TRUE))));
            }

            $records[$key][] = $record;
        }
        else {
            if ($this->isColumnValueUnique) {
                $records[$key] = $record;
            }
            else {
                $records[$key][] = $record;
            }
        }

        return TRUE;
    }
 public function formatRecord(array &$records = NULL, $record)
 {
     $result = parent::formatRecord($records, $record);
     if ($result) {
         $this->errorUnsupportedChainOfResultFormatters();
     }
     $object = new stdClass();
     foreach ($record as $columnName => $columnValue) {
         $index = strpos($columnName, '.');
         if ($index === FALSE) {
             $object->{$columnName} = $columnValue;
         } else {
             $properties = explode('.', $columnName);
             $obj = $object;
             for ($i = 0, $count = count($properties); $i < $count; $i++) {
                 $property = $properties[$i];
                 if ($i == $count - 1) {
                     $obj->{$property} = $columnValue;
                 } else {
                     if (!isset($obj->{$property})) {
                         $obj->{$property} = new stdClass();
                     }
                     $obj = $obj->{$property};
                 }
             }
         }
     }
     $records[] = $object;
     return TRUE;
 }
    protected function formatColumnNameImpl($uiMetaDataName) {
        $columnName = NULL;

        $formattedUIMetaDataName = parent::formatColumnNameImpl($uiMetaDataName);

        list($elementNameSpace, $elementName) = AbstractDatasetUIMetaDataGenerator::splitElementUIMetaDataName($formattedUIMetaDataName);
        switch ($elementNameSpace) {
            case AbstractAttributeUIMetaData::NAME_SPACE:
                list($dimensionName, $dimensionColumnName) = ParameterNameHelper::split($elementName);
                // TODO do we need to check for resource?
                list(, $columnName) = ReferencePathHelper::splitReference($dimensionName);

                $column = $this->dataset->getColumn($dimensionName);
                if ($column->type->getReferencedDatasetName() != NULL) {
                    // this column should not be used
                    if (isset($dimensionColumnName) && $column->type->getReferencedColumnName() != $dimensionColumnName) {
                        $columnName = NULL;
                    }
                }

                break;
            case AbstractMeasureUIMetaData::NAME_SPACE:
                throw new IllegalArgumentException(t('Measures are not supported by this result formatter'));
        }

        return $columnName;
    }
    protected function finishImpl(array &$records = NULL) {
        parent::finishImpl($records);

        if (!isset($records)) {
            return;
        }

        $valueMin = $valueMax = NULL;
        // preparing minimum and maximum values
        foreach ($records as $record) {
            if (!isset($record[$this->valueColumnName])) {
                continue;
            }

            $value = $record[$this->valueColumnName];

            $valueMin = MathHelper::min($valueMin, $value);
            $valueMax = MathHelper::max($value, $valueMax);
        }
        $valueRange = $valueMax - $valueMin;

        // generating weighted grade
        foreach ($records as &$record) {
            if (!isset($record[$this->valueColumnName])) {
                continue;
            }

            $value = $record[$this->valueColumnName];

            $rank = ($valueRange == 0) ? 1 : ($value - $valueMin) / $valueRange;
            $record[$this->memberRankColumnName] = $rank;
        }
        unset($record);
    }
    protected function registerRecordImpl(array &$records = NULL, $record) {
        parent::registerRecordImpl($records, $record);

        if (isset($records)) {
            // trying to find a record which could be reused
            foreach ($records as &$existingRecord) {
                $isRecordMatched = TRUE;
                foreach ($this->formattedGroupByColumnNames as $groupByColumnName) {
                    if (isset($existingRecord[$groupByColumnName])) {
                        if (isset($record[$groupByColumnName])) {
                            if ($existingRecord[$groupByColumnName] !== $record[$groupByColumnName]) {
                                $isRecordMatched = FALSE;
                            }
                        }
                        else {
                            $isRecordMatched = FALSE;
                        }

                    }
                    elseif (isset($record[$groupByColumnName])) {
                        $isRecordMatched = FALSE;
                    }

                    if (!$isRecordMatched) {
                        break;
                    }
                }

                if ($isRecordMatched) {
                    $this->setRecordSubjectColumnValues($existingRecord, $record);
                    return TRUE;
                }
            }
            unset($existingRecord);
        }

        // preparing new record
        $newRecord = NULL;
        foreach ($record as $name => $value) {
            if ($name === $this->formattedEnumerationColumnName) {
                continue;
            }

            if (isset($this->formattedSubjectColumnNames)) {
                if (in_array($name, $this->formattedSubjectColumnNames)) {
                    continue;
                }
            }
            elseif (!in_array($name, $this->formattedGroupByColumnNames)) {
                continue;
            }

            $newRecord[$name] = $value;
        }
        $this->setRecordSubjectColumnValues($newRecord, $record);
        $records[] = $newRecord;

        return TRUE;
    }
 public function formatPropertyValue($propertyName, $propertyValue)
 {
     $formattedPropertyValue = parent::formatPropertyValue($propertyName, $propertyValue);
     if ((!isset($this->propertyNames) || array_search($propertyName, $this->propertyNames) !== FALSE) && is_string($formattedPropertyValue)) {
         $formattedPropertyValue = check_plain($formattedPropertyValue);
     }
     return $formattedPropertyValue;
 }
 public function finish(array &$records = NULL) {
     if (isset($records)) {
         $this->finishImpl($records);
     }
     if (isset($records) && isset($this->parent)) {
         $this->parent->finish($records);
     }
 }
    protected function formatColumnValueImpl($formattedColumnName, $columnValue) {
        $formattedColumnValue = parent::formatColumnValueImpl($formattedColumnName, $columnValue);

        if ((!isset($this->columnNames) || isset($this->columnNames[$formattedColumnName])) && is_string($formattedColumnValue)) {
            $formattedColumnValue = check_plain($formattedColumnValue);
        }

        return $formattedColumnValue;
    }
    protected function finishImpl(array &$records = NULL) {
        parent::finishImpl($records);

        if (!isset($records)) {
            return;
        }

        // first row in a table is list of column names
        $columnNames = $this->columnNames;
        if (!isset($columnNames)) {
            foreach ($this->assembledColumnNames as $columnName => $index) {
                $columnNames[$index] = $columnName;
            }
        }
        array_unshift($records, $columnNames);
    }
 public function __construct($theView, $showHeader = TRUE, ResultFormatter $parent = NULL)
 {
     parent::__construct($parent);
     $this->view = $theView;
     $this->header = $showHeader;
 }
 protected function adjustPropertyName($propertyName)
 {
     $adjustedPropertyName = parent::adjustPropertyName($propertyName);
     return str_replace(ParameterHelper::$COLUMN_NAME_DELIMITER__CODE, ParameterHelper::$COLUMN_NAME_DELIMITER__DATABASE, $adjustedPropertyName);
 }
    protected function formatColumnNameImpl($columnName) {
        $formattedColumnName = parent::formatColumnNameImpl($columnName);

        return isset($this->columnMappings[$formattedColumnName]) ? $this->columnMappings[$formattedColumnName] : NULL;
    }
 protected function adjustPropertyName($propertyName)
 {
     $adjustedPropertyName = parent::adjustPropertyName($propertyName);
     return isset($this->columnMappings[$adjustedPropertyName]) ? $this->columnMappings[$adjustedPropertyName] : NULL;
 }