/**
   * Get the front end url from a ChangeBasedEvent.
   *
   * @param event the event
   * @param project the project for which the parameters are being set
   * @return the front end url
   */
  private static String getURL(ChangeBasedEvent event, AbstractProject project) {
    String url = "";
    String serverName = null;
    // Figure out what serverName to use
    if (event.getProvider() != null) {
      serverName = event.getProvider().getName();
    } else if (project != null) {
      String name = GerritTrigger.getTrigger(project).getServerName();
      if (!GerritServer.ANY_SERVER.equals(name)) {
        serverName = name;
      }
    }
    if (serverName == null && PluginImpl.getInstance().getFirstServer() != null) {
      logger.warn(
          "No server could be determined from event or project config, "
              + "defaulting to the first configured server. Event: [{}] Project: [{}]",
          event,
          project);
      serverName = PluginImpl.getInstance().getFirstServer().getName();
    } else if (serverName == null) {
      // We have exhausted all possibilities, time to fail horribly
      throw new IllegalStateException(
          "Cannot determine a Gerrit server to link to. Have you configured one?");
    }

    GerritServer server = PluginImpl.getInstance().getServer(serverName);
    if (server != null) {
      IGerritHudsonTriggerConfig config = server.getConfig();
      if (config != null) {
        url = config.getGerritFrontEndUrlFor(event);
      } else {
        logger.error("Could not find config for Gerrit server {}", serverName);
      }
    } else {
      logger.error("Could not find Gerrit server {}", serverName);
    }
    return url;
  }