Overview

Namespaces

  • AnalyseModule
    • Models
  • BaseModule
    • Exceptions
    • Models
    • Repository
    • Services
  • DispatchModule
    • Helpers
    • Models
    • Tools
  • PredictModule
  • SearchModule

Classes

  • AnalyseModule\AnalysePresenter
  • AnalyseModule\ConservancyPresenter
  • AnalyseModule\Models\BaseTool
  • AnalyseModule\Models\ConservancyComparator
  • BaseModule\BasePresenter
  • BaseModule\DiscoveredViewReflection
  • BaseModule\ErrorPresenter
  • BaseModule\Form
  • BaseModule\HomepagePresenter
  • BaseModule\Models\BaseModel
  • BaseModule\Models\FileModel
  • BaseModule\PesekPresenter
  • BaseModule\Repository\BaseRepository
  • BaseModule\Repository\TestRepository
  • BaseModule\RouterFactory
  • BaseModule\RssPresenter
  • BaseModule\Services\Authenticator
  • BaseModule\Services\BaseService
  • BaseModule\Services\DbService
  • DispatchModule\BaseMatch
  • DispatchModule\BaseParser
  • DispatchModule\BlastMatch
  • DispatchModule\BlatMatch
  • DispatchModule\Helpers\RnaplotHelper
  • DispatchModule\Helpers\TravelerHelper
  • DispatchModule\Models\BaseModel
  • DispatchModule\Models\BlastModel
  • DispatchModule\Models\BlastXMLParser
  • DispatchModule\Models\BlatModel
  • DispatchModule\Models\Cppredict2Model
  • DispatchModule\Models\CppredictModel
  • DispatchModule\Models\FastaModel
  • DispatchModule\Models\FileModel
  • DispatchModule\PredictParser
  • DispatchModule\ResultSet
  • DispatchModule\SearchParser
  • DispatchModule\Sequence
  • DispatchModule\Tools\AnnotationDbTool
  • DispatchModule\Tools\BaseTool
  • DispatchModule\Tools\Cppredict2Tool
  • DispatchModule\Tools\DbTool
  • DispatchModule\Tools\SimilarityTool
  • DispatchModule\Tools\TaxonomyDbTool
  • PredictModule\PredictPresenter
  • SearchModule\SearchPresenter

Interfaces

  • DispatchModule\Tools\ToolInterface

Exceptions

  • BaseModule\Exceptions\BaseException
  • BaseModule\Exceptions\NotFoundException
  • BaseModule\Exceptions\ToolException
  • 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: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 
<?php

namespace DispatchModule;

/**
 * BaseParser is parent class for all parsers (SearchParser for searching and PredictParser for predicting)
 */
class BaseParser extends \BaseModule\Services\BaseService {

    /**
     * Context container
     * @var \Nette\DI\Container
     */
    protected $container;

    /**
     * @var array array of elements wanted by every tool indexed by name with corresponding labels as value
     */
    protected $parameterList;

    /**
     * Constructor stores container
     *
     * @param \Nette\DI\Container $container
     */
    public function __construct(\Nette\DI\Container $container) {
        parent::__construct($container);
        $this->container = $container;
    }

    /**
     * Add parameters needed by tools to the form
     *
     * @param \BaseModule\Form $form form, to which parameters will be added
     * @return \BaseModule\Form form with added parameters
     */
    public function addFormParameters(\BaseModule\Form $form) {
        $tools = $this->getTools();

        // for each tool, list all wanted parameters
        foreach ($tools as $tool) {
            $form->addCheckbox($tool->getName(), $tool->getLabel());

            $params = $tool->getWantedParameters();
            foreach ($params as $name => $param) {
                if (isset($param[2])) {
                    $args = $param[2];
                    $modifiers = $this->getModifiers($tool, $args);
                    $multiplicators = $this->getMultiplicators($args);
                    $date = (isset($args['date'])) ? true : false;
                } else {
                    $args = null;
                    $modifiers = null;
                    $multiplicators = null;
                    $date = false;
                }

                // add input to form
                $inputName = $form->addInput($name, $param[0], isset($param[1]) ? $param[1] : '', $tool->getName(), $args);

                $parameterValue = isset($param[1]) ? array('label' => $param[1]) : array();

                // and add parameter to list of all needed parameters
                if ($modifiers != null) {
                    $parameterValue['modifiers'] = $modifiers;
                }
                if ($multiplicators != null) {
                    $parameterValue['multiplicators'] = $multiplicators;
                }
                $parameterValue['date'] = $date;
                $this->parameterList[$inputName] = $parameterValue;
            }
        }

        return $form;
    }

    /**
     * Gets input modifiers into array
     *
     * @param \DispatchModule\ToolInterface $tool
     * @param array $args array with optional parameters
     * @return array modifiers of the input
     */
    private function getModifiers($tool, $args) {
        $modifiers = array();
        if (isset($args['modifiers'])) {
            $modifiersList = $args['modifiers'];

            foreach ($modifiersList as $modifierName => $modifier) {
                $modifiers[] = $tool->getName() . '_' . $modifierName;
            }
        }
        return $modifiers;
    }

    /**
     * Gets input multiplicators into array
     *
     * @param array $args array with optional parameters
     * @return array multiplicators of the input
     */
    private function getMultiplicators($args) {
        $multiplicators = array();
        if (isset($args['multiplicators'])) {
            $multiplicatorsList = $args['multiplicators'];

            foreach ($multiplicatorsList as $multiplicatorName => $value) {
                $multiplicators[$multiplicatorName] = $value;
            }
        }
        return $multiplicators;
    }

    /**
     * Get list of parameters needed for all tools
     * 
     * @return array array indexed by parameter name with array containnig label and (optional) modifiers in value
     */
    public function getParameterList() {
        // if empty, loop over all tools and its parameters
        if (empty($this->parameterList)) {
            $this->parameterList = array();
            $this->addFormParameters(new \BaseModule\Form());
        }
        return $this->parameterList;
    }

    /**
     * Get list of all supported tools (loaded from tools directory)
     *
     * @return array array of supported tools
     */
    public function getTools() {
        $tools = array();
        $dirPath = $this->container->parameters['appDir'] . DIRECTORY_SEPARATOR . 'DispatchModule' . DIRECTORY_SEPARATOR . $this->getName() . 'Tools';

        foreach (\Nette\Utils\Finder::findFiles('*.php')->in($dirPath) as $path => $file) {
            $toolPath = explode(DIRECTORY_SEPARATOR, $path);
            $toolFileName = explode('.', end($toolPath));
            $toolName = '\DispatchModule\Tools\\' . $toolFileName[0];
            $tool = new $toolName($this->container);
            $tools[$tool->getName()] = $tool;
        }

        return $tools;
    }

    /**
     * Get list of all supported visualisers (loaded from visualisers directory)
     *
     * @return array array of supported visualisers
     */
    public function getVisualizers() {
        $tools = array();
        $dirPath = $this->container->parameters['appDir'] . DIRECTORY_SEPARATOR . 'DispatchModule' . DIRECTORY_SEPARATOR . 'visualizeTools';

        foreach (\Nette\Utils\Finder::findFiles('*.php')->in($dirPath) as $path => $file) {
            $toolPath = explode(DIRECTORY_SEPARATOR, $path);
            $toolFileName = explode('.', end($toolPath));
            $toolName = '\DispatchModule\Tools\\' . $toolFileName[0];
            $tool = new $toolName($this->container);
            $tools[$tool->getName()] = $tool;
        }

        return $tools;
    }

    /**
     * Gets name of the parser
     *
     * @return string parser name without prefix
     */
    protected function getName() {
        // get parser name
        $className = \Nette\Utils\Strings::lower(get_class($this));

        // remove namespaces
        if (preg_match('@\\\\([\w]+)$@', $className, $matches)) {
            $className = $matches[1];
        }

        // remove postfix, if it exists
        if (\Nette\Utils\Strings::endsWith($className, 'parser')) {
            return \Nette\Utils\Strings::substring($className, 0, -6);
        }
        return $className;
    }

}
API documentation generated by ApiGen