public boolean Validate() {
    RegexValidation tempVar = new RegexValidation();
    tempVar.setExpression("^[A-Za-z0-9_-]+$");
    tempVar.setMessage("Name can contain only 'A-Z', 'a-z', '0-9', '_' or '-' characters.");
    getFormattedStorageName().ValidateEntity(new IValidation[] {tempVar});
    if (getFormattedStorageName().getEntity() != null
        && !DataProvider.IsStorageDomainNameUnique(
            (String) getFormattedStorageName().getEntity())) {
      getFormattedStorageName().setIsValid(false);
      getFormattedStorageName().getInvalidityReasons().add("Name must be unique.");
    }
    boolean isStorageValid = getStorage().Validate() && getFormattedStorageName().getIsValid();
    boolean isDataCenterValid = true;
    if (!getDontCreateDataCenter()) {
      isDataCenterValid = getDataCenter().Validate();
    }
    boolean isClusterValid = true;
    if (!getDontCreateCluster()) {
      isClusterValid = getCluster().Validate(false);
    }

    setIsGeneralTabValid(isStorageValid && isDataCenterValid && isClusterValid);

    return isStorageValid && isDataCenterValid && isClusterValid;
  }