2011-04-08 23:11:46 +02:00
|
|
|
<?php
|
|
|
|
|
2011-04-10 23:08:51 +02:00
|
|
|
namespace FOQ\ElasticaBundle\DependencyInjection;
|
2011-04-08 23:11:46 +02:00
|
|
|
|
|
|
|
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
|
|
|
|
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
|
|
|
|
|
|
|
class Configuration
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Generates the configuration tree.
|
|
|
|
*
|
|
|
|
* @return \Symfony\Component\DependencyInjection\Configuration\NodeInterface
|
|
|
|
*/
|
|
|
|
public function getConfigTree()
|
|
|
|
{
|
|
|
|
$treeBuilder = new TreeBuilder();
|
2011-04-10 23:08:51 +02:00
|
|
|
$rootNode = $treeBuilder->root('foq_elastica', 'array');
|
|
|
|
|
|
|
|
$this->addClientsSection($rootNode);
|
|
|
|
$this->addIndexesSection($rootNode);
|
|
|
|
|
|
|
|
$rootNode
|
|
|
|
->children()
|
|
|
|
->scalarNode('default_client')->end()
|
2011-04-12 04:23:29 +02:00
|
|
|
->scalarNode('default_index')->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
;
|
2011-04-08 23:11:46 +02:00
|
|
|
|
|
|
|
return $treeBuilder->buildTree();
|
|
|
|
}
|
2011-04-10 23:08:51 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the configuration for the "clients" key
|
|
|
|
*/
|
|
|
|
private function addClientsSection(ArrayNodeDefinition $rootNode)
|
|
|
|
{
|
|
|
|
$rootNode
|
|
|
|
->fixXmlConfig('client')
|
|
|
|
->children()
|
|
|
|
->arrayNode('clients')
|
|
|
|
->useAttributeAsKey('id')
|
|
|
|
->prototype('array')
|
|
|
|
->performNoDeepMerging()
|
|
|
|
->children()
|
|
|
|
->scalarNode('host')->defaultValue('localhost')->end()
|
|
|
|
->scalarNode('port')->defaultValue('9000')->end()
|
2011-05-11 18:21:13 +02:00
|
|
|
->scalarNode('timeout')->end()
|
|
|
|
->scalarNode('headers')->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the configuration for the "indexes" key
|
|
|
|
*/
|
|
|
|
private function addIndexesSection(ArrayNodeDefinition $rootNode)
|
|
|
|
{
|
|
|
|
$rootNode
|
|
|
|
->fixXmlConfig('index')
|
|
|
|
->children()
|
|
|
|
->arrayNode('indexes')
|
2011-04-14 00:04:49 +02:00
|
|
|
->useAttributeAsKey('name')
|
2011-04-10 23:08:51 +02:00
|
|
|
->prototype('array')
|
|
|
|
->performNoDeepMerging()
|
|
|
|
->children()
|
|
|
|
->scalarNode('client')->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->arrayNode('type_prototype')
|
|
|
|
->children()
|
|
|
|
->arrayNode('doctrine')
|
|
|
|
->children()
|
|
|
|
->scalarNode('driver')->end()
|
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
|
|
|
->arrayNode('provider')
|
|
|
|
->children()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
|
|
|
->scalarNode('batch_size')->defaultValue(100)->end()
|
|
|
|
->scalarNode('clear_object_manager')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-06-07 20:13:34 +02:00
|
|
|
->arrayNode('listener')
|
|
|
|
->children()
|
|
|
|
->scalarNode('insert')->defaultTrue()->end()
|
|
|
|
->scalarNode('update')->defaultTrue()->end()
|
|
|
|
->scalarNode('delete')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-27 22:24:29 +02:00
|
|
|
->arrayNode('finder')
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('elastica_to_model_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('hydrate')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('model_to_elastica_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-09-12 17:33:00 +02:00
|
|
|
->variableNode('settings')->end()
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
2011-04-14 00:04:49 +02:00
|
|
|
->append($this->getTypesNode())
|
2011-04-10 23:08:51 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
}
|
2011-04-14 00:04:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "types".
|
|
|
|
*/
|
|
|
|
protected function getTypesNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('types');
|
|
|
|
|
2011-04-15 21:18:36 +02:00
|
|
|
$node
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('array')
|
|
|
|
->treatNullLike(array())
|
2011-04-20 22:53:59 +02:00
|
|
|
->children()
|
|
|
|
->arrayNode('doctrine')
|
|
|
|
->children()
|
|
|
|
->scalarNode('driver')->end()
|
|
|
|
->scalarNode('model')->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('identifier')->defaultValue('id')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->arrayNode('provider')
|
|
|
|
->children()
|
|
|
|
->scalarNode('query_builder_method')->defaultValue('createQueryBuilder')->end()
|
|
|
|
->scalarNode('batch_size')->defaultValue(100)->end()
|
|
|
|
->scalarNode('clear_object_manager')->defaultTrue()->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('service')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
2011-06-11 01:03:17 +02:00
|
|
|
->arrayNode('listener')
|
|
|
|
->children()
|
|
|
|
->scalarNode('insert')->defaultTrue()->end()
|
|
|
|
->scalarNode('update')->defaultTrue()->end()
|
|
|
|
->scalarNode('delete')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->arrayNode('finder')
|
|
|
|
->children()
|
2011-04-27 09:59:04 +02:00
|
|
|
->scalarNode('service')->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
2011-06-11 01:03:17 +02:00
|
|
|
->end()
|
2011-04-27 09:59:04 +02:00
|
|
|
->arrayNode('elastica_to_model_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('hydrate')->defaultTrue()->end()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->arrayNode('model_to_elastica_transformer')
|
|
|
|
->addDefaultsIfNotSet()
|
|
|
|
->children()
|
|
|
|
->scalarNode('service')->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-20 22:53:59 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
->end()
|
2011-04-15 21:18:36 +02:00
|
|
|
->append($this->getMappingsNode())
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the array node used for "mappings".
|
|
|
|
*/
|
|
|
|
protected function getMappingsNode()
|
|
|
|
{
|
|
|
|
$builder = new TreeBuilder();
|
|
|
|
$node = $builder->root('mappings');
|
|
|
|
|
2011-04-14 00:04:49 +02:00
|
|
|
$node
|
|
|
|
->useAttributeAsKey('name')
|
|
|
|
->prototype('array')
|
|
|
|
->treatNullLike(array())
|
2011-04-17 19:55:46 +02:00
|
|
|
->addDefaultsIfNotSet()
|
2011-04-14 00:04:49 +02:00
|
|
|
->children()
|
2011-04-17 19:55:46 +02:00
|
|
|
->scalarNode('type')->defaultValue('string')->end()
|
2011-04-15 21:18:36 +02:00
|
|
|
->scalarNode('boost')->end()
|
|
|
|
->scalarNode('store')->end()
|
|
|
|
->scalarNode('index')->end()
|
2011-09-12 17:33:00 +02:00
|
|
|
->scalarNode('analyzer')->end()
|
2011-04-14 00:04:49 +02:00
|
|
|
->end()
|
|
|
|
->end()
|
|
|
|
;
|
|
|
|
|
|
|
|
return $node;
|
|
|
|
}
|
2011-04-08 23:11:46 +02:00
|
|
|
}
|