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