public function initializeFactsDatasetFrom($sourceFactsDataset) { if (isset($sourceFactsDataset)) { if (!isset($this->factsDataset)) { $this->initiateFactsDataset(); } $this->factsDataset->initializeFrom($sourceFactsDataset); } }
public function initializeSourceDatasetFrom($sourceSourceDataset) { if (isset($sourceSourceDataset)) { if (!isset($this->sourceDataset)) { $this->initiateSourceDataset(); } $this->sourceDataset->initializeFrom($sourceSourceDataset); } }
protected function mergeWithDataset(AbstractMetaModel $metamodel, array $filters = NULL, $namespace, $sourceDatasetName, $sourceDataset) { $datasetName = NameSpaceHelper::resolveNameSpace($namespace, $sourceDatasetName); // dataset/datasource/name if (!isset($sourceDataset->datasourceName)) { throw new IllegalStateException(t("'@datasetName' dataset definition does not contain a reference to datasource", array('@datasetName' => isset($sourceDataset->publicName) ? $sourceDataset->publicName : $datasetName))); } $sourceDataset->datasourceName = NameSpaceHelper::resolveNameSpace($namespace, $sourceDataset->datasourceName); // dataset/cache/datasource/name if (isset($sourceDataset->cache->datasourceName)) { $sourceDataset->cache->datasourceName = NameSpaceHelper::resolveNameSpace($namespace, $sourceDataset->cache->datasourceName); } $dataset = new DatasetMetaData(); $dataset->name = $datasetName; $dataset->initializeFrom($sourceDataset); $isDatasetAcceptable = $this->isMetaDataAcceptable($dataset, $filters); if ($isDatasetAcceptable) { $metamodel->registerDataset($dataset); } return $isDatasetAcceptable ? $dataset : NULL; }
protected function mergeWithDataset(AbstractMetaModel $metamodel, array $filters = NULL, $namespace, $sourceDatasetName, $sourceDataset) { $datasetName = NameSpaceHelper::resolveNameSpace($namespace, $sourceDatasetName); // dataset/datasource/name if (isset($sourceDataset->datasourceName)) { $sourceDataset->datasourceName = NameSpaceHelper::resolveNameSpace($namespace, $sourceDataset->datasourceName); } elseif (isset($namespace)) { $sourceDataset->datasourceName = $namespace; } else { throw new IllegalStateException(t( '%datasetName dataset definition does not contain a reference to datasource', array('%datasetName' => (isset($sourceDataset->publicName) ? $sourceDataset->publicName : $datasetName)))); } // datasets defined using .json refer to 'persistent' column if (isset($sourceDataset->columns)) { foreach ($sourceDataset->columns as $sourceColumn) { if (!isset($sourceColumn->persistence)) { $sourceColumn->persistence = ColumnMetaData::PERSISTENCE__STORAGE_CREATED; } } } $dataset = new DatasetMetaData(); $dataset->name = $datasetName; $dataset->initializeFrom($sourceDataset); $isDatasetAcceptable = $this->isMetaDataAcceptable($dataset, $filters); if ($isDatasetAcceptable) { $metamodel->registerDataset($dataset); } return $isDatasetAcceptable ? $dataset : NULL; }
protected function update(Import\ImportStream $stream, Import\ImportContext $context) { $datasets = $stream->get('datasets'); if (empty($datasets)) { return; } gd_datasource_set_active($context->get('datasourceName')); $metamodel = data_controller_get_metamodel(); $environment_metamodel = data_controller_get_environment_metamodel(); $datasource = $environment_metamodel->getDataSource($context->get('datasourceName')); foreach ( $datasets as $dataset ) { $existingDataset = GD_DatasetMetaModelLoaderHelper::findDatasetByUUID($metamodel->datasets, $dataset->uuid); if ( !$existingDataset ) { // map for re-linking dependent objects $dataset->originalName = $dataset->name; // create new name $newDatasetName = GD_NamingConvention::generateDatasetName(); $dataset->name = $newDatasetName; $dataset->source = $newDatasetName; $dataset->datasourceName = $datasource->name; } else { // map for re-linking dependent objects $dataset->originalName = $dataset->name; $dataset->name = $existingDataset->name; $dataset->source = $existingDataset->source; $dataset->datasourceName = $existingDataset->datasourceName; } } // prepare dataset columns for import $this->prepareColumns($datasets); // prepares the metadata object, has to be of type RecordMetaData foreach ( $datasets as $key => $dataset ) { $metadata = new DatasetMetaData(); $metadata->initializeFrom($dataset); $datasets[$key] = $metadata; } // ensure datasets are created in order to satisfy dependencies usort($datasets, array(new ReferencedDatasetComparator(), 'compare')); foreach ( $datasets as $dataset ) { $existingDataset = GD_DatasetMetaModelLoaderHelper::findDatasetByUUID($metamodel->datasets, $dataset->uuid); if ($existingDataset) { gd_data_controller_ddl_modify_dataset($dataset); } else { MetaModelFactory::getInstance()->startGlobalModification(); try { $transaction = db_transaction(); try { gd_data_controller_ddl_create_dataset($dataset); } catch (Exception $e) { $transaction->rollback(); throw $e; } } catch (Exception $e) { MetaModelFactory::getInstance()->finishGlobalModification(false); throw $e; } MetaModelFactory::getInstance()->finishGlobalModification(true); } } $stream->set('datasets',$datasets); }