adding zend project folders into old campcaster.
This commit is contained in:
parent
56abfaf28e
commit
7ef0c18b26
4045 changed files with 1054952 additions and 0 deletions
217
library/propel/generator/lib/config/GeneratorConfig.php
Normal file
217
library/propel/generator/lib/config/GeneratorConfig.php
Normal file
|
@ -0,0 +1,217 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* This file is part of the Propel package.
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*
|
||||
* @license MIT License
|
||||
*/
|
||||
|
||||
/**
|
||||
* A class that holds build properties and provide a class loading mechanism for the generator.
|
||||
*
|
||||
* @author Hans Lellelid <hans@xmpl.org>
|
||||
* @package propel.generator.config
|
||||
*/
|
||||
class GeneratorConfig {
|
||||
|
||||
/**
|
||||
* The build properties.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $buildProperties = array();
|
||||
|
||||
/**
|
||||
* Construct a new GeneratorConfig.
|
||||
* @param mixed $props Array or Iterator
|
||||
*/
|
||||
public function __construct($props = null)
|
||||
{
|
||||
if ($props) $this->setBuildProperties($props);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the build properties.
|
||||
* @return array
|
||||
*/
|
||||
public function getBuildProperties()
|
||||
{
|
||||
return $this->buildProperties;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the passed-in properties, renaming and saving eligible properties in this object.
|
||||
*
|
||||
* Renames the propel.xxx properties to just xxx and renames any xxx.yyy properties
|
||||
* to xxxYyy as PHP doesn't like the xxx.yyy syntax.
|
||||
*
|
||||
* @param mixed $props Array or Iterator
|
||||
*/
|
||||
public function setBuildProperties($props)
|
||||
{
|
||||
$this->buildProperties = array();
|
||||
|
||||
$renamedPropelProps = array();
|
||||
foreach ($props as $key => $propValue) {
|
||||
if (strpos($key, "propel.") === 0) {
|
||||
$newKey = substr($key, strlen("propel."));
|
||||
$j = strpos($newKey, '.');
|
||||
while ($j !== false) {
|
||||
$newKey = substr($newKey, 0, $j) . ucfirst(substr($newKey, $j + 1));
|
||||
$j = strpos($newKey, '.');
|
||||
}
|
||||
$this->setBuildProperty($newKey, $propValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a specific propel (renamed) property from the build.
|
||||
*
|
||||
* @param string $name
|
||||
* @return mixed
|
||||
*/
|
||||
public function getBuildProperty($name)
|
||||
{
|
||||
return isset($this->buildProperties[$name]) ? $this->buildProperties[$name] : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a specific propel (renamed) property from the build.
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
*/
|
||||
public function setBuildProperty($name, $value)
|
||||
{
|
||||
$this->buildProperties[$name] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves and returns the class name based on the specified property value.
|
||||
*
|
||||
* @param string $propname The name of the property that holds the class path (dot-path notation).
|
||||
* @return string The class name.
|
||||
* @throws BuildException If the classname cannot be determined or class cannot be loaded.
|
||||
*/
|
||||
public function getClassname($propname)
|
||||
{
|
||||
$classpath = $this->getBuildProperty($propname);
|
||||
if (empty($classpath)) {
|
||||
throw new BuildException("Unable to find class path for '$propname' property.");
|
||||
}
|
||||
|
||||
// This is a slight hack to workaround camel case inconsistencies for the DDL classes.
|
||||
// Basically, we want to turn ?.?.?.sqliteDDLBuilder into ?.?.?.SqliteDDLBuilder
|
||||
$lastdotpos = strrpos($classpath, '.');
|
||||
if ($lastdotpos !== null) {
|
||||
$classpath{$lastdotpos+1} = strtoupper($classpath{$lastdotpos+1});
|
||||
} else {
|
||||
$classpath = ucfirst($classpath);
|
||||
}
|
||||
|
||||
if (empty($classpath)) {
|
||||
throw new BuildException("Unable to find class path for '$propname' property.");
|
||||
}
|
||||
|
||||
$clazz = Phing::import($classpath);
|
||||
|
||||
return $clazz;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves and returns the builder class name.
|
||||
*
|
||||
* @param string $type
|
||||
* @return string The class name.
|
||||
*/
|
||||
public function getBuilderClassname($type)
|
||||
{
|
||||
$propname = 'builder' . ucfirst(strtolower($type)) . 'Class';
|
||||
return $this->getClassname($propname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and configures a new Platform class.
|
||||
*
|
||||
* @param PDO $con
|
||||
* @return Platform
|
||||
*/
|
||||
public function getConfiguredPlatform(PDO $con = null)
|
||||
{
|
||||
$clazz = $this->getClassname("platformClass");
|
||||
$platform = new $clazz();
|
||||
|
||||
if (!$platform instanceof Platform) {
|
||||
throw new BuildException("Specified platform class ($clazz) does not implement Platform interface.", $this->getLocation());
|
||||
}
|
||||
|
||||
$platform->setConnection($con);
|
||||
$platform->setGeneratorConfig($this);
|
||||
return $platform;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and configures a new SchemaParser class for specified platform.
|
||||
* @param PDO $con
|
||||
* @return SchemaParser
|
||||
*/
|
||||
public function getConfiguredSchemaParser(PDO $con = null)
|
||||
{
|
||||
$clazz = $this->getClassname("reverseParserClass");
|
||||
$parser = new $clazz();
|
||||
if (!$parser instanceof SchemaParser) {
|
||||
throw new BuildException("Specified platform class ($clazz) does implement SchemaParser interface.", $this->getLocation());
|
||||
}
|
||||
$parser->setConnection($con);
|
||||
$parser->setGeneratorConfig($this);
|
||||
return $parser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a configured data model builder class for specified table and based on type.
|
||||
*
|
||||
* @param Table $table
|
||||
* @param string $type The type of builder ('ddl', 'sql', etc.)
|
||||
* @return DataModelBuilder
|
||||
*/
|
||||
public function getConfiguredBuilder(Table $table, $type, $cache = true)
|
||||
{
|
||||
$classname = $this->getBuilderClassname($type);
|
||||
$builder = new $classname($table);
|
||||
$builder->setGeneratorConfig($this);
|
||||
return $builder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a configured Pluralizer class.
|
||||
*
|
||||
* @return Pluralizer
|
||||
*/
|
||||
public function getConfiguredPluralizer()
|
||||
{
|
||||
$classname = $this->getBuilderClassname('pluralizer');
|
||||
$pluralizer = new $classname();
|
||||
return $pluralizer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a configured behavior class
|
||||
*
|
||||
* @param string $name a behavior name
|
||||
* @return string a behavior class name
|
||||
*/
|
||||
public function getConfiguredBehavior($name)
|
||||
{
|
||||
$propname = 'behavior' . ucfirst(strtolower($name)) . 'Class';
|
||||
try {
|
||||
$ret = $this->getClassname($propname);
|
||||
} catch (BuildException $e) {
|
||||
// class path not configured
|
||||
$ret = false;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue