/**
  * Validate element value
  *
  * If a translation adapter is registered, any error messages will be
  * translated according to the current locale, using the given error code;
  * if no matching translation is found, the original message will be
  * utilized.
  *
  * Note: The *filtered* value is validated.
  *
  * @param  array   $data
  * @param  mixed   $context
  * @return boolean
  */
 public function isValid($data, $context = null, $removeNotPresentFields = false)
 {
     if (!($data instanceof AlarmRuleModel || is_array($data))) {
         $this->_messages = array();
         $this->_messages[self::NOT_ALARM_RULE] = $this->_messageAlarmRule[self::NOT_ALARM_RULE];
         return false;
     }
     if (!parent::isValid($data, $context, $removeNotPresentFields)) {
         return false;
     }
     if (!$data instanceof AlarmRuleModel) {
         $data = new AlarmRuleModel($data);
     }
     switch ($data->universeType) {
         case AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_COMMERCIAL_GROUP:
         case AlarmRuleModel::UNIVERSE_COMMERCIAL_GROUP:
             $validator = new \App_Validate_Ericsson_CommercialGroupExistsById();
             break;
         case AlarmRuleModel::UNIVERSE_BILLING_ACCOUNT:
             $validator = new \App_Validate_Ericsson_BillingAccountExistsById(array('organizationIdField' => 'customerId'));
             break;
         case AlarmRuleModel::UNIVERSE_CUSTOMER:
             $validator = new \App_Validate_Ericsson_OrganizationExistsById();
             $validator->setOrganizationType(OrgCustomerModel::ORG_TYPE);
             break;
         case AlarmRuleModel::UNIVERSE_SUBSCRIPTIONS_OF_SUPERVISION_GROUP:
             $validator = new \App_Validate_Amplia_SupervisionGroupExistsByName();
             break;
     }
     if (!$validator->isValid($data->universeId, $data->exportData())) {
         $this->_messages['universeId'] = $validator->getMessages();
         return false;
     }
     return true;
 }
 protected function _updateEricsson(AlarmRuleModel $alarmRule)
 {
     $mappedData = $this->_mapModelToEricssonModel($alarmRule->exportData());
     $updateData = new AlarmRule\AlarmRuleUpdate();
     $updateData->parse($mappedData, new \DrSlump\Protobuf\Codec\PhpArray());
     $methodName = self::METHOD_NAME_UPDATE;
     $proto = $this->_createProto($methodName);
     $proto->setId($alarmRule->getId());
     $proto->setUpdateData($updateData);
     $response = $this->_sendRequest($methodName, array('protoMessage' => $proto));
     $this->_checkPutResponse($response);
     return $alarmRule->getId();
 }