/**
   * Complete movie information.
   *
   * <p>Stufe 2: Ein Movie wird �bergeben, anhand seiner OfdbID werden weitere Informationen
   * abgefragt. Die while Schleife sorgt daf�r das im falle eines Timeouts die anfrage erneut
   * ausgef�hrt wird.
   *
   * @param pMmovie the mmovie
   * @return the movie
   */
  public Movie completeMovieInformation(Movie pMmovie) {

    Movie movie = null;

    try {

      while ((movie =
              domParser.parseExtendetMovieInformation(
                  pMmovie, connectURL(QueryServiceProperties.MOVIE_URL, pMmovie.getOfdbID())))
          == null) {}

    } catch (ParserException e) {
      openDialog(e);
    } catch (ConnectionException e) {
      /*	movie = (searchPreferences(pMmovie.getTitle())).get(0);
      if(movie == null){
      	openDialog(e);
      }
      if(movie != null){
      	return movie;
      }*/
      return pMmovie;
    }

    return movie;
  }
  /**
   * Gets the list of near movies.
   *
   * <p>1.Stufe: Suche nach Filmen mit bestimmten Namen. Die while Schleife sorgt daf�r das im falle
   * eines Timeouts die anfrage erneut ausgef�hrt wird
   *
   * @param suchstring the string to search fot in the Database
   * @return the list of near movies
   */
  public EList<Movie> searchForMoviesByString(String suchstring) {

    EList<Movie> movies = null;
    try {
      while ((movies =
              domParser.parseNearMovies(
                  connectURL(QueryServiceProperties.SEARCH_URL, suchstring), suchstring))
          == null) {}
    } catch (MovieNotFoundException e) {
      movies = searchPreferences(suchstring);
      if (movies == null) {
        openDialog(e);
      }
      if (movies != null) {
        return movies;
      }
    } catch (ParserException e) {
      openDialog(e);
    } catch (DatabaseException e) {
      openDialog(e);
    } catch (ConnectionException e) {
      movies = searchPreferences(suchstring);
      if (movies == null) {
        openDialog(e);
      }
      if (movies != null) {
        return movies;
      }
    }
    return movies;
  }
  /**
   * Complete performer information.
   *
   * <p>Stufe 3: Die Performer eines Filmes bekommen weitere Atribute hinzugef�gt. Die while
   * Schleife sorgt daf�r das im falle eines Timeouts die anfrage erneut ausgef�hrt wird.
   *
   * @param pPerformer the performer der erweitert werden soll
   * @return the performer der erweiterte performer wird zur�ck gegeben
   */
  public Performer completePerformerInformation(Performer pPerformer) {

    Performer performer = pPerformer;
    // Manchmal sind Performer nicht als eigenes Objekt in der OFDB vorhanden
    if (!pPerformer.getOfdbID().isEmpty()) {
      try {
        while ((performer =
                domParser.parsePerformerInformation(
                    pPerformer,
                    connectURL(QueryServiceProperties.SINGLEPERSON_URL, pPerformer.getOfdbID())))
            == null) {}
      } catch (ParserException e) {
        openDialog(e);
      } catch (ConnectionException e) {
        //				openDialog(e);
      }
    }
    return performer;
  }