/*
 * $Id: Fortune.java,v 1.8 2002/03/06 15:27:15 marc Exp $
 */

package cgi;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServlet;

/**
 * Sample Servlet to print a random, hopefully interesting, adage
 * This servlet don't send [HTML] or [BODY] html tags but define content-type
 *
 * @author M Riess
 * @version $Revision: 1.8 $
 * @see Fortune
 */
public class FortuneServlet extends HttpServlet {
	com.mrc.fortune.Fortune fortune;
	
	public void init(ServletConfig config) throws ServletException {
		super.init (config);
		fortune	= new com.mrc.fortune.Fortune();
		
		String filepath=getInitParameter("filepath");
		if (filepath==null) filepath="france";
		log("init fortune with '"+filepath+"'");
		fortune.init(filepath);
	}
	
	public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		PrintWriter out = res.getWriter();
		if (req.getParameter("html")!=null) {
			fortune.setCR("<br>");
			String s = fortune.getFortune();
			StringBuffer adage= new StringBuffer();
			
			try {
				int g1 = s.indexOf('\"');
				int g2=0;
				if (g1!=-1) {
					g2 = s.indexOf('\"',g1+1);
					if (g2>0) {
						if (g1>0) adage.append(s.substring(0,g1));
						adage.append("<i>");
						adage.append(s.substring(g1,g2));
						adage.append("</i>");
					}
				}
	
	
				int pt = s.lastIndexOf('.');
				if ((pt!=-1) && (pt<(s.length()-5))) {
					//
					adage.append(s.substring(g2,pt+1));
					//adage.append("</i>");
					adage.append("<b>");
					adage.append(s.substring(pt+1));
					adage.append("<b>");
				}
				else if (g2>0) adage.append(s.substring(g2));
				else adage.append(s);
			} catch (Exception e) {
				log(s+":"+e.toString());
				adage.setLength(0);
				adage.append(s);
			}
			
			out.println(adage.toString());
		}
		else {
			fortune.setCR("\r\n");
			out.println(fortune.getFortune());
		}
	}
	
	public String getServletInfo() {
		return "FortuneServlet print a random, hopefully interesting, adage";
	}
	
	public void destroy() {
		try { fortune.close(); } catch (Exception e) {}
		super.destroy();
	}

}
