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);
}
}