Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
93.33% |
14 / 15 |
CRAP | |
97.67% |
42 / 43 |
DataArray | |
0.00% |
0 / 1 |
|
93.33% |
14 / 15 |
22 | |
97.67% |
42 / 43 |
__construct(array $data = null) | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
getCategories() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
hasCategory($category) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
addDocument($category, $document) | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
read() | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
getData() | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
setData(array $data) | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
|||
write() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
serialize() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
unserialize($data) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
setConfig(DataSourceConfiguration $config) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getConfig() | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
setProcessor(Processor $processor) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getProcessor() | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
prepare() | |
100.00% |
1 / 1 |
3 | |
100.00% |
4 / 4 |
<?php | |
/** | |
* This file is part of the Statistical Classifier package. | |
* | |
* (c) Cam Spiers <camspiers@gmail.com> | |
* | |
* For the full copyright and license information, please view the LICENSE | |
* file that was distributed with this source code. | |
*/ | |
namespace Camspiers\StatisticalClassifier\DataSource; | |
use Camspiers\StatisticalClassifier\Config\DataSourceConfiguration; | |
use RuntimeException; | |
use Serializable; | |
use Symfony\Component\Config\Definition\Processor; | |
/** | |
* @author Cam Spiers <camspiers@gmail.com> | |
* @package Statistical Classifier | |
*/ | |
class DataArray implements DataSourceInterface, Serializable | |
{ | |
/** | |
* An array to hold the sources data | |
* | |
* Should be in the form: | |
* array( | |
* array( | |
* 'category' => 'somecategory', | |
* 'document' => 'Some document' | |
* ) | |
* ) | |
* @var array | |
*/ | |
protected $data = array(); | |
/** | |
* Holds the config class that setData needs to conforms to | |
* @var | |
*/ | |
protected $config; | |
/** | |
* Processes the data with the config | |
* @var | |
*/ | |
protected $processor; | |
/** | |
* Creates the data array | |
* @param array $data The initial data | |
*/ | |
public function __construct(array $data = null) | |
{ | |
if (is_array($data)) { | |
$this->setData($data); | |
} | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function getCategories() | |
{ | |
return array_keys($this->data); | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function hasCategory($category) | |
{ | |
$this->prepare(); | |
return isset($this->data[$category]); | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function addDocument($category, $document) | |
{ | |
if (!isset($this->data[$category])) { | |
$this->data[$category] = array(); | |
} | |
$this->data[$category][] = $document; | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
protected function read() | |
{ | |
return $this->data; | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function getData() | |
{ | |
$this->prepare(); | |
return $this->data; | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function setData(array $data) | |
{ | |
$data = $this->getProcessor()->processConfiguration( | |
$this->getConfig(), | |
array( | |
$data | |
) | |
); | |
foreach ($data as $document) { | |
$this->addDocument($document['category'], $document['document']); | |
} | |
} | |
/** | |
* @{inheritdoc} | |
*/ | |
public function write() | |
{ | |
throw new RuntimeException('This data source cannot be written'); | |
} | |
/** | |
* Serialize the class | |
* @return string The serialized data | |
*/ | |
public function serialize() | |
{ | |
return serialize($this->getData()); | |
} | |
/** | |
* Restore the serialized class | |
* @param string $data The serialized data | |
* @return null | |
*/ | |
public function unserialize($data) | |
{ | |
$this->data = unserialize($data); | |
} | |
/** | |
* @param DataSourceConfiguration $config | |
*/ | |
public function setConfig(DataSourceConfiguration $config) | |
{ | |
$this->config = $config; | |
} | |
/** | |
* Return the config for the data | |
* @return mixed | |
*/ | |
public function getConfig() | |
{ | |
if (null === $this->config) { | |
$this->setConfig(new DataSourceConfiguration()); | |
} | |
return $this->config; | |
} | |
/** | |
* Sets the processor for the config | |
* @param Processor $processor | |
*/ | |
protected function setProcessor(Processor $processor) | |
{ | |
$this->processor = $processor; | |
} | |
/** | |
* Gets the processor | |
* @return mixed | |
*/ | |
protected function getProcessor() | |
{ | |
if (null === $this->processor) { | |
$this->setProcessor(new Processor()); | |
} | |
return $this->processor; | |
} | |
/** | |
* Read the data and set it | |
*/ | |
protected function prepare() | |
{ | |
if (!is_array($this->data) || count($this->data) == 0) { | |
$this->setData($this->read()); | |
} | |
} | |
} |