/**
  * generates headers
  *
  * @param \Zend\Code\Generator\ClassGenerator $class
  * @param DataSetDescriptorInterface $dataSet
  */
 protected function generateHeaderProperty(ClassGenerator $class, DataSetDescriptorInterface $dataSet)
 {
     $property = new \Zend\Code\Generator\PropertyGenerator("headers");
     $property->setFlags(\Zend\Code\Generator\PropertyGenerator::FLAG_PROTECTED);
     $value = array();
     foreach ($dataSet->listGenerator() as $field) {
         $value[$field->getName()] = array('title' => ucfirst(preg_replace("/[^a-z0-9]/i", " ", $field->getName())), 'width' => '100', 'filters' => $this->getFieldType($field) == 'bool' ? array(null => 'All', 1 => 'True', 0 => 'False') : "text");
     }
     $value['edit'] = array('title' => 'Edit', 'width' => '100');
     $value['delete'] = array('title' => 'Delete', 'width' => '100');
     $property->setDefaultValue($value);
     $class->addPropertyFromGenerator($property);
 }
 /**
  * setups primary key for tabel acording to dataset fields descriptor
  *
  * @param ClassGenerator $class
  * @param DataSetDescriptorInterface $dataSet
  */
 protected function setupPrimaryKey(ClassGenerator $class, DataSetDescriptorInterface $dataSet)
 {
     foreach ($dataSet->listFields() as $name) {
         $field = $dataSet->getFieldDescriptor($name);
         if ($field instanceof AbstractFieldDescriptor && strpos($field->info(AbstractFieldDescriptor::KEY), 'PRI') !== false) {
             $keyNameProperty = new \Zend\Code\Generator\PropertyGenerator();
             $keyNameProperty->addFlag(\Zend\Code\Generator\PropertyGenerator::FLAG_PROTECTED)->setName('keyName');
             $keyNameProperty->setDefaultValue($name);
             $class->addPropertyFromGenerator($keyNameProperty);
             break;
         }
     }
 }