Overview

Namespaces

  • Net
    • Bazzline
      • Component
        • Locator
          • Configuration
            • Assembler
            • Validator
          • FileExistsStrategy
          • Generator
          • MethodBodyBuilder
          • Process
            • Transformer
              • Assembler
              • FileLoader
              • Generator
            • Validator

Classes

  • Net\Bazzline\Component\Locator\Configuration\Assembler\AbstractAssembler
  • Net\Bazzline\Component\Locator\Configuration\Assembler\FromArrayAssembler
  • Net\Bazzline\Component\Locator\Configuration\Assembler\FromPropelSchemaXmlAssembler
  • Net\Bazzline\Component\Locator\Configuration\Configuration
  • Net\Bazzline\Component\Locator\Configuration\ConfigurationFactory
  • Net\Bazzline\Component\Locator\Configuration\Instance
  • Net\Bazzline\Component\Locator\Configuration\Uses
  • Net\Bazzline\Component\Locator\Configuration\Validator\ReadableFilePath
  • Net\Bazzline\Component\Locator\FileExistsStrategy\AbstractStrategy
  • Net\Bazzline\Component\Locator\FileExistsStrategy\DeleteStrategy
  • Net\Bazzline\Component\Locator\FileExistsStrategy\SuffixWithCurrentTimestampStrategy
  • Net\Bazzline\Component\Locator\Generator\AbstractGenerator
  • Net\Bazzline\Component\Locator\Generator\AbstractInterfaceGenerator
  • Net\Bazzline\Component\Locator\Generator\FactoryInterfaceGenerator
  • Net\Bazzline\Component\Locator\Generator\InvalidArgumentExceptionGenerator
  • Net\Bazzline\Component\Locator\Generator\LocatorGenerator
  • Net\Bazzline\Component\Locator\Generator\LocatorInterfaceGenerator
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\AbstractMethodBodyBuilder
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\FetchFromFactoryInstancePoolBuilder
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\FetchFromSharedInstancePoolBuilder
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\FetchFromSharedInstancePoolOrCreateByFactoryBuilder
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\NewInstanceBuilder
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\PropelQueryCreateBuilder
  • Net\Bazzline\Component\Locator\Process\Transformer\Assembler\ConfigurationAssembler
  • Net\Bazzline\Component\Locator\Process\Transformer\FileLoader\ConfigurationFileLoader
  • Net\Bazzline\Component\Locator\Process\Transformer\FileLoader\IfAvailableBootstrapFileLoader
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\ArgumentsGenerator
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\FactoryGenerator
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\FileExistsStrategyGenerator
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\InvalidArgumentExceptionFileGenerator
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\LocatorFileGenerator
  • Net\Bazzline\Component\Locator\Process\Transformer\Generator\LocatorInterfaceFileGenerator
  • Net\Bazzline\Component\Locator\Process\Validator\ArgumentsValidator
  • Net\Bazzline\Component\Locator\Process\Validator\ConfigurationDataValidator
  • Net\Bazzline\Component\Locator\Process\Validator\ConfigurationValidator
  • Net\Bazzline\Component\Locator\Process\Validator\IsCommandLineValidator
  • Net\Bazzline\Component\Locator\ProcessPipeFactory

Interfaces

  • Net\Bazzline\Component\Locator\Configuration\Assembler\AssemblerInterface
  • Net\Bazzline\Component\Locator\FactoryInterface
  • Net\Bazzline\Component\Locator\FileExistsStrategy\FileExistsStrategyInterface
  • Net\Bazzline\Component\Locator\Generator\GeneratorInterface
  • Net\Bazzline\Component\Locator\InstanceDependentInterface
  • Net\Bazzline\Component\Locator\LocatorInterface
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\MethodBodyBuilderInterface

Exceptions

  • Net\Bazzline\Component\Locator\Configuration\Assembler\InvalidArgumentException
  • Net\Bazzline\Component\Locator\Configuration\Assembler\RuntimeException
  • Net\Bazzline\Component\Locator\Configuration\Validator\RuntimeException
  • Net\Bazzline\Component\Locator\Exception
  • Net\Bazzline\Component\Locator\FileExistsStrategy\InvalidArgumentException
  • Net\Bazzline\Component\Locator\FileExistsStrategy\RuntimeException
  • Net\Bazzline\Component\Locator\InvalidArgumentException
  • Net\Bazzline\Component\Locator\MethodBodyBuilder\RuntimeException
  • Net\Bazzline\Component\Locator\RuntimeException
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 
<?php
/**
 * @author stev leibelt <artodeto@bazzline.net>
 * @since 2014-05-26
 */

namespace Net\Bazzline\Component\Locator\Configuration\Assembler;

use Net\Bazzline\Component\Locator\Configuration\Configuration;

/**
 * Class AbstractAssembler
 * @package Net\Bazzline\Component\Locator\Configuration\Assembler
 */
abstract class AbstractAssembler implements AssemblerInterface
{
    /**
     * @param mixed $data
     * @param Configuration $configuration
     * @throws InvalidArgumentException
     * @throws RuntimeException
     * @return Configuration
     */
    final public function assemble($data, Configuration $configuration)
    {
        $this->validateData($data);
        $configuration = $this->map($data, $configuration);

        return $configuration;
    }

    /**
     * @param mixed $data
     * @param Configuration $configuration
     * @return Configuration
     * @throws RuntimeException
     */
    abstract protected function map($data, Configuration $configuration);

    /**
     * @param mixed $data
     * @throws InvalidArgumentException
     */
    abstract protected function validateData($data);

    /**
     * @param array $data
     * @param array $keysToExpectedValueType
     * @throws InvalidArgumentException
     */
    final protected function validateDataWithMandatoryKeysAndExpectedValueType(array $data, array $keysToExpectedValueType)
    {
        foreach ($keysToExpectedValueType as $key => $expectedType) {
            if (!isset($data[$key])) {
                throw new InvalidArgumentException(
                    'data array must contain content for key "' . $key . '"'
                );
            }

            $this->validateExpectedDataKeyType($data, $key, $expectedType);
        }
    }

    /**
     * @param array $data
     * @param array $keysToExpectedValueType
     * @throws InvalidArgumentException
     */
    final protected function validateDataWithOptionalKeysAndExpectedValueTypeOrSetExpectedValueAsDefault(array $data, array $keysToExpectedValueType)
    {
        foreach ($keysToExpectedValueType as $key => $expectedType) {
            if (isset($data[$key])) {
                $this->validateExpectedDataKeyType($data, $key, $expectedType);
            }
        }
    }

    /**
     * @param array $data
     * @param Configuration $configuration
     * @return Configuration
     */
    protected function mapBooleanProperties(array $data, Configuration $configuration)
    {
        if (isset($data['create_interface'])) {
            $configuration->setCreateLocatorGeneratorInterface($data['create_interface']);
        }

        return $configuration;
    }

    /**
     * @param array $data
     * @param Configuration $configuration
     * @return Configuration
     */
    protected function mapStringProperties(array $data, Configuration $configuration)
    {
        $configuration->setClassName($data['class_name'])->setFilePath($data['file_path']);

        if (isset($data['method_prefix'])) {
            $configuration->setMethodPrefix($data['method_prefix']);
        }

        if (isset($data['namespace'])) {
            $configuration->setNamespace($data['namespace']);
        }

        if (isset($data['extends'])) {
            $configuration->setExtends($data['extends']);
        }

        return $configuration;
    }

    /**
     * @param array $data
     * @param string $key
     * @param string $expectedType
     */
    private function validateExpectedDataKeyType(array $data, $key, $expectedType)
    {
        $exceptionMessage = 'value of key "' . $key . '" must be of type "' . $expectedType . '" when set';

        switch ($expectedType) {
            case 'array':
                if (!is_array($data[$key])) {
                    throw new InvalidArgumentException($exceptionMessage);
                }
                break;
            case 'string':
                if (!is_string($data[$key])) {
                    throw new InvalidArgumentException($exceptionMessage);
                }
                break;
            case 'bolean':
                if (!is_bool($data[$key])) {
                    throw new InvalidArgumentException($exceptionMessage);
                }
                break;
        }
    }
}
PHP Locator Generator Component by bazzline.net API documentation generated by ApiGen