public static function containsCategory(ColumnMetaData $column, $category) { if (!isset($column->type->applicationType)) { return FALSE; } $type = $column->type->applicationType; if ($type == NumberDataTypeHandler::DATA_TYPE || $type == CurrencyDataTypeHandler::DATA_TYPE || $type == PercentDataTypeHandler::DATA_TYPE) { return $category == self::FACT; } elseif ($type == IntegerDataTypeHandler::DATA_TYPE) { $calculatedCategory = $column->isKey() ? self::ATTRIBUTE : self::FACT; // if logical application type is a reference this column is an attribute if ($calculatedCategory != self::ATTRIBUTE && isset($column->type->logicalApplicationType)) { list($referencedDatasetName) = ReferencePathHelper::splitReference($column->type->logicalApplicationType); if (isset($referencedDatasetName)) { $calculatedCategory = self::ATTRIBUTE; } } return $category == $calculatedCategory; } else { return $category == self::ATTRIBUTE; } }
protected function prepareAttributeColumnUIMetaData(array $datasetStack, $referencePath, CubeMetaData $cube, $dimensionName, $dimensionReferencePath, DatasetMetaData $dataset = NULL, ColumnMetaData $column) { $dimensionColumnName = isset($dimensionReferencePath) ? self::prepareReferencedElementName($dimensionReferencePath, $dataset->name, $column->name) : $column->name; $attributeUIMetaData = new AttributeColumnUIMetaData(); $attributeUIMetaData->name = self::prepareAttributeUIMetaDataName($referencePath, $cube->factsDatasetName, $dimensionName, $dimensionColumnName); $attributeUIMetaData->publicName = $column->publicName; $attributeUIMetaData->description = $column->description; $attributeUIMetaData->columnIndex = $column->columnIndex; $attributeUIMetaData->type = clone $column->type; $attributeUIMetaData->datasetName = $cube->factsDatasetName; if ($column->isKey()) { $attributeUIMetaData->isSelectable = FALSE; } if (!$column->isUsed()) { $attributeUIMetaData->isSelectable = FALSE; } if (!$column->isKey()) { $this->prepareAttributeColumnUIMetaData4ColumnBranch($datasetStack, $attributeUIMetaData, $referencePath, $cube, $dimensionName, $dimensionReferencePath, $dataset, $column); } list($referencedDatasetName) = ReferencePathHelper::splitReference($column->type->getLogicalApplicationType()); if (isset($referencedDatasetName)) { $branchReferencePath = NULL; if (isset($dataset)) { $branchReferencePath = isset($dimensionReferencePath) ? self::prepareReferencedElementName($dimensionReferencePath, $dataset->name, $column->name) : ReferencePathHelper::assembleReference($dataset->name, $column->name); } $this->generateColumnUIMetaData4DimensionDataset( $datasetStack, $attributeUIMetaData, $referencePath, $cube, $dimensionName, $branchReferencePath, $referencedDatasetName); } return $attributeUIMetaData; }