
package de.ivu.elect.business.exchange.control;

import de.ivu.elect.business.mandant.entity.Mandant;

import java.util.UUID;

public abstract class AbstractWebServiceErreichbarPruefer {

  public abstract String getConfiguredServiceUrl(Mandant mandant);

  public WebServiceErreichbarStatus getWebServiceErreichbarStatus(Mandant mandant) {
    try {
      if (isErreichbarOrThrowException(mandant, UUID.randomUUID())) {
        return new WebServiceErreichbarStatus(WebServiceStatus.ERREICHBAR);
      }
      return new WebServiceErreichbarStatus(WebServiceStatus.NICHT_ERREICHBAR);
    } catch (Exception ex) {
      return new WebServiceErreichbarStatus(WebServiceStatus.NICHT_ERREICHBAR, ex);
    }
  }

  protected abstract boolean isErreichbarOrThrowException(Mandant mandant, UUID requestUUID);
}
