Author: Kore Nordmann
Date: 2007-05-05 16:52:48 +0200 (Sat, 05 May 2007)
New Revision: 5065

Log:
- Implemented feature #8418: Generate class files as well.

Modified:
   trunk/DatabaseSchema/ChangeLog
   trunk/DatabaseSchema/src/db_schema_autoload.php
   trunk/DatabaseSchema/src/handlers/persistent/writer.php
   trunk/PersistentObjectDatabaseSchemaTiein/ChangeLog
   trunk/PersistentObjectDatabaseSchemaTiein/src/generator.php

Modified: trunk/DatabaseSchema/ChangeLog
===================================================================
--- trunk/DatabaseSchema/ChangeLog      2007-05-05 07:30:18 UTC (rev 5064)
+++ trunk/DatabaseSchema/ChangeLog      2007-05-05 14:52:48 UTC (rev 5065)
@@ -15,6 +15,8 @@
 - Implemented feature #9584: Switch for overwriting files.
   (PersistentObjectDatabaseSchemaTiein)
 - Implemented feature #9874: ezcDbSchema[DB]Reader custom table schema class.
+- Implemented feature #8418: Generate class files as well.
+  (PersistentObjectDatabaseSchemaTiein)
 
 
 1.1 - Monday 18 December 2006

Modified: trunk/DatabaseSchema/src/db_schema_autoload.php
===================================================================
--- trunk/DatabaseSchema/src/db_schema_autoload.php     2007-05-05 07:30:18 UTC 
(rev 5064)
+++ trunk/DatabaseSchema/src/db_schema_autoload.php     2007-05-05 14:52:48 UTC 
(rev 5065)
@@ -48,6 +48,7 @@
     'ezcDbSchemaOracleReader'                    => 
'DatabaseSchema/handlers/oracle/reader.php',
     'ezcDbSchemaOracleWriter'                    => 
'DatabaseSchema/handlers/oracle/writer.php',
     'ezcDbSchemaPersistentWriter'                => 
'DatabaseSchema/handlers/persistent/writer.php',
+    'ezcDbSchemaPersistentClassWriter'           => 
'DatabaseSchema/handlers/persistent/class_writer.php',
     'ezcDbSchemaPgsqlReader'                     => 
'DatabaseSchema/handlers/pgsql/reader.php',
     'ezcDbSchemaPgsqlWriter'                     => 
'DatabaseSchema/handlers/pgsql/writer.php',
     'ezcDbSchemaPhpArrayReader'                  => 
'DatabaseSchema/handlers/php_array/reader.php',

Modified: trunk/DatabaseSchema/src/handlers/persistent/writer.php
===================================================================
--- trunk/DatabaseSchema/src/handlers/persistent/writer.php     2007-05-05 
07:30:18 UTC (rev 5064)
+++ trunk/DatabaseSchema/src/handlers/persistent/writer.php     2007-05-05 
14:52:48 UTC (rev 5065)
@@ -1,6 +1,6 @@
 <?php
 /**
- * File containing the ezcDbSchemaPersistentObjectWriter class.
+ * File containing the ezcDbSchemaPersistentWriter class.
  *
  * @package DatabaseSchema
  * @version //autogentag//
@@ -9,7 +9,7 @@
  */
 
 /**
- * This handler creates PersistenObject definition files from a
+ * This handler creates PHP classes to be used with PersistentObject from a
  * DatabaseSchema.
  *
  * @package DatabaseSchema
@@ -26,14 +26,23 @@
     private $overwrite;
 
     /**
+     * Class prefix. 
+     * 
+     * @var string
+     */
+    private $prefix;
+
+    /**
      * Creates a new writer instance
      *
-     * @param boolean $overwrite 
+     * @param boolean $overwrite   Overwrite existsing files?
+     * @param string  $classPrefix Prefix for class names.
      * @return void
      */
-    public function __construct( $overwrite = false )
+    public function __construct( $overwrite = false, $classPrefix = null )
     {
         $this->overwrite = $overwrite;
+        $this->prefix    = ( $classPrefix === null ) ? "" : $classPrefix;
     }
     
     /**
@@ -165,7 +174,7 @@
 
         fwrite( $file, "\$def = new ezcPersistentObjectDefinition();\n" );
         fwrite( $file, "\$def->table = '$tableName';\n" );
-        fwrite( $file, "\$def->class = '$tableName';\n" );
+        fwrite( $file, "\$def->class = '{$this->prefix}$tableName';\n" );
 
         $primaries = $this->determinePrimaries( $table->indexes );
 

Modified: trunk/PersistentObjectDatabaseSchemaTiein/ChangeLog
===================================================================
--- trunk/PersistentObjectDatabaseSchemaTiein/ChangeLog 2007-05-05 07:30:18 UTC 
(rev 5064)
+++ trunk/PersistentObjectDatabaseSchemaTiein/ChangeLog 2007-05-05 14:52:48 UTC 
(rev 5065)
@@ -2,6 +2,7 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 - Implemented feature #9584: Switch for overwriting files.
+- Implemented feature #8418: Generate class files as well.
 
 
 1.1 - Monday 18 December 2006

Modified: trunk/PersistentObjectDatabaseSchemaTiein/src/generator.php
===================================================================
--- trunk/PersistentObjectDatabaseSchemaTiein/src/generator.php 2007-05-05 
07:30:18 UTC (rev 5064)
+++ trunk/PersistentObjectDatabaseSchemaTiein/src/generator.php 2007-05-05 
14:52:48 UTC (rev 5065)
@@ -132,6 +132,22 @@
 
         $this->input->registerOption(
             new ezcConsoleOption(
+                "p",        // short
+                "prefix",   // long
+                ezcConsoleInput::TYPE_STRING,
+                null,       // default
+                false,      // multiple
+                "Class prefix.",
+                "Unique prefix that will be prepended to all class names.",
+                array(),    // dependencies
+                array(),    // exclusions
+                true,       // arguments
+                false       // mandatory
+            )
+        );
+
+        $this->input->registerOption(
+            new ezcConsoleOption(
                 "h",        // short
                 "help",     // long
                 ezcConsoleInput::TYPE_NONE,
@@ -146,6 +162,17 @@
                 true        // help option
             )
         );
+
+        $this->input->argumentDefinition = new ezcConsoleArguments();
+
+        $this->input->argumentDefinition[0] = new ezcConsoleArgument( "def 
dir" );
+        $this->input->argumentDefinition[0]->shorthelp = "PersistentObject 
definition directory.";
+        $this->input->argumentDefinition[0]->longhelp  = "Directory where 
PersistentObject definitions will be stored.";
+
+        $this->input->argumentDefinition[1] = new ezcConsoleArgument( "class 
dir" );
+        $this->input->argumentDefinition[1]->mandatory = false;
+        $this->input->argumentDefinition[1]->shorthelp = "Class directory.";
+        $this->input->argumentDefinition[1]->longhelp  = "Directory where PHP 
classes will be stored. Classes will not be generated if this argument is 
ommited.";
         
         $this->output->outputLine( 'eZ components PersistentObject definition 
generator', 'info' );
         $this->output->outputLine();
@@ -163,7 +190,7 @@
         {
             $this->input->process();
         }
-        catch ( ezcConsoleOptionException $e )
+        catch ( ezcConsoleException $e )
         {
             $this->raiseError( "Error while processing your options: 
{$e->getMessage()}", true );
         }
@@ -181,13 +208,9 @@
             exit( 0 );
         }
 
-        if ( sizeof( ( $args =  $this->input->getArguments() ) ) < 1 )
-        {
-            $this->raiseError( "The directory to save the PersistentObject 
definitions to is required as an argument.", true );
-        }
+        $defDir   = $this->input->argumentDefinition["def dir"]->value;
+        $classDir = $this->input->argumentDefinition["class dir"]->value;
 
-        $destination = $args[0];
-
         $schema = null;
         try
         {
@@ -215,15 +238,30 @@
 
         try
         {
-            $writer = new ezcDbSchemaPersistentWriter( 
$this->input->getOption( "overwrite" )->value );
-            $writer->saveToFile( $destination, $schema );
+            $writer = new ezcDbSchemaPersistentWriter(
+                $this->input->getOption( "overwrite" )->value,
+                    $this->input->getOption( "prefix" )->value
+            );
+            $writer->saveToFile( $defDir, $schema );
+            if ( $classDir !== null )
+            {
+                $writer = new ezcDbSchemaPersistentClassWriter(
+                    $this->input->getOption( "overwrite" )->value,
+                    $this->input->getOption( "prefix" )->value
+                );
+                $writer->saveToFile( $classDir, $schema );
+            }
         }
         catch ( ezcBaseException $e )
         {
             $this->raiseError( "Error writing schema: {$e->getMessage()}" );
         }
 
-        $this->output->outputLine( "PersistentObject definition successfully 
written to {$destination}.", 'info' );
+        $this->output->outputLine( "PersistentObject definition successfully 
written to {$defDir}.", 'info' );
+        if ( $classDir !== null )
+        {
+            $this->output->outputLine( "Class files successfully written to 
{$classDir}.", 'info' );
+        }
     }
 
     /**

-- 
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to