/**
  * Constructs a new data format table
  * @param zibo\library\orm\definition\ModelTable $table Table containing the data formats
  * @param string $formatAction URL to the action for the format
  * @return null
  */
 public function __construct(ModelTable $table, $formatAction = null)
 {
     $formats = $table->getDataFormats();
     parent::__construct($formats);
     $this->setId(self::STYLE_ID);
     $this->addDecorator(new ZebraDecorator(new DataFormatDecorator($formatAction)));
 }
 /**
  * Copies a model table into another
  * @param zibo\library\orm\definition\ModelTable $source
  * @param zibo\library\orm\definition\ModelTable $destination
  * @return null
  */
 private function copyModel(ModelTable $source, ModelTable $destination)
 {
     $destination->setWillBlockDeleteWhenUsed($source->willBlockDeleteWhenUsed);
     $fields = $source->getFields();
     foreach ($fields as $field) {
         if ($field->getName() == ModelTable::PRIMARY_KEY) {
             continue;
         }
         $destination->addField($field);
     }
     $indexes = $source->getIndexes();
     foreach ($indexes as $index) {
         $destination->addIndex($index);
     }
     $dataFormats = $source->getDataFormats();
     foreach ($dataFormats as $name => $format) {
         $destination->setDataFormat($name, $format);
     }
 }
 public function testGetDataFormats()
 {
     $name = 'name';
     $table = new ModelTable('table');
     $formats = $table->getDataFormats(false);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(0, count($formats));
     $formats = $table->getDataFormats(true);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(1, count($formats));
     $this->assertTrue(array_key_exists(DataFormatter::FORMAT_TITLE, $formats));
     $table->setDataFormat(new DataFormat($name, 'format'));
     $formats = $table->getDataFormats(true);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(2, count($formats));
     $this->assertTrue(array_key_exists(DataFormatter::FORMAT_TITLE, $formats));
     $this->assertTrue(array_key_exists($name, $formats));
     $formats = $table->getDataFormats(false);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(1, count($formats));
     $this->assertFalse(array_key_exists(DataFormatter::FORMAT_TITLE, $formats));
     $this->assertTrue(array_key_exists($name, $formats));
     $table->setDataFormat(new DataFormat(DataFormatter::FORMAT_TITLE, 'format'));
     $formats = $table->getDataFormats(true);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(2, count($formats));
     $this->assertTrue(array_key_exists(DataFormatter::FORMAT_TITLE, $formats));
     $this->assertTrue(array_key_exists($name, $formats));
     $formats = $table->getDataFormats(false);
     $this->assertTrue(is_array($formats));
     $this->assertEquals(2, count($formats));
     $this->assertTrue(array_key_exists(DataFormatter::FORMAT_TITLE, $formats));
     $this->assertTrue(array_key_exists($name, $formats));
 }