public static function getNewDatasetName ( $datasetUuid, $datasets ) { $logicalDatasetUuid = StarSchemaNamingConvention::findFactsOwner($datasetUuid); if (isset($logicalDatasetUuid)) { $dataset = GD_DatasetMetaModelLoaderHelper::getDatasetByUUID($datasets, $logicalDatasetUuid); return StarSchemaNamingConvention::getFactsRelatedName($dataset->name); } else { $dataset = GD_DatasetMetaModelLoaderHelper::getDatasetByUUID($datasets,$datasetUuid); return $dataset->name; } }
public static function getExportDatasetName ( $datasetName, MetaModel $metamodel ) { $logicalDatasetName = StarSchemaNamingConvention::findFactsOwner($datasetName); if (isset($logicalDatasetName)) { $dataset = $metamodel->getDataset($logicalDatasetName); return isset($dataset->uuid) ? StarSchemaNamingConvention::getFactsRelatedName($dataset->uuid) : null; } else { $dataset = $metamodel->getDataset($datasetName); return isset($dataset->uuid) ? $dataset->uuid : null; } }
public function createDimensionStorage(DataControllerCallContext $callcontext, DataSourceStructureHandler $datasourceStructureHandler, DatasetMetaData $logicalDataset, $columnName) { parent::createDimensionStorage($callcontext, $datasourceStructureHandler, $logicalDataset, $columnName); $lookupDatasetName = StarSchemaNamingConvention::getAttributeRelatedName($logicalDataset->name, $columnName); $request = new DatasetStorageRequest($lookupDatasetName); LogHelper::log_debug($request); $datasourceStructureHandler->createDatasetStorage($callcontext, $request); $factsDatasetName = StarSchemaNamingConvention::getFactsRelatedName($logicalDataset->name); $request = new UpdateDatasetStorageRequest($factsDatasetName); $request->addOperation(new CreateColumnReferenceOperation($columnName, $lookupDatasetName)); LogHelper::log_debug($request); $datasourceStructureHandler->updateDatasetStorage($callcontext, $request); }
protected function submitRecordBatch(RecordMetaData $recordMetaData) { $dataManipulationController = data_controller_dml_get_instance(); $identifierLoader = new StarSchemaLookupIdentifierLoader(); $identifierLoader->load($this->datasetName, $recordMetaData, $this->recordsHolder); $factsDatasetName = StarSchemaNamingConvention::getFactsRelatedName($this->datasetName); if ($recordMetaData->findKeyColumns() == NULL) { $this->insertedRecordCount += $dataManipulationController->insertDatasetRecordBatch($factsDatasetName, $this->recordsHolder); } else { // even if we truncate the dataset we still need to support several references to the same record list($insertedRecordCount, $updatedRecordCount, $deletedRecordCount) = $dataManipulationController->insertOrUpdateOrDeleteDatasetRecordBatch($factsDatasetName, $this->recordsHolder); $this->insertedRecordCount += $insertedRecordCount; $this->updatedRecordCount += $updatedRecordCount; $this->deletedRecordCount += $deletedRecordCount; } }
public static function initializeFromDataset(MetaModel $metamodel, DatasetMetaData $dataset) { $cubeName = $dataset->name; $cube = $metamodel->unregisterCube($cubeName); // preparing cube properties $cube->description = $dataset->description; // preparing facts dataset $factsDataset = $cube->initiateFactsDataset(); $factsDataset->name = $cube->factsDatasetName; $factsDataset->publicName = $dataset->publicName; $factsDataset->description = $dataset->description; $factsDataset->datasourceName = $dataset->datasourceName; $factsDataset->markAsPrivate(); $factsDataset->source = StarSchemaNamingConvention::getFactsRelatedName($dataset->source); // calculating facts dataset aliases if (isset($dataset->aliases)) { foreach ($dataset->aliases as $alias) { $factsDataset->aliases[] = StarSchemaNamingConvention::getFactsRelatedName($alias); } } // preparing facts dataset columns and cube dimensions foreach ($dataset->getColumns(FALSE) as $logicalColumn) { // we need to preserve original column index $column = $factsDataset->initiateColumn(); $column->name = $logicalColumn->name; $column->columnIndex = $logicalColumn->columnIndex; $column->publicName = $logicalColumn->publicName; $column->description = $logicalColumn->description; $column->key = $logicalColumn->key; $column->persistence = $logicalColumn->persistence; $column->source = $logicalColumn->source; $column->visible = $logicalColumn->visible; $column->used = $logicalColumn->used; $column->branches = ArrayHelper::copy($logicalColumn->branches); $factsDataset->registerColumnInstance($column); self::initializeDimensionFromColumn($metamodel, $cube, $dataset, $logicalColumn->name); if (isset($column->type->applicationType)) { $column->type->logicalApplicationType = $logicalColumn->type->applicationType; } else { // setting column type to original column type $column->type->applicationType = $logicalColumn->type->applicationType; } } // preparing cube measures // we do that in a separate loop because a calculated column can point to another calculated column with higher column index foreach ($dataset->getColumns(FALSE) as $logicalColumn) { self::initializeMeasuresFromColumn($cube, $dataset, $logicalColumn->name); } // marking that the facts dataset object contains complete meta data & registering it in meta model $factsDataset->markAsComplete(); $metamodel->registerDataset($factsDataset); // preparing cube measures self::registerCubeMeasures($cube); $metamodel->registerCube($cube); return $cube; }