/*
* Code by George Kichukov for SAS 11/24/2002
* This class is used to execute user modifications on the database
* depending on the parameters passed to it
*/
package admin;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import utilities.*;
public class Query extends HttpServlet
{
private String errorTarget = "../admin/index.jsp";
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
// If it is a get request forward to doPost()
doPost(request, response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
//name of the user
String name="";
PrintWriter out = response.getWriter();
response.setContentType("text/html");
//first thing that every servlet or jsp should do is check if user is logged in
HttpSession session = request.getSession(false);
//if not logged in redirect to login
if(session == null)
{
HTMLUtils.printRedirectPage(out, "You must login to the system prior to viewing this page.", errorTarget);
return;
}
//else if logged in take the name from the session
else
{
name=(String)session.getAttribute("user");
//if the name is null
if(name == null)
{
HTMLUtils.printRedirectPage(out, "You must login to the system prior to viewing this page.", errorTarget);
return;
}
}
HTMLUtils.printAdminHeader(out);
//display welcome message to the user
out.println("
Welcome " + name + "
");
//get the parameters
String table=request.getParameter("table");
String oper=request.getParameter("oper");
String id=request.getParameter("id");
String mID=request.getParameter("mID");
//display operation summary
out.println ("Operation: " + oper + " " + table + "
");
//Retrieve all the HTML fields from the input stream
Enumeration keys;
String column;
String value;
String key1;
keys = request.getParameterNames();
String primaryKey = "";
//case 1: MAJOR_REQ or MINOR_REQ tables
if((table.equals("MAJOR_REQ")) || (table.equals("MINOR_REQ")))
{
primaryKey="ID";
//CASE 1 a) Coming from Req to delete a Requirement
//paramaters received: table and id
if(oper.equals("Delete"))
{
String sql="delete from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
Retriever.executeSQL(sql);
out.println("Requirment Deleted Successfully!");
} //end if Delete
//CASE 2 b) Coming from ModifyReq to Modify Requirement
//paramaters received: table and id and the requirement string + requirement credits
if(oper.equals("Modify"))
{
String sql="select * from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
try
{
ResultSet rs = Retriever.executeSQL(sql);
rs.next();
try
{
String dataIn= RequirementParser.toCourseDatabaseString(request.getParameter("CourseList"));
rs.updateString("CourseList", dataIn );
rs.updateString("Credits", request.getParameter("Credits"));
rs.updateRow();
out.println("Requirement Modified Successfully!");
}
catch (RequirementParserException e)
{
out.println(e.getMessage());
}
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Modify
//CASE 2 c) Coming from ModifyReq to Add Requirement
//paramaters received: table and id and the requirement string + requirement credits
// + the mID
if(oper.equals("Add"))
{
String sql="select * from " + table;
//out.println(sql);
//major or minor ID
String fieldMID="M" + (table.substring(1,table.length()-4)).toLowerCase() + "ID";
try
{
ResultSet rs = Retriever.executeSQL(sql);
rs.moveToInsertRow(); // moves cursor to the insert row
rs.updateString("Credits", request.getParameter("Credits"));
try
{
String dataIn= RequirementParser.toCourseDatabaseString(request.getParameter("CourseList"));
rs.updateString("CourseList", dataIn );
rs.updateString(fieldMID,mID);
rs.insertRow();
out.println("Requirement Added Successfully!");
}
catch (RequirementParserException e)
{
out.println(e.getMessage());
}
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Add
}
//CASE 2: any other *_REQ
else if((table.substring(table.length()-3, table.length())).equals("REQ"))
{
primaryKey="ID";
//CASE 2 a) Coming from Req to delete a Requirement
//paramaters received: table and id
if(oper.equals("Delete"))
{
String sql="delete from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
Retriever.executeSQL(sql);
out.println("Requirment Deleted Successfully!");
} //end if Delete
//CASE 2 b) Coming from ModifyReq to Modify Requirement
//paramaters received: table and id and the requirement string + requirement credits
if(oper.equals("Modify"))
{
String sql="select * from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
try
{
ResultSet rs = Retriever.executeSQL(sql);
rs.next();
try
{
String dataIn= RequirementParser.toCourseDatabaseString(request.getParameter("CourseList"));
rs.updateString("CourseList", dataIn );
rs.updateString("CreditsRequired", request.getParameter("Credits"));
rs.updateRow();
out.println("Requirement Modified Successfully!");
}
catch (RequirementParserException e)
{
out.println(e.getMessage());
}
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Modify
//CASE 2 c) Coming from ModifyReq to Add Requirement
//paramaters received: table and id and the requirement string + requirement credits
if(oper.equals("Add"))
{
String sql="select * from " + table;
//out.println(sql);
try
{
ResultSet rs = Retriever.executeSQL(sql);
rs.moveToInsertRow(); // moves cursor to the insert row
try
{
String dataIn= RequirementParser.toCourseDatabaseString(request.getParameter("CourseList"));
rs.updateString("CourseList", dataIn );
rs.updateString("CreditsRequired", request.getParameter("Credits"));
rs.insertRow();
out.println("Requirement Added Successfully!");
}
catch (RequirementParserException e)
{
out.println(e.getMessage());
}
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Add
} //end else if *_REQ
//CASE 3: any other table
else
{
//from SCHOOLS to SchoolID
primaryKey=table.substring(0,1) + (table.substring(1,table.length()-1)).toLowerCase() + "ID";
//CASE 3 a)
//paramters received: table and id to be deleted
if(oper.equals("Delete"))
{
String sql="delete from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
Retriever.executeSQL(sql);
out.println("Record Deleted Successfully!");
} //end if Delete
//CASE 3 b)
//paramters received: table and id to be modified
//all fields in the table
if(oper.equals("Modify"))
{
//this is used to make sure that the primary key is not modified
id=request.getParameter("pk" + primaryKey);
String sql="select * from " + table + " where " + primaryKey + "=" + id;
//out.println(sql);
try
{
ResultSet rs = Retriever.executeSQL(sql);
//get enumeration of all paramters passed
keys = request.getParameterNames();
//loop through all parameters
while (keys.hasMoreElements())
{
key1 = (String) keys.nextElement();
value = request.getParameter(key1);
//make sure it is not the oper or table or the primary key
if( (key1.equals("oper")) || (key1.equals("table")) || ((key1.substring(0,2)).equals("pk")) )
{
//do nothing
}
else
{
//out.println(sql + " " + key1 + " v:" + value);
rs.updateString(key1,value);
}
}
rs.updateRow();
rs.close();
out.println("Record Modified Successfully!");
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Modify
//CASE 3 c)
//paramters received: table to which record is to be addes
//all fields in the table
if(oper.equals("Add"))
{
String sql="select * from " + table;
//out.println(sql);
try
{
ResultSet rs = Retriever.executeSQL(sql);
rs.moveToInsertRow(); // moves cursor to the insert row
//get enumeration of all paramters passed
keys = request.getParameterNames();
//loop through all parameters
while (keys.hasMoreElements())
{
key1 = (String) keys.nextElement();
value = request.getParameter(key1);
//make sure it is not the oper or table
if( (key1.equals("oper")) || (key1.equals("table")) )
{
//do nothing
}
else
{
//out.println(sql + " " + key1 + " v:" + value);
rs.updateObject(key1,value);
}
}
rs.insertRow();
rs.close();
out.println("Record Added Successfully!");
} //end try
catch(SQLException e) {out.println("SQLException " + e.getMessage());}
} //end if Modify
} //end else any other table
HTMLUtils.printAdminFooter(out);
} //end method doPost
} //end Query servlet