package coreservlets.tags;

import java.io.*;
import javax.servlet.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import coreservlets.listeners.*;

/** Klasa InitialCompanyNameListener posiada metody statyczne, które
 *  udostępniają aktualną i poprzednią nazwę firmy. Lecz aby móc
 *  użyć tych metod na stronach JSP, potrzebny jest jawny kod Java,
 *  a gdyby informacje miały być udostępniane przez utworzone w tym celu
 *  komponenty JavaBean, obsługa wyników ich działania byłaby niewygodna.
 *  Dlatego kod został przeniesiony do własnego znacznika.
 *  <P>
 *  Taken from Core Servlets and JavaServer Pages Volume II
 *  from Prentice Hall and Sun Microsystems Press,
 *  http://volume2.coreservlets.com/.
 *  (C) 2007 Marty Hall, Larry Brown, and Yaakov Chaikin;
 *  may be freely used or adapted.
 */

public class FormerCompanyNameTag extends SimpleTagSupport {
  private boolean useFullDescription = false;
  
  public void doTag() throws JspException, IOException {
    PageContext pageContext = (PageContext) getJspContext();
    ServletContext context = pageContext.getServletContext();
    String formerCompanyName =
     InitialCompanyNameListener.getFormerCompanyName(context);
    JspWriter out = pageContext.getOut();
    if (useFullDescription) {
      String formerCompanyDescription = "";
      if (!formerCompanyName.equals("")) {
        formerCompanyDescription = 
          "(wcześniej " + formerCompanyName + ")";
      }
      out.print(formerCompanyDescription);
    } else {
      out.print(formerCompanyName);
    }
  }

  /** Jeżeli użytkownik przypisze atrybutowi fullDescription
   *  wartość "true" (wielkimi, małymi lub mieszanymi literami),
   *  zmiennej useFullDescription również zostanie przypisana wartość true.
   *  W przeciwnym razie jej wartością pozostanie false.
   */
  public void setFullDescription(String flag) {
    if (flag.equalsIgnoreCase("true")) {
      useFullDescription = true;
    }
  }
}
