public function getConnectionParameters()
    {

        // load the datasource node
        $datasourceNode = $this->getDatasourceNode();

        // initialize the database node
        $databaseNode = $datasourceNode->getDatabase();

        // initialize the connection parameters
        $connectionParameters = array(
            AbstractDatabaseStep::CONNECTION_PARAM_DRIVER => $databaseNode->getDriver()->getNodeValue()->__toString(),
            AbstractDatabaseStep::CONNECTION_PARAM_USER => $databaseNode->getUser()->getNodeValue()->__toString(),
            AbstractDatabaseStep::CONNECTION_PARAM_PASSWORD => $databaseNode->getPassword()->getNodeValue()->__toString()
        );

        // initialize the path to the database when we use sqlite for example
        if ($databaseNode->getPath()) {
            if ($path = $databaseNode->getPath()->getNodeValue()->__toString()) {
                $connectionParameters[AbstractDatabaseStep::CONNECTION_PARAM_PATH] = $this->getWebappPath() . DIRECTORY_SEPARATOR . $path;
            }
        }

        // add database name if using another PDO driver than sqlite
        if ($databaseNode->getDatabaseName()) {
            $databaseName = $databaseNode->getDatabaseName()->getNodeValue()->__toString();
            $connectionParameters[AbstractDatabaseStep::CONNECTION_PARAM_DATABASENAME] = $databaseName;
        }

        // add database host if using another PDO driver than sqlite
        if ($databaseNode->getDatabaseHost()) {
            $databaseHost = $databaseNode->getDatabaseHost()->getNodeValue()->__toString();
            $connectionParameters[AbstractDatabaseStep::CONNECTION_PARAM_HOST] = $databaseHost;
        }

        // set the connection parameters
        return $connectionParameters;
    }