Example #1
0
 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();
 }
Example #4
0
 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']));
 }
Example #5
0
    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();
Example #7
0
<?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();