/**
  * Construct. Set all depends.
  *
  * Required parameteres for options:
  * - resource
  *
  * @param array $options
  * @throws Exception If passed parameter 'resource' is wrong
  * @throws Exception If config parameter 'formPath' is empty
  * @throws Exception If config parameter 'formCode' is empty
  * @throws Exception If config parameter 'entity' is wrong
  * @throws Exception If entity is not model
  * @throws Exception If eav form is not found
  */
 public function __construct($options)
 {
     if (!isset($options['resource']) || !$options['resource'] instanceof Mage_Api2_Model_Resource) {
         throw new Exception("Passed parameter 'resource' is wrong.");
     }
     $resource = $options['resource'];
     $userType = $resource->getUserType();
     $validationConfig = $resource->getConfig()->getValidationConfig($resource->getResourceType(), self::CONFIG_NODE_KEY);
     if (empty($validationConfig[$userType]['form_model'])) {
         throw new Exception("Config parameter 'formPath' is empty.");
     }
     $this->_formPath = $validationConfig[$userType]['form_model'];
     if (empty($validationConfig[$userType]['form_code'])) {
         throw new Exception("Config parameter 'formCode' is empty.");
     }
     $this->_formCode = $validationConfig[$userType]['form_code'];
     if (empty($validationConfig[$userType]['entity_model'])) {
         throw new Exception("Config parameter 'entity' is wrong.");
     }
     $this->_entity = Mage::getModel($validationConfig[$userType]['entity_model']);
     if (empty($this->_entity) || !$this->_entity instanceof Mage_Core_Model_Abstract) {
         throw new Exception("Entity is not model.");
     }
     $this->_eavForm = Mage::getModel($this->_formPath);
     if (empty($this->_eavForm) || !$this->_eavForm instanceof Mage_Eav_Model_Form) {
         throw new Exception("Eav form '{$this->_formPath}' is not found.");
     }
     $this->_eavForm->setEntity($this->_entity)->setFormCode($this->_formCode)->ignoreInvisible(false);
 }