Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
26 / 26
DataPersister
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
9
100.00% covered (success)
100.00%
26 / 26
 __construct($configFileDir, $authenticationObj)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
3 / 3
 _initializeWithArray($configArray)
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
4 / 4
 persist($data)
100.00% covered (success)
100.00%
1 / 1
6
100.00% covered (success)
100.00%
19 / 19
<?php
/**
 *
 */
namespace aae\persistence {
    /**
     * @author Axel Ancona Esselmann
     * @package aae\persistence
     */
    class DataPersister {
        use \aae\abstr\Configurable;
        public $adapterFactory = null;
        public function __construct($configFileDir, $authenticationObj) {
            $this->initConfigurable($configFileDir);
            $this->adapterFactory = new AdapterFactory();
        }
        private function _initializeWithArray($configArray) {
            if (!array_key_exists("persistence", $configArray)) {
                throw new \Exception("Configuration data has to include a 'persistence' array.", 209141706);
            }
            $this->configs = $configArray;
        }
    
        /**
         * __functionDescription__
         * @param __type__ __parameterDescription__
         */
        public function persist($data) {
            $dataType = get_class($data);
            $adapterSettings = null;
            if (!array_key_exists($dataType, $this->configs['persistence'])) {
                throw new \Exception("No adapter specified in configurations for data of type '$dataType'", 209141719);
            }
            $adapterName = $this->configs['persistence'][$dataType];
            if (is_array($adapterName)) {
                $adapterName = $this->configs['persistence'][$dataType]['adapter'];
                if (is_array($adapterName)) {
                    $adapterName = $this->configs['persistence'][$dataType]['adapter']['class'];
                    if (array_key_exists("settings", $this->configs['persistence'][$dataType]['adapter'])) {
                        $adapterSettings = $this->configs['persistence'][$dataType]['adapter']['settings'];
                    }
                }
            }
            $adapter = $this->adapterFactory->build($adapterName);
            if (!$adapter instanceof \aae\persistence\AdapterInterface) {
                throw new \Exception("The adapter for '$dataType' does not implement the interface '\\aae\\persistence\\AdapterInterface'", 209141836);
            }
            
            $result = $adapter->persist($data, $adapterSettings);
            return $result;
        }
    }
}