protected function execute(InputInterface $input, OutputInterface $output)
 {
     $statsTable = $this->doExecute($input, $output);
     if (!$statsTable instanceof StatsTable) {
         throw new RuntimeException('StatsTable expected');
     }
     $dumper = null;
     if ($filename = $input->getOption('xls')) {
         $excelDumperOptions = array();
         if (method_exists($this, 'getExcelDumperOptions')) {
             $excelDumperOptions = $this->getExcelDumperOptions();
         }
         $dumper = new ExcelDumper($excelDumperOptions);
     } elseif ($filename = $input->getOption('csv')) {
         $csvDumperOptions = array();
         if (method_exists($this, 'getCSVDumperOptions')) {
             $csvDumperOptions = $this->getCSVDumperOptions();
         }
         $dumper = new CSVDumper($csvDumperOptions);
     } elseif ($filename = $input->getOption('html')) {
         $htmlDumperOptions = array();
         if (method_exists($this, 'getHTMLDumperOptions')) {
             $htmlDumperOptions = $this->getHTMLDumperOptions();
         }
         $dumper = new HTMLDumper($htmlDumperOptions);
     }
     if (null !== $dumper) {
         $contents = $dumper->dump($statsTable);
         if ($filename == '-') {
             $output->write($contents);
         } else {
             file_put_contents($filename, $contents);
         }
     } else {
         $tableHelper = new TableHelper();
         $tableHelper->setHeaders($statsTable->getHeaders());
         // Dump from CSV
         $dumper = new CSVDumper();
         $dumper->enableHeaders(false);
         $dumper->enableAggregation(false);
         $data = $dumper->dump($statsTable);
         $fp = fopen('php://temp', 'rw');
         fwrite($fp, $data);
         fseek($fp, 0, SEEK_SET);
         while ($line = fgetcsv($fp)) {
             $tableHelper->addRow($line);
         }
         if ($statsTable->getAggregations()) {
             $tableHelper->addRow($statsTable->getAggregations());
         }
         $tableHelper->render($output);
     }
 }
示例#2
0
 public function testFormats()
 {
     $csvDumper = new CSVDumper();
     $csvDumper->setLocale('');
     $csvDumper->enableAggregation(false);
     $csvDumper->enableHeaders(false);
     // DATE
     $this->assertEquals("2014-01-01\n2014-01-01\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01'), array('date' => new \DateTime('2014-01-01'))), array(), array(), array('date' => Format::DATE))));
     // DATETIME
     $this->assertEquals("\"2014-01-01 00:00:00\"\n\"2014-01-01 00:00:00\"\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01 00:00:00'), array('date' => new \DateTime('2014-01-01 00:00:00'))), array(), array(), array('date' => Format::DATETIME))));
     // INTEGER
     $this->assertEquals("132\n133\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.3)), array(), array(), array('test' => Format::INTEGER))));
     // FLOAT2
     $this->assertEquals("132.00\n133.35\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::FLOAT2))));
     // MONEY
     $this->assertEquals("\"132 €\"\n\"133 €\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::MONEY))));
     // MONEY2
     $this->assertEquals("\"132.00 €\"\n\"133.35 €\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::MONEY2))));
     // PCT
     $this->assertEquals("\"132 %\"\n\"133 %\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::PCT))));
     // PCT2
     $this->assertEquals("\"132.00 %\"\n\"133.35 %\"\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::PCT2))));
     // String
     $this->assertEquals("132\n133.351\n", $csvDumper->dump(new StatsTable(array(array('test' => 132), array('test' => 133.351)), array(), array(), array('test' => Format::STRING))));
     $csvDumper->enableAggregation(true);
     $csvDumper->enableHeaders(true);
     $this->assertEquals("Date,Hits\n2014-01-01,3\nTotal,3\n", $csvDumper->dump(new StatsTable(array(array('date' => '2014-01-01', 'hits' => 3)), array('date' => 'Date', 'hits' => 'Hits'), array('date' => 'Total', 'hits' => 3))));
 }