/**
  * Registers the fieldset in the Service container.
  *
  * The FieldSet is registered as 'rollerworks_search.fieldset.[FieldSetName]'.
  *
  * @param FieldSet $fieldSet
  */
 public function register(FieldSet $fieldSet)
 {
     $fieldSetDef = new Definition('Rollerworks\\Component\\Search\\FieldSet');
     $fieldSetDef->addArgument($fieldSet->getName());
     $fieldSetDef->addTag('rollerworks_search.fieldset', ['name' => $fieldSet->getName()]);
     foreach ($fieldSet->all() as $name => $field) {
         $fieldDef = new Definition();
         if (!empty($field['model_class'])) {
             $this->setFactory($fieldDef, 'rollerworks_search.factory', 'createFieldForProperty');
             $fieldDef->addArgument($field['model_class']);
             $fieldDef->addArgument($field['model_property']);
         } else {
             $this->setFactory($fieldDef, 'rollerworks_search.factory', 'createField');
         }
         $fieldDef->addArgument($name);
         $fieldDef->addArgument($field['type']);
         $fieldDef->addArgument($field['options']);
         $fieldDef->addArgument($field['required']);
         $fieldSetDef->addMethodCall('set', [$name, $fieldDef]);
     }
     $this->container->setDefinition(sprintf('rollerworks_search.fieldset.%s', $fieldSet->getName()), $fieldSetDef);
 }
 /**
  * Returns the configured FieldSet object.
  *
  * @return FieldSet
  */
 public function getFieldSet()
 {
     $fieldSet = new FieldSet($this->name);
     foreach ($this->fields as $name => $field) {
         $fieldSet->set($name, $field['type'], $field['class'], $field['property'], false, $field['options']);
     }
     return $fieldSet;
 }