import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.*;

public class CompanyMasterServlet extends HttpServlet
{       int connections;
        public final String BASENAME = "samples";
        public final int NR_OF_PARAMS = 14;
        public final int MAX_CLASS_SIZE = 200;

        public void init(ServletConfig config)
        throws ServletException
        {       super.init(config);
                connections = 0;
        }
        boolean error;
        Enumeration params;
        String[] entries = {"", "", "", "", "", "", "", "", "", "", "", "", "", ""};
        public final String[] parms = {"cname","add1","add2",
                                        "add3","city","pin","country","phone1",
                                        "phone2","phone3","email","fax","website","c_class"};
        public final String[] labels = {"Company Name","Address",
                                        "City","Pin","Country","Phone","Email","Website","Fax","Importance"};

        public void doPost(HttpServletRequest request, HttpServletResponse response)
               throws ServletException,IOException {
        String company = request.getRealPath("http://128.0.0.254:8080/servlets/company.txt");
        String cname = "";
        try { cname = request.getParameter("cname"); } catch (Exception e) { e.printStackTrace(); }
        String add1 = "";
        try { add1 = request.getParameter("add1"); } catch (Exception e) { e.printStackTrace(); }
        String add2 = "";
        try { add2 = request.getParameter("add2"); } catch (Exception e) { e.printStackTrace(); }
        String add3 = "";
        try { add3 = request.getParameter("add3"); } catch (Exception e) { e.printStackTrace(); }
        String city = "";
        try { city = request.getParameter("city"); } catch (Exception e) { e.printStackTrace(); }
        String pin = "";
        try { pin = request.getParameter("pin"); } catch (Exception e) { e.printStackTrace(); } 
        String country = "";
        try { country = request.getParameter("country"); } catch (Exception e) { e.printStackTrace(); }
        String phone1 = "";
        try { phone1 = request.getParameter("phone1"); } catch (Exception e) { e.printStackTrace(); }
        String phone2 = "";
        try { phone2 = request.getParameter("phone2"); } catch (Exception e) { e.printStackTrace(); }
        String phone3 = "";
        try { phone3 = request.getParameter("phone3"); } catch (Exception e) { e.printStackTrace(); }
        String email = "";
        try { email = request.getParameter("email"); } catch (Exception e) { e.printStackTrace(); }
        String website = "http://";
        try { website = request.getParameter("website"); } catch (Exception e) { e.printStackTrace(); }
        String Importance = "Select One";
        try { Importance = request.getParameter("c_class"); } catch (Exception e) { e.printStackTrace(); }
        PrintWriter pw=new PrintWriter(response.getOutputStream());
        pw.println("<html>");
        pw.println("<head><title>CompanyMasterServlet</title></head>");
        pw.println("<body>");
        params = request.getParameterNames();
        String s;
        String b = "BLANK";
            String dbString = "";
            error = false;

        for (int n = 0; n< NR_OF_PARAMS; n++)
        { s = request.getParameter(parms[n]);
          if (s.length() == 0)
          { switch (n)
            { case 0:
              case 1:
              case 5:
              case 7:
              case 9:
              case 14:
              entries[n] = "ERROR";
                error = true;
              break;
              case 2:
              case 3:
              case 4:
              case 6:
              case 8:
              case 10:
              case 11:
              case 12:
              
              entries[n] = "BLANK";
            }
          }
          dbString = dbString + s + "|";
        }

        if (error == true)
        { params = request.getParameterNames();
          printErrorPage(pw, params, true);
        }
        else
        { printData(null, null, dbString, company, pw);
        }
        pw.println("</body></html>");
        pw.close();

        } // Other end not found

        public void printErrorPage(PrintWriter pw, Enumeration e,
               boolean errorStatus) throws IOException
        { pw.println("<html>");
          pw.println("<head><title>Error Message</title></head>");
          pw.println("<body>");
          pw.print("<H1>Oops!</H1>");
          pw.print("<BR>");
         // pw.print(s8 + "<BR>");
         // pw.print(s9 + "<BR><P>");
          for (int n = 0; n < NR_OF_PARAMS; n++)
          { if (entries[n] == "ERROR")
            { pw.println(labels[n]);
              pw.print("<BR>");
              entries[n] = "";
            }
          }
          pw.println("</body></html>");
          pw.flush();
          pw.close();
          return;
        }
        
        public synchronized boolean printData(String dt, String loc,
               String rData, String aFile, PrintWriter pw)
               throws IOException
        { boolean done = false;
          int numlns = 0;
          String line = null, regLine = null;
          String fileLine = null;
          String regFile = aFile;
          String regData = rData;
          BufferedReader readFile = null;
          Vector lines = new Vector();
          try
          { readFile = new BufferedReader(new FileReader(regFile));
          }
          catch(Exception e)
          { pw.println(e.toString());
            pw.flush();
            return done;
          }
          while((regLine = readFile.readLine()) != null)
          { lines.addElement((Object)regLine);
          }
          pw.flush();
          readFile.close();
          try
          { pw = new PrintWriter(new FileWriter(regFile));
          }
          catch(Exception e)
          { pw.println("Error: Could not write to file "+regFile);
            pw.println(e.toString());
            pw.flush();
            return done;
          }
          if((numlns = lines.size()) > 0)
          { for(int i = 0; i < numlns; i++)
            { line = (String)lines.elementAt(i);
              pw.println(line);
            }
            pw.println(regData);
            done = true;
          }
          pw.flush();
          pw.close();
          return done;
        }
}
       
