protected function getMetaDataStorageProperties(DataControllerCallContext $callcontext, $sourceDatasetName) {
        $metamodel = data_controller_get_metamodel();

        $dataset = $metamodel->getDataset($sourceDatasetName);

        $databaseName = $dataset->source->database;

        $namespace = NameSpaceHelper::getNameSpace($dataset->name);

        $metadataDatasetName = NameSpaceHelper::addNameSpace($namespace, self::$DATASET__METADATA);
        $schemaDocumentId = self::$PROPERTY__DOCUMENT_IDENTIFIER__SCHEMA_TEMPLATE . '@' . $databaseName;

        return array($metadataDatasetName, $schemaDocumentId);
    }
    protected function getDatasetHandler(DataControllerCallContext $callcontext, $datasetName) {
        $metamodel = data_controller_get_metamodel();

        $dataset = $metamodel->getDataset($datasetName);

        $namespace = NameSpaceHelper::getNameSpace($dataset->datasourceName);
        $classname = $dataset->source;

        $foundScriptName = NULL;

        // TODO load the configuration only once when instance of the class is initialized
        // reuse the cached data here to look for PHP script
        $metamodelConfigurations = module_invoke_all('dp_metamodel');
        foreach ($metamodelConfigurations as $metamodelConfiguration) {
            $path = $metamodelConfiguration['path'];

            $scriptName = "$path/metamodel/metamodel/$namespace/php/" . $classname . '.php';
            if (file_exists($scriptName)) {
                if (isset($foundScriptName)) {
                    throw new IllegalStateException(t(
                    	"Found several PHP scripts to support '@className' dataset: [@previousScriptName, @scriptName]",
                        array('@className' => $classname, '@previousScriptName' => $foundScriptName, '@scriptName' => $scriptName)));
                }

                $foundScriptName = $scriptName;
            }
        }

        if (isset($foundScriptName)) {
            require_once($foundScriptName);
        }
        else {
            throw new IllegalStateException(t("Could not find PHP script to support '@datasetName' dataset", array('@datasetName' => $dataset->publicName)));
        }

        return new $classname;
    }