Doctrine\OXM\Tools\Console\Command\GenerateXmlEntitiesCommand::execute PHP Method

execute() protected method

See also: Console\Command\Command
protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
    {
        $xem = $this->getHelper('xem')->getXmlEntityManager();
        $cmf = new DisconnectedClassMetadataFactory();
        $cmf->setXmlEntityManager($xem);
        $cmf->setConfiguration($xem->getConfiguration());
        $metadatas = $cmf->getAllMetadata();
        $metadatas = MetadataFilter::filter($metadatas, $input->getOption('filter'));
        // Process destination directory
        $destPath = realpath($input->getArgument('dest-path'));
        if (!file_exists($destPath)) {
            throw new \InvalidArgumentException(sprintf("XmlEntities destination directory '<info>%s</info>' does not exist.", $destPath));
        } else {
            if (!is_writable($destPath)) {
                throw new \InvalidArgumentException(sprintf("XmlEntities destination directory '<info>%s</info>' does not have write permissions.", $destPath));
            }
        }
        if (count($metadatas)) {
            // Create XmlEntityGenerator
            $xmlEntityGenerator = new XmlEntityGenerator();
            $xmlEntityGenerator->setGenerateAnnotations($input->getOption('generate-annotations'));
            $xmlEntityGenerator->setGenerateStubMethods($input->getOption('generate-methods'));
            $xmlEntityGenerator->setRegenerateXmlEntityIfExists($input->getOption('regenerate-xml-entities'));
            $xmlEntityGenerator->setUpdateXmlEntityIfExists($input->getOption('update-xml-entities'));
            $xmlEntityGenerator->setNumSpaces($input->getOption('num-spaces'));
            if (($extend = $input->getOption('extend')) !== null) {
                $xmlEntityGenerator->setClassToExtend($extend);
            }
            foreach ($metadatas as $metadata) {
                $output->write(sprintf('Processing xml-entity "<info>%s</info>"', $metadata->name) . PHP_EOL);
            }
            // Generating XmlEntities
            $xmlEntityGenerator->generate($metadatas, $destPath);
            // Outputting information message
            $output->write(PHP_EOL . sprintf('XmlEntity classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL);
        } else {
            $output->write('No Metadata Classes to process.' . PHP_EOL);
        }
    }
GenerateXmlEntitiesCommand