public function mondatorProcessAction() { // Config $config = $this->getServiceLocator()->get('Config'); $configMandango = $config['skar']['mandango']; // Start Mondator $mondator = new Mondator(); // Assign the config classes if (is_array($configMandango['config_classes'])) { $mondator->setConfigClasses($configMandango['config_classes']); } else { $mondator->setConfigClasses($config[$configMandango['config_classes']]); } // Assign extensions $mondator->setExtensions(array(new MandangoCore(array('metadata_factory_class' => $configMandango['metadata_factory_class'], 'metadata_factory_output' => $configMandango['metadata_factory_output'], 'default_output' => $configMandango['default_output'])))); // Process $mondator->process(); }
public function register(Application $app) { $configuration = $app['mandango.configuration']; if (!isset($configuration['metadata_factory_class'])) { throw new \Exception("Missing param 'metadata_factory_class' in 'mandango.configuration'"); } if (!isset($configuration['metadata_factory_output'])) { throw new \Exception("Missing param 'metadata_factory_output' in 'mandango.configuration'"); } if (!isset($configuration['default_output'])) { throw new \Exception("Missing param 'default_output' in 'mandango.configuration'"); } if (!isset($configuration['schema_file'])) { throw new \Exception("Missing param 'schema_file' in 'mandango.configuration'"); } if (!isset($app['mandango.token'])) { throw new \Exception("Missing param 'mandango.token'"); } $app['mandango'] = $app->share(function () use($app) { $connections = isset($app['mandango.connections']) ? $app['mandango.connections'] : array('local' => array('host' => 'mongodb://localhost:27017', 'database' => 'test')); $default = isset($app['mandango.default_connection']) ? $app['mandango.default_connection'] : 'local'; $logging = isset($app['mandango.logging']) ? (bool) $app['mandango.logging'] : false; $cache_dir = isset($app['mandango.cache_dir']) ? $app['mandango.cache_dir'] : sys_get_tempd_dir(); $metadata = new $app['mandango.configuration']['metadata_factory_class'](); $mandango = new Mandango($metadata, new FilesystemCache($cache_dir)); foreach ($connections as $name => $config) { $connections[$name] = new Connection($config['host'], $config['database']); } $mandango->setConnections($connections); $mandango->setDefaultConnectionName($default); return $mandango; }); $app['mandango.mondator'] = $app->share(function () use($app, $configuration) { $mondator = new Mondator(); $mondator->setConfigClasses(require $configuration['schema_file']); $mondator->setExtensions(array(new \Mandango\Extension\Core(array('metadata_factory_class' => $configuration['metadata_factory_class'], 'metadata_factory_output' => $configuration['metadata_factory_output'], 'default_output' => $configuration['default_output'])))); return $mondator; }); $app->get('/_mandango/generate/{token}', function ($token) use($app) { if ($token !== $app['mandango.token']) { return 'Access Denied!'; } $app['mandango.mondator']->process(); return 'Successfull generated models'; }); // autoloading Mandango library if (isset($app['mandango.class_path'])) { $app['autoloader']->registerNamespace('Mandango', $app['mandango.class_path']); $app['autoloader']->registerNamespace('Mandango\\Mondator', $app['mandango.class_path'] . '/../vendor/mondator/src'); } if (isset($configuration['default_output'])) { $outputDir = rtrim($configuration['default_output'], DIRECTORY_SEPARATOR); $outputDir = dirname($outputDir); $app['autoloader']->registerNamespace(isset($configuration['model_namespace']) ? $configuration['model_namespace'] : 'Model', $outputDir); } }
/** * Execute the console command. * * @return void */ public function fire() { // Get the schema $schema = \Config::get('laravel-mandango::mandango.schema'); $mondator = new Mondator(); $mondator->setConfigClasses($schema); $directory = app_path() . '/mandango'; $this->info('Writing Mondango classes to ' . $directory); $mondator->setExtensions(array(new \Mandango\Extension\Core(array('metadata_factory_class' => 'Model\\Mapping\\Metadata', 'metadata_factory_output' => $directory . '/models/Mapping', 'default_output' => $directory . '/models')), new \Mandango\Extension\DocumentPropertyOverloading(), new \Mandango\Extension\DocumentArrayAccess())); $mondator->process(); }
public function testGenerateContainersNewConfigClasses() { $mondator = new Mondator(); $mondator->setConfigClasses(array('Article' => array('name' => 'MyArticle', 'extensions' => array(array('class' => 'Mandango\\Mondator\\Tests\\Fixtures\\Extension\\NewConfigClass', 'options' => array('suffix' => 'Translation', 'name' => 'translation', 'multiple' => true, 'multiple_suffix' => 'Multiple', 'multiple_name' => 'multiplex')))), 'Category' => array('name' => 'MyCategory'))); $mondator->setExtensions(array(new \Mandango\Mondator\Tests\Fixtures\Extension\Name(), new \Mandango\Mondator\Tests\Fixtures\Extension\ProcessOthersFromArray())); $containers = $mondator->generateContainers(); $this->assertSame(5, count($containers)); $this->assertTrue(isset($containers['_global'])); $this->assertTrue(isset($containers['Article'])); $this->assertTrue(isset($containers['ArticleTranslation'])); $this->assertTrue(isset($containers['ArticleTranslationMultiple'])); $this->assertTrue(isset($containers['Category'])); }
public function testTwigSupport() { $mondator = new Mondator(); $mondator->setConfigClasses(array('Model\\Article' => array('fields' => array('title' => array(), 'content' => array())))); $mondator->addExtension(new \Mandango\Mondator\Tests\Fixtures\Extension\Twig\MandangoTestsTwigExtension()); $containers = $mondator->generateContainers(); $article = $containers['Model\\Article']->getDefinition('document'); // properties $this->assertTrue($article->hasPropertyByName('publicProperty')); $this->assertSame('public', $article->getPropertyByName('publicProperty')->getVisibility()); $this->assertTrue($article->hasPropertyByName('protectedProperty')); $this->assertSame('protected', $article->getPropertyByName('protectedProperty')->getVisibility()); $this->assertTrue($article->hasPropertyByName('privateProperty')); $this->assertSame('private', $article->getPropertyByName('privateProperty')->getVisibility()); $this->assertTrue($article->hasPropertyByName('staticProperty')); $this->assertTrue($article->getPropertyByName('staticProperty')->isStatic()); $this->assertTrue($article->hasPropertyByName('anotherPublicProperty')); $this->assertSame('public', $article->getPropertyByName('anotherPublicProperty')->getVisibility()); $this->assertTrue($article->hasPropertyByName('anotherProtectedProperty')); $this->assertSame('protected', $article->getPropertyByName('anotherProtectedProperty')->getVisibility()); $this->assertTrue($article->hasPropertyByName('anotherPrivateProperty')); $this->assertSame('private', $article->getPropertyByName('anotherPrivateProperty')->getVisibility()); // methods $this->assertTrue($article->hasMethodByName('publicMethod')); $this->assertSame('public', $article->getMethodbyName('publicMethod')->getVisibility()); $this->assertTrue($article->hasMethodByName('protectedMethod')); $this->assertSame('protected', $article->getMethodbyName('protectedMethod')->getVisibility()); $this->assertTrue($article->hasMethodByName('privateMethod')); $this->assertSame('private', $article->getMethodbyName('privateMethod')->getVisibility()); $this->assertTrue($article->hasMethodByName('methodWithPhpDoc')); $this->assertSame(<<<EOF /** * phpDoc */ EOF , $article->getMethodbyName('methodWithPhpDoc')->getDocComment()); $this->assertTrue($article->hasMethodByName('methodWithArguments')); $this->assertSame('$name, $value', $article->getMethodbyName('methodWithArguments')->getArguments()); $this->assertTrue($article->hasMethodByName('methodWithCode')); $this->assertTrue($article->hasMethodByName('methodWithCode')); $this->assertSame(<<<EOF return null; EOF , $article->getMethodbyName('methodWithCode')->getCode()); $this->assertTrue($article->hasMethodByName('staticMethod')); $this->assertTrue($article->getMethodByName('staticMethod')->isStatic()); $this->assertTrue($article->hasMethodByName('methodWithObjectProperties')); $this->assertSame('\\ArrayObject $array, \\Mandango\\Query $query', $article->getMethodbyName('methodWithObjectProperties')->getArguments()); }
<?php $loader = (require __DIR__ . '/../vendor/.composer/autoload.php'); $loader->add('Mandango\\Tests', __DIR__); $loader->add('Model', __DIR__); // mondator $configClasses = (require __DIR__ . '/config_classes.php'); use Mandango\Mondator\Mondator; $mondator = new Mondator(); $mondator->setConfigClasses($configClasses); $mondator->setExtensions(array(new Mandango\Extension\Core(array('metadata_factory_class' => 'Model\\Mapping\\MetadataFactory', 'metadata_factory_output' => __DIR__ . '/Model/Mapping', 'default_output' => __DIR__ . '/Model')))); $mondator->process();
<?php $loader = (require __DIR__ . '/../vendor/autoload.php'); $loader->add('Mongator\\Tests', __DIR__); $loader->add('Model', __DIR__); use Mandango\Mondator\Mondator; $mondator = new Mondator(); $mondator->setConfigClasses(array()); $mondator->setExtensions(array(new Mongator\Extension\Core(array('metadata_factory_class' => 'Model\\Mapping\\Metadata', 'metadata_factory_output' => __DIR__, 'default_output' => __DIR__)))); $mondator->process();
<?php /** * This file is part of Minventar. * * @category inventory software * @package Minventar_Service * * @author Daniel Schulz <*****@*****.**> * * @copyright (c) 2015 by fashion4home GmbH <www.fashionforhome.de> * @license GPL-3.0 * @license http://opensource.org/licenses/GPL-3.0 GNU GENERAL PUBLIC LICENSE * * @version 0.1.0 * * Date: 22.09.2015 * Time: 14:10 */ // this script can be used to generate new mappings for mandango echo $_SERVER['DOCUMENT_ROOT'] . "/vendor/autoload.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/vendor/autoload.php"; use Mandango\Mondator\Mondator; $modelDir = $_SERVER['DOCUMENT_ROOT'] . "/src/AppBundle/Model"; $mondator = new Mondator(); $mondator->setConfigClasses(array('Model\\Attribute' => array('isEmbedded' => true, 'fields' => array('name' => 'string', 'value' => 'string')), 'Model\\AttributeType' => array('isEmbedded' => true, 'fields' => array('name' => 'string', 'type' => 'string')), 'Model\\Resource' => array('collection' => 'resource', 'fields' => array('name' => 'string'), 'referencesOne' => array('type' => array('class' => 'Model\\ResourceType')), 'embeddedsMany' => array('attributes' => array('class' => 'Model\\Attribute')), 'referencesMany' => array('resources' => array('class' => 'Model\\Resource'))), 'Model\\ResourceType' => array('collection' => 'resource_type', 'fields' => array('name' => 'string', 'is_bundle' => 'boolean'), 'embeddedsMany' => array('attributes' => array('class' => 'Model\\AttributeType'))))); $mondator->setExtensions(array(new Mandango\Extension\Core(array('metadata_factory_class' => 'Model\\Mapping\\MetadataFactory', 'metadata_factory_output' => $modelDir . '/Mapping', 'default_output' => $modelDir)))); $mondator->process();