public function truncateColumnStorage(DataControllerCallContext $callcontext, DataSourceStructureHandler $datasourceStructureHandler, DatasetMetaData $dataset, $columnName) {
        $logicalColumn = $this->logicalDataset->getColumn($columnName);

        $handler = DimensionFactory::getInstance()->getHandler($logicalColumn->type->getLogicalApplicationType());
        $handler->truncateDimensionStorage($callcontext, $datasourceStructureHandler, $this->logicalDataset, $columnName);

        parent::truncateColumnStorage($callcontext, $datasourceStructureHandler, $dataset, $columnName);
    }
    public function createColumnStorage(DataControllerCallContext $callcontext, DataSourceStructureHandler $datasourceStructureHandler, DatasetMetaData $dataset, $columnName, $stage) {
        parent::createColumnStorage($callcontext, $datasourceStructureHandler, $dataset, $columnName, $stage);

        if ($stage == DatasetStorageObserver::STAGE__AFTER) {
            $newLogicalColumn = $this->newLogicalDataset->getColumn($columnName);
            $newColumn = $dataset->getColumn($columnName);

            $newLogicalColumn->persistence = $newColumn->persistence;

            $handler = DimensionFactory::getInstance()->getHandler($newLogicalColumn->type->getLogicalApplicationType());
            $handler->createDimensionStorage($callcontext, $datasourceStructureHandler, $this->newLogicalDataset, $columnName);
        }
    }
    public function __construct() {
        parent::__construct();

        $this->handlerConfigurations = module_invoke_all('dp_dimension');
    }
    public function dropColumnStorage(DataControllerCallContext $callcontext, DataSourceStructureHandler $datasourceStructureHandler, DatasetMetaData $dataset, $columnName, $stage) {
        if ($stage == DatasetStorageObserver::STAGE__AFTER) {
            $originalLogicalColumn = $this->originalLogicalDataset->getColumn($columnName);
            $originalColumn = $dataset->getColumn($columnName);

            $originalLogicalColumn->persistence = $originalColumn->persistence;
            $originalLogicalColumn->used = $originalColumn->used;

            $handler = DimensionFactory::getInstance()->getHandler($originalLogicalColumn->type->getLogicalApplicationType());
            $handler->dropDimensionStorage($callcontext, $datasourceStructureHandler, $this->originalLogicalDataset, $columnName);
        }

        parent::dropColumnStorage($callcontext, $datasourceStructureHandler, $dataset, $columnName, $stage);
    }