public void updateEntityAttributeValidations(
      List<EntityAttributeValidation> validations, Entity updatedEntity, String attributeName)
      throws ApplicationException {
    if (validations == null) {
      return;
    }

    Entity existing = entityDefinitionDao.loadEntity(updatedEntity.getEntityVersionId());
    EntityAttribute existingAttribute = existing.findAttributeByName(attributeName);
    List<EntityAttributeValidation> existingValidations =
        loadEntityAttributeValidations(existingAttribute);

    Map<Integer, EntityAttributeValidation> newValidationById =
        new HashMap<Integer, EntityAttributeValidation>();
    for (EntityAttributeValidation validation : validations) {
      if (validation.getEntityAttributeValidationId() != null) {
        newValidationById.put(validation.getEntityAttributeValidationId(), validation);
      }
    }

    // remove deleted validations
    for (EntityAttributeValidation validation : existingValidations) {
      if (newValidationById.get(validation.getEntityAttributeValidationId()) == null) {
        deleteEntityAttributeValidation(validation);
      }
    }

    for (EntityAttributeValidation newValidation : validations) {
      if (newValidation.getEntityAttributeValidationId() != null) {
        updateEntityAttributeValidation(newValidation);
      } else {
        addEntityAttributeValidation(newValidation);
      }
    }
  }