/*
$Log$
Revision 1.6 2005/02/04 15:58:40 heto
Converting from Oracle to PostgreSQL or somewhat more SQL server independence.
Revision 1.5 2003/05/02 07:58:45 heto
Changed the package structure from se.prevas.arexis.XYZ to se.arexis.agdb.XYZ
Modified configuration and source files according to package change.
Revision 1.4 2003/04/25 12:14:45 heto
Changed all references to axDefault.css
Source layout fixes.
Revision 1.3 2002/10/22 06:08:07 heto
rebuilt the "back-buttons".
Dont save the request object, save the URL instead.
New function.
Revision 1.2 2002/10/18 11:41:08 heto
Replaced Assertion.assert with Assertion.assertMsg
Java 1.4 have a keyword "assert".
Revision 1.1.1.1 2002/10/16 18:14:04 heto
Import of aGDB 1.5 L3 from Prevas CVS-tree.
This version of aGDB is migrated to Tomcat from JServ by Tobias Hermansson
Revision 1.13 2001/05/31 07:06:51 frob
Implemented the writeBottomDefault method in HTMLWriter and removed it from all
servlets. The servlets now uses the method in HTMLWriter.
Revision 1.12 2001/05/22 06:54:28 roca
backfunktionality for administrator pages and privileges removed from roles (user mode)
Revision 1.11 2001/05/08 11:11:24 frob
Removed unused methods: writeChrom, writeUser, writeUserPage, writeUserScript,
updateUser and findCid.
Revision 1.10 2001/05/08 06:25:02 frob
Changed some error key names.
Revision 1.9 2001/05/07 06:53:05 frob
Changed all methods that used to call writeError to write an error page. These
methods now calls the general method commitOrRollback which handles any errors.
Revision 1.8 2001/05/03 13:23:27 frob
Implemented local version of errorQueryString and changed writeError to use this
method when calling writeErrorPage.
Revision 1.7 2001/05/03 07:57:31 frob
Replaced calls to removeQSParameter to calls to dedicated methods eg removeQSParameterSid
Revision 1.6 2001/05/02 11:01:10 frob
Changed calls to removeCid, removeOper and removeSid to use the general removeQSParameter.
Revision 1.5 2001/04/27 14:14:02 frob
Changed writeError, it now calls the general writeErroPage.
Revision 1.4 2001/04/24 09:33:45 frob
Moved file import classes to new package se.prevas.arexis.util.FileImport,
caused updates in several files.
Revision 1.3 2001/04/24 06:31:18 frob
Checkin after merging frob_fileparser branch.
*/
package se.arexis.agdb.servlet;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.oreilly.servlet.MultipartRequest; // For file uploads
import se.arexis.agdb.db.*;
import se.arexis.agdb.util.*;
import se.arexis.agdb.util.FileImport.*;
public class adminLMark extends AdminArexisServlet
{
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
/**
* This method dispatches the request to the corresponding
* method. The servlet handles the surrounding frameset,
* the top frame, the bottom frame and methods for creation of
* new groupings.
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
String extPath = req.getPathInfo();
if (extPath == null || extPath.equals("") || extPath.equals("/")) {
// The frame is requested
writeFrame(req, res);
} else if (extPath.equals("/top")) {
writeTop(req, res);
} else if (extPath.equals("/bottom")) {
writeBottom(req, res);
} else if (extPath.equals("/middle")) {
writeMiddle(req, res);
} else if (extPath.equals("/edit")) {
writeEdit(req, res);
} else if (extPath.equals("/new")) {
writeNew(req, res);
} else if (extPath.equals("/impLMarkFile")) {
writeImpLMarkFile(req, res);
} else if (extPath.equals("/impLMarkSU")) {
writeImpLMarkSU(req, res);
} else if (extPath.equals("/editAllele")) {
writeEditAllele(req, res);
} else if (extPath.equals("/newAllele")) {
writeNewAllele(req, res);
} else if (extPath.equals("/details")) {
writeDetails(req, res);
} else if (extPath.equals("/impLMarkMultipart")) {
if (createLMarkFile(req, res))
writeFrame(req, res);
}
}
private void writeFrame(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
// set content type and other response header fields first
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
try
{
// Check if redirection is needed and save URL
res = checkRedirectStatus(req,res);
// Old method.
//req= getServletState(req,session);
String topQS = buildQS(req);
// we don't want the oper parameter anaywhere but in the "edit" and "new" page!
topQS = removeQSParameterOper(topQS);
String bottomQS = topQS.toString();
out.println("<html>"
+ "<HEAD>"
+ " <TITLE>Administrate Library Markers</TITLE>"
+ "</HEAD>"
+ "<frameset rows=\"180,35,*\" framespacing=\"0\" border=\"true\">" //
+ "<frame name=\"lmarktop\" "
+ "src=\""+ getServletPath("adminLMark/top?") + topQS + "\""
+ " scrolling=\"no\" marginheight=\"0\" noresize frameborder=\"0\">"
+ "</frame>\n"
+ "<frame name=\"lmarkmiddle\" "
+ "src=\""+ getServletPath("adminLMark/middle?") + topQS + "\""
+ " scrolling=\"no\" marginheight=\"0\" noresize frameborder=\"0\">"
+ "</frame>\n"
+ "<frame name=\"lmarkbottom\""
+ "src=\"" +getServletPath("adminLMark/bottom?") + bottomQS + "\" "
+ " scrolling=\"auto\" marginheight=\"0\" frameborder=\"0\"></frameset>"
+ "<noframes><body><p>"
+ "This page uses frames, but your browser doesn't support them."
+ "</p></body></noframes></frameset>"
+ "</HTML>");
} catch (Exception e)
{
e.printStackTrace(System.err);
}
finally {
}
}
private String buildQS(HttpServletRequest req) {
StringBuffer output = new StringBuffer(512);
HttpSession session = req.getSession(true);
Connection conn = (Connection) session.getValue("conn");
String action = null, // For instance COUNT, DISPLAY, NEXT etc
old_sid = null,
sid = null, // species id
cid = null, // Chromosome id
name = null,
lmid = null,
orderby = null;
boolean sid_changed = false;
old_sid = (String) session.getValue("SID");
// We need to make sure that the old_sid doesn't equal '*', since
// this page doesn't support that alternetive
if ("*".equals(old_sid) ) old_sid = null;
sid = req.getParameter("sid");
if (sid == null) {
sid = old_sid;
sid_changed = true;
} else if (old_sid != null && !old_sid.equals(sid)) {
sid_changed = true;
}
if (sid == null) {
sid = findSid(conn);
sid_changed = true;
}
session.putValue("SID", sid);
cid = req.getParameter("cid");
if (cid == null || cid.trim().equals("") || sid_changed) {
cid = "*" ; //findCid(conn, sid);
}
name = req.getParameter("name");
lmid = req.getParameter("lmid");
// Find the requested action
if ("DISPLAY".equalsIgnoreCase(req.getParameter("DISPLAY"))) {
action = "DISPLAY";
} else if ("COUNT".equalsIgnoreCase(req.getParameter("COUNT"))) {
action = "COUNT";
} else if ("<<".equalsIgnoreCase(req.getParameter("TOP"))) {
action = "TOP";
} else if ("<".equalsIgnoreCase(req.getParameter("PREV"))) {
action = "PREV";
} else if (">".equalsIgnoreCase(req.getParameter("NEXT"))) {
action = "NEXT";
} else if (">>".equalsIgnoreCase(req.getParameter("END"))) {
action = "END";
} else {
action = req.getParameter("ACTION");
if (action == null) action = "NOP";
}
output.append("ACTION=").append(action);
// Set the parameters STARTINDEX and ROWS
if (!action.equals("NOP"))
output.append(setIndecis(sid_changed, action, req, session));
if (sid != null && !sid.trim().equals(""))
output.append("&sid=").append(sid);
if (cid != null && !cid.trim().equals(""))
output.append("&cid=").append(cid);
if (lmid != null && !lmid.trim().equals(""))
output.append("&lmid=").append(lmid);
if (name != null && !name.trim().equals(""))
output.append("&name=").append(name);
if (req.getParameter("oper") != null) {
output.append("&oper=").append(req.getParameter("oper"));
}
orderby = req.getParameter("ORDERBY");
if (orderby != null)
output.append("&ORDERBY=").append(orderby);
else
output.append("&ORDERBY=NAME");
return output.toString().replace('%', '*');
}
private String findSid(Connection conn) {
Statement stmt = null;
ResultSet rset = null;
String ret;
try {
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT SID FROM gdbadm.V_SPECIES_1 ORDER BY NAME");
if (rset.next()) {
ret = rset.getString("SID");
} else {
ret = "-1";
}
} catch (SQLException e) {
ret = "-1";
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
}
}
return ret;
}
private String findSuid(Connection conn) {
Statement stmt = null;
ResultSet rset = null;
String ret;
try {
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT SUID FROM gdbadm.V_SAMPLING_UNITS_1 ORDER BY NAME");
if (rset.next()) {
ret = rset.getString("SUID");
} else {
ret = "-1";
}
} catch (SQLException e) {
ret = "-1";
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
}
}
return ret;
}
private String findCidFromSuid(Connection conn, String suid) {
Statement stmt = null;
ResultSet rset = null;
String ret;
try {
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT CID FROM gdbadm.V_CHROMOSOMES_1 WHERE SID " +
"IN(SELECT SID FROM V_SAMPLING_UNITS_1 WHERE SUID=" + suid + ")" +
" ORDER BY to_number_else_null(NAME), NAME");
if (rset.next()) {
ret = rset.getString("CID");
} else {
ret = "-1";
}
} catch (SQLException e) {
ret = "-1";
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
}
}
return ret;
}
private String setIndecis(boolean sid_changed, String action, HttpServletRequest req, HttpSession session) {
StringBuffer output = new StringBuffer(128);
int rows = 0, startIndex = 0, maxRows = 0;
rows = countRows(req, session);
maxRows = getMaxRows(session);
if (req.getParameter("STARTINDEX") != null && !sid_changed) {
startIndex = Integer.parseInt(req.getParameter("STARTINDEX"));
// System.err.println("start="+ startIndex);
} else
startIndex = 1;
if ("COUNT".equalsIgnoreCase(action) ||
"DISPLAY".equalsIgnoreCase(action)) {
if (startIndex >= rows)
startIndex = 1;
} else if ("TOP".equalsIgnoreCase(action)) {
startIndex = 1;
} else if ("PREV".equalsIgnoreCase(action)) {
// decrement startindex with maxRows, if possible
startIndex -= maxRows;
if (startIndex < 1) startIndex = 1;
} else if ("NEXT".equalsIgnoreCase(action)) {
// Increment startindex with maxrows, if possible
startIndex += maxRows;
//System.err.println("maxrows="+maxRows+" incremented=" +startIndex);
if (startIndex >= rows)
startIndex -= maxRows;
} else if ("END".equalsIgnoreCase(action)) {
int mult = (int) rows / maxRows;
if (rows % maxRows == 0) mult--;
startIndex = (mult > 0 ? mult : 0) * maxRows + 1;
} else {
// action = NOP, i guess
}
output.append("&STARTINDEX=").append(startIndex)
.append("&ROWS=").append(rows);
//System.err.println("out="+output.toString());
return output.toString();
}
private int countRows(HttpServletRequest req, HttpSession session) {
Connection conn = (Connection) session.getValue("conn");
Statement stmt = null;
ResultSet rset = null;
StringBuffer sbSQL = new StringBuffer(512);
try {
sbSQL.append("SELECT count(lmid) " +
"FROM V_L_MARKERS_1 WHERE 1=1 ");
sbSQL.append(buildFilter(req,false));
stmt = conn.createStatement();
rset = stmt.executeQuery(sbSQL.toString());
rset.next();
return rset.getInt(1);
} catch (SQLException e) {
e.printStackTrace(System.err);
return 0;
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
}catch (SQLException ignored) {}
}
}
private String buildFilter(HttpServletRequest req)
{
return buildFilter(req,true);
}
private String buildFilter(HttpServletRequest req, boolean order)
{
String sid = null,
cid = null,
name = null;
// orderby = null;
StringBuffer filter = new StringBuffer(256);
sid = req.getParameter("sid");
cid = req.getParameter("cid");
name = req.getParameter("name");
if (sid != null && !sid.trim().equals(""))
filter.append(" and SID=" + sid);
if (cid != null && !cid.trim().equals("") && !cid.equals("*"))
filter.append(" and CID=" + cid);
if (name != null && !name.trim().equals(""))
filter.append(" and name like '" + name + "'");
// if (order)
// {
// if (orderby != null && !"".equalsIgnoreCase(orderby))
// filter.append(" order by " + orderby);
// else
// filter.append(" order by NAME");
// }
// Replace every occurence of '*' with '%' and return the string
// (Oracel uses '%' as wildcard while '%' demands some specail treatment
// when passed in the query string)
return filter.toString().replace('*', '%');
}
/***************************************************************************************
* *************************************************************************************
* The top frame
*/
public void writeTop(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// set content type and other response header fields first
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
String oper;
oper = req.getParameter("oper");
if (oper == null || "".equals(oper))
oper = "SELECT";
HttpSession session = req.getSession(true);
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
int startIndex = 0, rows = 0, maxRows = 0;
String sid, cid, name, oldQS, newQS, action;
try {
conn = (Connection) session.getValue("conn");
// We baldly count on that sid and cid have been set by buildQS(..)
sid = req.getParameter("sid");
cid = req.getParameter("cid");
name = req.getParameter("name");
action = req.getParameter("ACTION");
oldQS = req.getQueryString();
newQS = buildTopQS(oldQS);
if (req.getParameter("STARTINDEX") != null)
startIndex = Integer.parseInt(req.getParameter("STARTINDEX"));
else
startIndex = 0;
if (req.getParameter("ROWS") != null)
rows = Integer.parseInt(req.getParameter("ROWS"));
else
rows = 0;
if (name == null || name.trim().equals(""))
name = "";
out.println("<html>");
out.println("<head><link rel=\"stylesheet\" type=\"text/css\" href=\""+ getURL("style/view.css") +"\">");
out.println("<base target=\"adminmainframe\">");
out.println("<title>Library Markers</title>");
out.println("</head>");
out.println("<body bgcolor=\"#ffffd0\">");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<form method=get action=\"" +getServletPath("adminLMark") +"\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr><tr><td width=\"517\">");
out.println("<table width=488 height=\"92\">" +
"<td><b> </td>");
// Species
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT SID, NAME FROM V_SPECIES_1 ORDER BY NAME");
out.println("<td><b>Species</b><br>");
out.println("<select name=\"sid\" width=120 style=\"WIDTH: 120px\" " +
"onChange='JavaScript:document.forms[0].submit();'>");
while (rset.next()) {
if (sid.equals(rset.getString("SID")) ) {
out.println("<option selected value=\"" + rset.getString("SID") + "\">" +
rset.getString("NAME") + "</option>");
} else {
out.println("<option value=\"" + rset.getString("SID") + "\">" +
rset.getString("NAME") + "</option>");
}
}
out.println("</select></td>");
// Chromosomes
rset.close();
stmt.close();
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT CID, NAME FROM V_CHROMOSOMES_1 " +
"WHERE SID=" + sid + " ORDER BY TO_NUMBER_ELSE_NULL(NAME), NAME");
out.println("<td><b>Chromosome</b><br>");
out.println("<select name=\"cid\" width=120 " +
"style=\"WIDTH: 120px\">");
out.println("<option ");
if ("*".equals(cid))
out.println("selected ");
out.println("value=\"*\">*</option>");
while (rset.next() ) {
if (cid.equals(rset.getString("CID")) ) {
out.println("<option selected value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
} else {
out.println("<option value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
}
}
out.println("</select></td>");
// Name
out.println("<td><b>Name</b><br>");
out.println("<input name=\"name\" width=120 style=\"WIDTH: 120px\" " +
"value=\"" + name + "\"></td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td><b> </td>");
out.println("<td><b> </b><br></td>");
out.println("<td><b> </b><br></td></table></td>");
//Buttons
out.println("<td width=219>");
out.println("<table border=0 cellpadding=0 cellspacing=0 width=135 align=\"right\">\n");
out.println("<td colspan=4>\n");
out.println("<input type=button value=\"New L. Marker\"" +
" onClick='parent.location.href=\"" +getServletPath("adminLMark/new?") + newQS + "\"' " +
"height=20 width=\"139\" style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 133px\" name=\"button\">" +
"</td>");
out.println("<tr><td width=68 colspan=2>" +
"<input id=COUNT name=COUNT type=submit value=\"Count\" width=\"69\"" +
" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 66px\">" +
"</td>");
out.println("<td width=68 colspan=2>" +
"<input id=DISPLAY name=DISPLAY type=submit value=\"Display\"" +
" width=\"70\" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 66px\">" +
"</td></tr>");
// some hidden values
out.println("<input type=\"hidden\" id=\"STARTINDEX\" name=\"STARTINDEX\" value=\"" + startIndex + "\">");
// out.println("<input type=\"hidden\" id=\"ORDERBY\" name=\"ORDERBY\" value=\"" + orderby + "\">");
out.println("<input type=\"hidden\" id=\"oper\" name=\"oper\" value=\"\">");
out.println("<td width=34 colspan=1><input id=TOP name=TOP type=submit value=\"<<\"" +
"width=\"35\" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 31px\">" +
"</td>");
out.println("<td width=34 colspan=1><input id=PREV name=PREV type=submit value=\"<\"" +
"width=\"34\" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 32px\">" +
"</td>");
out.println("<td width=34 colspan=1><input id=NEXT name=NEXT type=submit value=\">\"" +
"width=\"35\" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 32px\">" +
"</td>");
out.println("<td width=34 colspan=1><input id=END name=END type=submit value=\">>\"" +
"width=\"35\" height=15 style=\"font-size: 9pt; HEIGHT: 24px; WIDTH: 31px\">" +
"</td>");
out.println("</table></form></td></tr></table>");
out.println("</body></html>");
} catch (Exception e) {
out.println("<PRE>");
e.printStackTrace(out);
out.println("</PRE>");
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {}
}
}
private String buildTopQS(String oldQS) {
StringBuffer sb = new StringBuffer(256);
// First we remove the ORDERBY parameter (Must be at the end)
int i1 = 0, i2 = 0;
i1 = oldQS.indexOf("&ORDERBY=");
if (i1 >= 0)
oldQS = oldQS.substring(0, i1);
// Now let's remove the parameter ACTION
i1 = oldQS.indexOf("ACTION=");
if (i1 >= 0) {
i2 = oldQS.indexOf("&", i1 + 1);
if (12 > i1) {
sb.append(oldQS.substring(0, i1));
sb.append(oldQS.substring(i2 + 1));
} else {
// There was no parameter after ACTAION
}
} else { // The query string didn't contain a ACTION-parameter
sb.append(oldQS);
}
return sb.toString();
}
private String buildInfoLine(String action, int startIndex, int rows, int maxRows) {
String output = null;
int upperLimit = startIndex + maxRows - 1;
if (upperLimit > rows) upperLimit = rows;
if (rows == 0) startIndex = 0;
if (action.regionMatches(true, 0, "NEXT", 0, "NEXT".length())) {
// Print the current row intervall
output = new String("Displaying " + startIndex + "-" + upperLimit +
" of " + rows + " rows.");
} else if (action.regionMatches(true, 0, "PREV", 0, "PREV".length())) {
// Print the current row intervall
output = new String("Displaying " + startIndex + "-" + upperLimit +
" of " + rows + " rows.");
} else if (action.regionMatches(true, 0, "TOP", 0, "TOP".length())) {
// Print the current row intervall
output = new String("Displaying " + startIndex + "-" + upperLimit +
" of " + rows + " rows.");
} else if (action.regionMatches(true, 0, "END", 0, "END".length())) {
// Print the current row intervall
output = new String("Displaying " + startIndex + "-" + upperLimit +
" of " + rows + " rows.");
} else if ("COUNT".equalsIgnoreCase(action)) {
// Count the number of rows this filter will return
output = new String("Query will return " + rows + " rows.");
} else if ("DISPLAY".equalsIgnoreCase(action)) {
// print the current row intervall
output = new String("Displaying " + startIndex + "-" + upperLimit +
" of " + rows + " rows.");
} else if ("NOP".equalsIgnoreCase(action)) {
// Print something that isn't visible (to make the frame as big as it would be in the cases above
output = new String(" ");
} else {
// ???
output = new String("?" + action + "?");
}
return output;
}
/***********************************************************
/* The middle frame (contains header for the result-table)
*/
private void writeMiddle(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
// set content type and other response header fields first
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
Statement stmt = null;
ResultSet rset = null;
Connection conn = null;
String action;
int startIndex, rows, maxRows;
action = req.getParameter("ACTION");
if (req.getParameter("STARTINDEX") != null)
startIndex = Integer.parseInt(req.getParameter("STARTINDEX"));
else
startIndex = 0;
if (req.getParameter("ROWS") != null)
rows = Integer.parseInt(req.getParameter("ROWS"));
else
rows = 0;
maxRows = getMaxRows(session);
try {
out.println("<html>\n<head>\n<link rel=\"stylesheet\" " +
"type=\"text/css\" href=\""+getURL("style/tableBar.css")+"\">");
out.println("<base target=\"adminmainframe\">");
out.println("</head>");
out.println("<body>");
if(action != null)
{
//out.println("<p align=left> ");
out.println(" "+buildInfoLine(action, startIndex, rows, maxRows));
}
String oldQS, newQS;
oldQS = req.getQueryString();
String choosen= req.getParameter("ORDERBY");
newQS = buildTopQS(oldQS);
/*
out.println("<table bgcolor=\"#008B8B\" border=0 cellpadding=0 cellspacing=0 " +
"height=20 width=820 style=\"margin-left:2px\">" +
"<td width=5></td>");
*/
out.println("<table width=846 border=0 cellspacing=0 cellpadding=0 valign=top>");
out.println("<table bgcolor=\"#008B8B\" border=0 cellpadding=0 cellspacing=0" +
" height=20 width=850 style=\"margin-left:2px\">");
out.println("<td width=5></td>");
// the menu choices
// Chromosome
out.println("<td width=100><a href=\"" +
getServletPath("adminLMark")+"?ACTION=DISPLAY&" + newQS + "&ORDERBY=CNAME\">");
if(choosen.equals("CNAME"))
out.println("<FONT color=saddlebrown><b>Chromosome</b></FONT></a></td>");
else
out.println("Chromosome</a></td>");
// Name
out.println("<td width=150><a href=\"" +
getServletPath("adminLMark") + "?ACTION=DISPLAY&" + newQS + "&ORDERBY=NAME\">");
if (choosen.equals("NAME"))
out.println("<FONT color=saddlebrown><b>Name</b></FONT></a></td>");
else
out.println("Name</a></td>");
// Comment
out.println("<td width=250><a href=\"" +
getServletPath("adminLMark")+"?ACTION=DISPLAY&" + newQS + "&ORDERBY=COMM\">");
if(choosen.equals("COMM"))
out.println("<FONT color=saddlebrown><b>Comment</b></FONT></a></td>");
else
out.println("Comment</a></td>");
// Primer 1
out.println("<td width=100><a href=\"" +
getServletPath("adminLMark") + "?ACTION=DISPLAY&" + newQS + "&ORDERBY=P1\">");
if (choosen.equals("P1"))
out.println("<font color=saddlebrown><b>Primer 1</b></font></a></td>");
else
out.println("Primer 1</a></td>");
// Primer 2
out.println("<td width=100><a href=\"" +
getServletPath("adminLMark") + "?ACTION=DISPLAY&" + newQS + "&ORDERBY=P2\">");
if (choosen.equals("P2"))
out.println("<font color=saddlebrown><b>Primer 2</b></font></a></td>");
else
out.println("Primer 2</a></td>");
// Position
out.println("<td width=50><a href=\"" +
getServletPath("adminLMark") + "?ACTION=DISPLAY&" + newQS + "&ORDERBY=POSITION\">");
if (choosen.equals("POSITION"))
out.println("<font color=saddlebrown><b>Pos.</b></font></a></td>");
else
out.println("Pos.</a></td>");
/*
out.println("<td width=80> </td>"); // Details
out.println("<td width=80> </td>"); // Edit
out.println("</tr></table>");
// out.println("</td></tr></table>");
out.println("</body></html>");
*/
out.println("<td width=50> </td>");
out.println("<td width=50> </td>");
out.println("</table></table>");
out.println("</body></html>");
} catch (Exception e)
{
out.println("<strong>Error in filter!</strong><br>");
out.println("Error message: " + e.getMessage());
out.println("<br>Modify filter according to message!</body></html>");
}
finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (Exception ignored) {}
}
}
/***************************************************************************************
* *************************************************************************************
* The bottom frame
*/
private void writeBottom(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
// set content type and other response header fields first
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
Statement stmt = null;
ResultSet rset = null;
Connection conn = null;
try {
String action = null, orderby;
String oldQS = req.getQueryString();
oldQS = removeQSParameterSid(oldQS);
action = req.getParameter("ACTION");
orderby = req.getParameter("ORDERBY");
if (action == null || action.equalsIgnoreCase("NOP") ||
action.equalsIgnoreCase("COUNT") )
{
// Nothing to do!
HTMLWriter.writeBottomDefault(out);
return;
}
else if (action.equalsIgnoreCase("NEXT"))
{
;
}
else if (action.equalsIgnoreCase("PREV"))
{
;
}
out.println("<html>\n"
+ "<head><link rel=\"stylesheet\" type=\"text/css\" href=\""
+getURL("style/bottom.css")+"\">\n"
+ "<title>bottomFrame</title>\n"
+ "</head>\n"
+ "<body>\n");
conn = (Connection) session.getValue("conn");
stmt = conn.createStatement();
StringBuffer sbSQL = new StringBuffer(512);
sbSQL.append("SELECT CNAME, LMID, NAME, COMM, P1, P2, POSITION " +
"FROM V_L_MARKERS_2 WHERE 1=1 ");
// Build filter
String filter = buildFilter(req);
sbSQL.append(filter);
if ("CNAME".equals(orderby))
sbSQL.append(" ORDER BY TO_NUMBER_ELSE_NULL(NAME), NAME");
else
sbSQL.append(" ORDER BY ").append(orderby);
rset = stmt.executeQuery(sbSQL.toString());
out.println("<TABLE align=left border=0 cellPadding=0");
out.println("cellSpacing=0 width=850 style=\"margin-left:2px\">");//STYLE=\"WIDTH: 790px;\">");
boolean odd = true;
// First we spawn rows!
int rowCount = 0;
int startIndex = Integer.parseInt( req.getParameter("STARTINDEX"));
if (startIndex > 1) {
while ((rowCount++ < startIndex - 1) && rset.next())
;
}
rowCount = 0;
int maxRows = getMaxRows(session);
while (rset.next() && rowCount < maxRows) {
out.println("<TR align=left ");
if (odd) {
out.println("bgcolor=white>");
odd = false;
} else {
out.println("bgcolor=lightgrey>");
odd = true;
}
out.println("<td width=5></td>");
out.println("<TD WIDTH=100>" + formatOutput(session, rset.getString("CNAME"), 3) + "</TD>");
out.println("<TD WIDTH=150>" + formatOutput(session, rset.getString("NAME"),15) +"</TD>");
out.println("<TD WIDTH=250>" + formatOutput(session, rset.getString("COMM"),30)+"</TD>");
out.println("<TD WIDTH=100>" + formatOutput(session, rset.getString("P1"),10)+"</TD>");
out.println("<TD WIDTH=100>" + formatOutput(session, rset.getString("P2"),10)+"</TD>");
out.println("<TD WIDTH=50>" + formatOutput(session, rset.getString("POSITION"),5)+"</TD>");
out.println("<TD WIDTH=50><A HREF=\"" +getServletPath("adminLMark/details?lmid=")
+ rset.getString("LMID")
+ "&" + oldQS + "\" target=\"adminmainframe\">Details</A></TD>");
out.println("<TD WIDTH=50><A HREF=\"" +getServletPath("adminLMark/edit?lmid=")
+ rset.getString("LMID")
+ "&" + oldQS + "\" target=\"adminmainframe\">Edit</A></TD>");
out.println("</TD></TR>");
rowCount++;
}
out.println("</TABLE>");
out.println("<table><tr><td> </td></tr></table>");
out.println("</body></html>");
} catch (Exception e)
{
out.println("<strong>Error in filter!</strong><br>");
out.println("Error message: " + e.getMessage());
out.println("<br>Modify filter according to message!</body></html>");
e.printStackTrace(System.err);
}
finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (Exception ignored) {}
}
}
/***************************************************************************************
* *************************************************************************************
* The detail page
*/
private void writeDetails(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
String name, comm, cname, sname, p1, p2, position;
boolean odd = true;
try {
String oldQS = buildQS(req);
String lmid = req.getParameter("lmid");
conn = (Connection) session.getValue("conn");
out.println("<html>");
out.println("<head>");
out.println("<title>Library Markers - Details</title>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - Details</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
// General Data
stmt = conn.createStatement();
String strSQL = "SELECT SNAME, CNAME, CID, NAME, COMM, P1, P2, POSITION " +
"FROM V_L_MARKERS_2 WHERE LMID=" + lmid ;
rset = stmt.executeQuery(strSQL);
rset.next();
name = rset.getString("NAME");
comm = rset.getString("COMM");
sname = rset.getString("SNAME");
cname = rset.getString("CNAME");
p1 = rset.getString("P1");
p2 = rset.getString("P2");
position = rset.getString("POSITION");
out.println("</tr><tr><td></td><td></td><tr><td></td><td>");
out.println("<table><tr>");
out.println("<td width=15 style=\"WIDTH: 15px\">");
out.println("</td><td>");
out.println("<table cellspacing=0 cellpadding=0 border=0>");
out.println("<tr>");
out.println("<td colspan=2 align=center>");
out.println("<b>General</b>");
out.println("</td></tr>");
out.println("<tr><td width=200>Species</td><td>" + formatOutput(session, sname, 20) + "</td></tr>");
out.println("<tr><td>Chromosome</td><td>" + formatOutput(session, cname, 20) + "</td></tr>");
out.println("<tr><td>Name</td><td>" + formatOutput(session, name, 20) + "</td></tr>");
out.println("<tr><td>Comment</td><td>" + formatOutput(session, comm, 256) + "</td></tr>");
out.println("<tr><td>Primer 1</td><td>" + formatOutput(session, p1, 40) + "</td></tr>");
out.println("<tr><td>Primer 2</td><td>" + formatOutput(session, p2, 40) + "</td></tr>");
out.println("<tr><td>Position</td><td>" + formatOutput(session, position, 20) + "</td></tr>");
out.println("</table>");
out.println("</tr><tr><td></td><td></td><tr><td></td><td>");
// Alleles
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT NAME, COMM FROM V_L_ALLELES_1 " +
"WHERE lmid=" + lmid + " ORDER BY TO_NUMBER_ELSE_NULL(NAME), NAME");
out.println("<table cellspacing=0 cellpadding=0>");
out.println("<tr>");
out.println("<td>");
out.println("<b>Alleles</b>");
out.println("</td><td> </td></tr>");
out.println("<tr bgcolor=\"#008B8B\">");
out.println("<td width=200 style=\"WIDTH: 200px\">Name</td>");
out.println("<td width=250 style=\"WIDTH: 250px\">Comment</td>");
out.println("</tr>");
odd = true;
while (rset.next()) {
out.println("<TR align=left ");
if (odd) {
out.println("bgcolor=white>");
} else {
out.println("bgcolor=lightgrey>");
}
odd = !odd;
out.println("<td>");
out.println(formatOutput(session, rset.getString("NAME"), 20));
out.println("</td>");
out.println("<td>");
out.println(formatOutput(session, rset.getString("COMM"), 30));
out.println("</td></tr>");
}
out.println("</table>");
out.println("</tr><tr><td></td><td></td><tr><td></td><td>");
out.println("</tr><tr><td></td><td></td><tr><td></td><td>");
out.println("</td></tr><tr><td></td><td>");
out.println("<form>");
/*
out.println("<input type=button value=Back width=100 " +
"style=\"WIDTH: 100px\" onClick='history.go(-1);'>");
*/
out.println("<input type=button value=Back width=100 " +
"style=\"WIDTH: 100px\" onClick='location.href=\"" +
getServletPath("adminLMark?&RETURNING=YES") + "\"'> ");
out.println("</form>");
out.println("</td>");
out.println("</tr></table>");
out.println("</body></html>");
} catch (SQLException e)
{
out.println("<PRE>");
e.printStackTrace(out);
out.println("</PRE>");
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {}
}
}
/***************************************************************************************
* *************************************************************************************
* The new species page
*/
private void writeNew(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
String oper = req.getParameter("oper");
conn = (Connection) session.getValue("conn");
if (oper == null) oper = "SEL_CHANGED";
if (oper.equals("CREATE")) {
if (create(req, res, conn)) {
writeFrame(req, res);
} else {
; // We have already displayed an error message!
}
} else {
writeNewPage(req, res);
}
}
private void writeNewPage(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = (Connection) session.getValue("conn");
ResultSet rset = null;
Statement stmt = null;
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
String newQS, oper, sid, cid, name;
try {
conn = (Connection) session.getValue("conn");
sid = req.getParameter("sid");
cid = req.getParameter("cid");
name = req.getParameter("name");
if (name == null) name = "";
newQS = "";
oper = req.getParameter("oper");
out.println("<html>");
out.println("<head>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
writeNewScript(out);
out.println("<title>New Library Marker</title>");
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - New</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
out.println("<form method=get action=\"" +
getServletPath("adminLMark/new?") + newQS + "\">");
out.println("<table width=400 border=0 cellSpacing=0 cellPading=5>");
// Species
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT SID, NAME FROM V_SPECIES_1 ORDER BY NAME");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Species<br>");
out.println("<select name=sid width=200 style=\"WIDTH: 200px\" " +
"onChange='selChanged(\"SID\");'>");
while (rset.next()) {
if (sid.equals(rset.getString("SID")) )
out.println("<option selected value=\"" + rset.getString("SID") + "\">" +
rset.getString("NAME") + "</option>");
else
out.println("<option value=\"" + rset.getString("SID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td></tr>");
rset.close();
stmt.close();
// Chromosome
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT CID, NAME FROM V_CHROMOSOMES_1 " +
"WHERE SID=" + sid + " ORDER BY TO_NUMBER_ELSE_NULL(NAME), NAME");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Chromosome<br>");
out.println("<select name=cid width=200 style=\"WIDTH: 200px\"'>");
while (rset.next()) {
if (cid.equals(rset.getString("CID")) )
out.println("<option selected value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
else
out.println("<option value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td></tr>");
// Name
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Name<br>");
out.println("<input name=n maxlength=20 width=200 " +
"style=\"WIDTH: 200px; HEIGHT: 22px\">");
out.println("</td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
// Alias
out.println("Alias<br>");
out.println("<input name=a maxlength=20 width=200 " +
"style=\"WIDTH: 200px; HEIGHT: 22px\">");
out.println("</td></tr>");
// Primer 1
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Primer 1<br>");
out.println("<input name=p1 maxlength=40 width=200 " +
"style=\"WIDTH: 200px\">");
out.println("</td></tr>");
// Primer 2
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Primer 2<br>");
out.println("<input name=p2 maxlength=40 width=200 " +
"style=\"WIDTH: 200px\">");
out.println("</td></tr>");
// Position
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Position<br>");
out.println("<input name=p maxlength=20 width=200 " +
"style=\"WIDTH: 200px; HEIGHT: 22px\">");
out.println("</td></tr>");
// Comment
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td>");
out.println("<td>Comment<br>");
out.println("<textarea rows=10 cols=40 name=c>");
out.println("</textarea>");
out.println("</td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td></td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("<table cellspacing=0 cellpading=0 border=0><tr>");
out.println("<td>");
out.println("<input type=button value=Back width=100 " +
/*"style=\"WIDTH: 100px\" onClick='document.location.href=\"" +
getServletPath("adminLMark?") + newQS + "\"'>");
*/
"style=\"WIDTH: 100px\" onClick='document.location.href=\"" +
getServletPath("adminLMark?&RETURNING=YES") + "\"'>");
out.println(" ");
out.println("</td><td>");
out.println("<input type=button value=Create width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm()'>");
out.println(" </td></tr></table>");
out.println("</td></tr>");
out.println("</table>");
out.println("<input type=hidden name=oper value=\"\">");
out.println("<input type=hidden name=RETURNING value=YES>");
out.println("<input type=hidden name=name value=\"" + name + "\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
;
}
}
/***************************************************************************************
* *************************************************************************************
* The new library allele page
*/
private void writeNewAllele(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
String oper = req.getParameter("oper");
conn = (Connection) session.getValue("conn");
if (oper == null) oper = "SEL_CHANGED";
if (oper.equals("CREATE")) {
if (createAllele(req, res, conn)) {
writeEditPage(req, res);
} else {
; // We have already displayed an error message!
}
} else {
writeNewAllelePage(req, res);
}
}
private void writeNewAllelePage(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = (Connection) session.getValue("conn");
Statement stmt = null;
ResultSet rset = null;
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
String newQS, lmid;
try {
conn = (Connection) session.getValue("conn");
lmid = req.getParameter("lmid");
newQS = removeQSParameterOper(req.getQueryString());
out.println("<html>");
out.println("<head>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
writeNewAlleleScript(out);
out.println("<title>New library allele</title>");
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - Edit - Create Allele</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
out.println("<form method=post action=\"" +
getServletPath("adminLMark/newAllele?") + newQS + "\">");
out.println("<table width=400 border=0 cellSpacing=0 cellPading=5>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("Name<br>");
out.println("<input name=n maxlength=20 width=200 " +
"style=\"WIDTH: 200px; HEIGHT: 22px\">");
out.println("</td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td>");
out.println("<td>Comment<br>");
out.println("<textarea rows=10 cols=40 name=c>");
out.println("</textarea>");
out.println("</td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td></td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("<table cellspacing=0 cellpading=0 border=0><tr>");
out.println("<td>");
out.println("<input type=button value=Back width=100 " +
"style=\"WIDTH: 100px\" onClick='document.location.href=\"" +
getServletPath("adminLMark/edit?") + newQS + "\"'>");
out.println(" ");
out.println("</td><td>");
out.println("<input type=button value=Create width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm()'>");
out.println(" </td></tr></table>");
out.println("</td></tr>");
out.println("</table>");
out.println("<input type=hidden name=oper value=\"\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
}
}
}
private void writeImpLMarkSU(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
String oper = req.getParameter("oper");
conn = (Connection) session.getValue("conn");
if (oper == null) oper = "SEL_CHANGED";
if (oper.equals("COPY")) {
if (importSuMark(req, res, conn)) {
writeImpLMarkSUPage(req, res);
} else {
; // We have already displayed an error message!
}
} else {
writeImpLMarkSUPage(req, res);
}
}
private void writeImpLMarkSUPage(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = (Connection) session.getValue("conn");
Statement stmt = null;
ResultSet rset = null;
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
String sid, cid, suid, pid, oper, item;
try {
conn = (Connection) session.getValue("conn");
pid = (String) session.getValue("PID");
suid = req.getParameter("suid");
cid = req.getParameter("cid");
oper = req.getParameter("oper");
if (oper == null) oper = "SEL_CHANGED";
item = req.getParameter("item");
if (item == null) item = "";
if (oper.equals("SEL_CHANGED")) {
if (item.equals("suid")) {
cid = findCidFromSuid(conn, suid);
} else if (item.equals("cid")) {
;
} else {
suid = findSuid(conn);
cid = findCidFromSuid(conn, suid);
}
}
out.println("<html>");
out.println("<head>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
writeSelectionScript(out);
out.println("<title>Import Library Marker</title>");
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - Import from Sampling unit</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
out.println("<table border=0 cellSpacing=0 cellPading=5>");
out.println("<tr><td width=20></td><td>");
out.println("<form method=post action=\"" +
getServletPath("adminLMark/impLMarkSU") + "\">");
out.println("<table border=0 cellpading=0 cellspacing=0>");
out.println("<tr>");
// From Sampling unit
out.println("<td>Sampling unit<br>");
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT SUID, NAME FROM V_SAMPLING_UNITS_1 " +
" ORDER BY NAME");
out.println("<select name=suid width=200 style=\"WIDTH: 200px\" " +
"onChange='selChanged(\"suid\");'>");
while (rset.next()) {
out.println("<option " +
(suid.equals(rset.getString("SUID")) ? "selected " : "") +
"value=\"" + rset.getString("SUID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println ("</select>");
out.println("</td>");
rset.close();
stmt.close();
out.println("</tr>");
out.println("<tr>");
// Chromosome
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT CID, NAME FROM V_CHROMOSOMES_1 " +
"WHERE SID IN(SELECT SID FROM V_SAMPLING_UNITS_1 WHERE SUID=" + suid + ") " +
" ORDER BY " +
"TO_NUMBER_ELSE_NULL(NAME), NAME");
out.println("<td>Chromosome<br>");
out.println("<select name=cid width=200 style=\"WIDTH: 200px\" " +
"onChange='selChanged(\"cid\");'>");
while (rset.next() ) {
out.println("<option " +
(cid.equals(rset.getString("CID")) ? "selected " : "") +
"value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td>");
rset.close();
stmt.close();
out.println("</tr>");
out.println("<tr>");
// Marker
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT MID, NAME FROM V_MARKERS_1 WHERE " +
"SUID=" + suid + " AND CID=" + cid + " ORDER BY NAME");
out.println("<td>Marker<br>");
out.println("<select name=mid width=200 style=\"WIDTH: 200px\">");
while (rset.next()) {
out.println("<option value=\"" + rset.getString("MID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td>");
rset.close();
stmt.close();
out.println("</tr></table>");
out.println("</td></tr>");
out.println("<tr><td></td><td></td></tr><tr><td></td><td>");
// Copy button
out.println("<table cellspacing=0 cellpading=0>");
out.println("<tr>");
out.println("<td>");
out.println("<input type=button value=Copy width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm(\"COPY\");'> ");
out.println("</td></tr></table>");
// Some hidden values
out.println("<input type=hidden name=oper value=\"\">");
out.println("<input type=hidden name=item value=\"\">");
out.println("</form>");
out.println("</td></tr></table>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {
}
}
}
private void writeImpLMarkFile(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
conn = (Connection) session.getValue("conn");
writeImpLMarkFilePage(req, res);
}
private void writeImpLMarkFilePage(HttpServletRequest request,
HttpServletResponse response)
throws IOException
{
HttpSession session = request.getSession(true);
Connection connection = (Connection) session.getValue("conn");
Statement sqlStatement = null;
ResultSet resultSet = null;
response.setContentType("text/html");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
try
{
connection = (Connection) session.getValue("conn");
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " +
"Transitional//EN\"");
out.println(" \"http://www.w3.org/TR/html4/loose.dtd\">");
out.println("<html>");
out.println("<head>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
// Validation script
out.println("<script type=\"text/javascript\">");
out.println("<!--");
out.println("function valForm() {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" if (rc) {");
out.println(" if (confirm('Are you sure that you want to create the libarary markers?')) {");
out.println(" document.forms[0].oper.value = 'UPLOAD';");
out.println(" document.forms[0].submit();");
out.println(" }");
out.println(" }");
out.println(" ");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
out.println("<title>Import library markers from file</title>");
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=0>" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - Import from file</b></center>" +
"</td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
out.println("<form method=post enctype=\"multipart/form-data\" action=\"" +
getServletPath("adminLMark/impLMarkMultipart?") + "\">");
out.println("<table border=0>");
// The species
sqlStatement = connection.createStatement();
resultSet = sqlStatement.executeQuery("SELECT NAME, SID FROM V_SPECIES_1 ORDER BY NAME");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td>");
out.println("<td>Species<br>");
out.println("<select name=sid style=\"WIDTH: 200px\">");
while (resultSet.next()) {
out.println("<option value=\"" + resultSet.getString("SID") + "\">" +
resultSet.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td></tr>");
// The file
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td>");
out.println("<td>File<br>");
out.println("<input type=file name=filename " +
"style=\"WIDTH: 350px\"></td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td></td></tr>");
out.println("<tr><td width=10 style=\"WIDTH: 10px\"> </td><td>");
out.println("<table border=0><tr>");
out.println("<td>");
out.println("<input type=button value=Send " +
"style=\"WIDTH: 100px\" onClick='valForm()'>");
out.println(" </td></tr></table>");
out.println("</td></tr>");
out.println("</table>");
out.println("<input type=hidden name=oper value=\"\">");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} catch (Exception e) {
e.printStackTrace(System.err);
} finally {
try {
if (resultSet != null) resultSet.close();
if (sqlStatement != null) sqlStatement.close();
} catch (SQLException ignored) {
}
}
}
private void writeSelectionScript(PrintWriter out) {
out.println("<script language=\"JavaScript\">");
out.println("<!--");
out.println("function selChanged(item) {");
out.println(" document.forms[0].item.value = \"\" + item;");
out.println(" document.forms[0].oper.value = \"SEL_CHANGED\";");
out.println(" document.forms[0].submit();");
out.println("}");
out.println("function valForm() {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" ");
out.println(" ");
out.println(" if (rc) {");
out.println(" if (confirm('Are you sure that you want to copy the marker?')) {");
out.println(" document.forms[0].oper.value = 'COPY'");
out.println(" document.forms[0].submit();");
out.println(" }");
out.println(" }");
out.println(" ");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
}
private void writeNewScript(PrintWriter out) {
out.println("<script language=\"JavaScript\">");
out.println("<!--");
out.println("function selChanged(item) {");
out.println(" document.forms[0].oper.value = 'SEL_CHANGED';");
out.println(" document.forms[0].submit();");
out.println(" }");
out.println("function valForm() {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" if ( (\"\" + document.forms[0].c.value) != \"\" &&");
out.println(" document.forms[0].c.value.length > 255) {");
out.println(" alert('Comment must be less than 255 characters!');");
out.println(" rc = 0;");
out.println(" }");
out.println(" if ( (\"\" + document.forms[0].n.value) == \"\") {");
out.println(" rc = 0;");
out.println(" }");
out.println(" ");
out.println(" ");
out.println(" if (rc) {");
out.println(" if (confirm('Are you sure that you want to create the library marker?')) {");
out.println(" document.forms[0].oper.value = 'CREATE'");
out.println(" document.forms[0].submit();");
out.println(" }");
out.println(" }");
out.println(" ");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
}
private void writeNewAlleleScript(PrintWriter out) {
out.println("<script language=\"JavaScript\">");
out.println("<!--");
out.println("function valForm() {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" if ( (\"\" + document.forms[0].c.value) != \"\" &&");
out.println(" document.forms[0].c.value.length > 255) {");
out.println(" alert('Comment must be less than 255 characters!');");
out.println(" rc = 0;");
out.println(" }");
out.println(" if ( (\"\" + document.forms[0].n.value) == \"\") {");
out.println(" rc = 0;");
out.println(" }");
out.println(" ");
out.println(" ");
out.println(" if (rc) {");
out.println(" if (confirm('Are you sure that you want to create the library allele?')) {");
out.println(" document.forms[0].oper.value = 'CREATE'");
out.println(" document.forms[0].submit();");
out.println(" }");
out.println(" }");
out.println(" ");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
}
/***************************************************************************************
* *************************************************************************************
* The edit page
*/
private void writeEdit(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
String oper = req.getParameter("oper");
conn = (Connection) session.getValue("conn");
if (oper == null) oper = "";
if (oper.equals("DELETE")) {
if (delete(req, res, conn))
writeFrame(req, res);
} else if (oper.equals("UPDATE")) {
if (updateLMarker(req, res, conn))
writeEditPage(req, res);
} else
writeEditPage(req, res);
}
private void writeEditPage(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
Connection conn = (Connection) session.getValue("conn");
Statement stmt = null;
ResultSet rset = null;
try {
String oldQS = req.getQueryString(); //buildQS(req);
// Since oper might be included in the old query string, we better remove it.
// If we don't, the application won't be able to retrive the correct value because
// servlets gets the parameters included in the url before the ones posted.
oldQS = removeQSParameterOper(oldQS);
oldQS = removeQSParameterCid(oldQS);
String lmid = req.getParameter("lmid");
out.println("<html>");
out.println("<head>");
writeEditScript(out);
out.println("<title>Edit Library marker</title>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Library Markers - Edit</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
stmt = conn.createStatement();
String sql = "SELECT NAME, ALIAS, CID, P1, P2, POSITION, COMM " +
"FROM V_L_MARKERS_1 WHERE LMID=" + lmid;
rset = stmt.executeQuery(sql);
rset.next();
String name = rset.getString("NAME");
String comm = rset.getString("COMM");
String alias = rset.getString("ALIAS");
String p1 = rset.getString("P1");
String p2 = rset.getString("P2");
String position = rset.getString("POSITION");
String cid = rset.getString("CID");
rset.close();
stmt.close();
// oldQS contains iid and mid!
// Belowe we use rather cryptic names for the form data. We do this to prevent that
// the data in the form won't collide with the data in the old query string
out.println("<FORM action=\"" + getServletPath("adminLMark/edit?") +
oldQS + "\" method=\"post\" name=\"FORM1\">");
out.println("<table border=0 cellpading=0 cellspacing=0><tr>");
out.println("<td width=10 style=\"WIDTH: 15px\">");
out.println("</td><td>");
out.println("<table width=400 cellspacing=0 cellpading=0 border=0>");
out.println("<tr>");
// Chromosome
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT CID, NAME FROM V_CHROMOSOMES_1 WHERE " +
"SID=(SELECT SID FROM V_CHROMOSOMES_1 WHERE CID=" + cid + ")");
out.println("<td width=200>Chromosome<br>");
out.println("<select name=cid width=195 " +
"style=\"WIDTH: 195px; HEIGHT: 22px\">");
while (rset.next()) {
if (cid.equals(rset.getString("CID")))
out.println("<option selected value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
else
out.println("<option value=\"" + rset.getString("CID") + "\">" +
rset.getString("NAME") + "</option>");
}
out.println("</select>");
out.println("</td>");
out.println("</tr>");
out.println("<tr>");
// Name
out.println("<td width=200>Name<br>");
out.println("<input type=text name=n maxlength=20 width=195 " +
"style=\"WIDTH: 195px; HEIGHT: 22px\" value=\"" +
replaceNull(name, "") + "\">");
out.println("</td>");
out.println("</tr>");
out.println("<tr>");
// Alias
out.println("<td width=200>Alias<br>");
out.println("<input type=text name=a maxlength=20 width=195 " +
"style=\"WIDTH: 195px; HEIGHT: 22px\" value=\"" +
replaceNull(alias, "") + "\">");
out.println("</td>");
out.println("</tr>");
out.println("<tr>");
// Primer 1
out.println("<td width=200>Primer 1<br>");
out.println("<input type=text name=p1 maxlength=40 width=195 " +
"style=\"WIDTH: 195px\" value=\"" + replaceNull(p1, "") + "\">");
out.println("</td>");
out.println("</tr>");
// Primer 2
out.println("<td width=200>Primer 2<br>");
out.println("<input type=text name=p2 maxlength=40 width=195 " +
"style=\"WIDTH: 195px\" value=\"" + replaceNull(p2, "") + "\">");
out.println("</td>");
out.println("</tr>");
out.println("<td width=200>Position<br>");
out.println("<input type=text name=p maxlength=20 width=195 " +
"style=\"WIDTH: 195px; HEIGHT: 22px\" value=\"" +
replaceNull(position, "") + "\">");
out.println("</td>");
out.println("</tr>");
out.println("<tr><td>Comment<br>");
out.println("<textarea name=c cols=40 rows=10>");
out.print(replaceNull(comm, ""));
out.println("</textarea>");
out.println("</tr>");
out.println("<tr><td> </td></tr>");
// Alleles
out.println("<tr><td>Alleles<br>");
out.println("<table border=0 cellspacing=0 cellpading=0>");
out.println("<tr bgcolor=\"#008B8B\">");
out.println("<td width=200>Name</td>");
out.println("<td width=250>Comment</td>");
out.println("<td width=100> </td></tr>");
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT NAME, COMM, LAID FROM V_L_ALLELES_1 WHERE " +
"LMID=" + lmid + " ORDER BY TO_NUMBER_ELSE_NULL(NAME), NAME");
boolean odd = true;
while (rset.next() ) {
if (odd) {
out.println("<tr bgcolor=white>");
} else {
out.println("<tr bgcolor=lightgrey>");
}
out.println("<td>" + formatOutput(session, rset.getString("NAME"), 21) + "</td>");
out.println("<td>" + formatOutput(session, rset.getString("COMM"), 30) + "</td>");
out.println("<td><a href=\"" + getServletPath("adminLMark/editAllele?") +
"laid=" + rset.getString("LAID") + "&" + oldQS + "\">Edit</a></td>");
out.println("</tr>");
odd = !odd;
}
out.println("</table>");
out.println("</td></tr>");
// Control buttons
out.println("<tr><td> </td></tr>");
out.println("<tr><td>");
out.println("<table cellspacing=0 cellpadding=0 border=0>");
out.println("<tr>");
out.println("<td>");
out.println("<input type=button value=Back width=100 " +
/* "style=\"WIDTH: 100px\" onClick='location.href=\"" +
getServletPath("adminLMark?") + oldQS + "\"'> ");
*/
"style=\"WIDTH: 100px\" onClick='location.href=\"" +
getServletPath("adminLMark?&RETURNING=YES") + "\"'> ");
out.println("</td><td>");
out.println("<input type=reset value=Reset width=100 " +
"style=\"WIDTH: 100px\"> ");
out.println("</td><td>");
out.println("<input type=button name=CREATE_ALLELE value=\"Create allele\" width=100 " +
"style=\"WIDTH: 100px\" onClick='location.href=\"" +
getServletPath("adminLMark/newAllele?") + oldQS + "\"''> ");
out.println("</td><td>");
out.println("<input type=button name=DELETE value=Delete width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm(\"DELETE\")'> ");
out.println("</td><td>");
out.println("<input type=button name=UPDATE value=Update width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm(\"UPDATE\")'> ");
out.println("</td></tr></table>");
out.println("</td></tr>");
out.println("</table>");
// Store some extra information needed by doPost()
out.println("<input type=\"hidden\" NAME=oper value=\"\">");
out.println("<input type=\"hidden\" NAME=RETURNING value=YES>");
out.println("</td></tr></table>");
out.println("</FORM>");
out.println("</body>");
out.println("</html>");
} catch (Exception e)
{
out.println("<PRE>");
e.printStackTrace(out);
out.println("</PRE>");
}
finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {}
}
}
/***************************************************************************************
* *************************************************************************************
* The edit chromosome page
*/
private void writeEditAllele(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
Connection conn = null;
String oper = req.getParameter("oper");
conn = (Connection) session.getValue("conn");
if (oper == null) oper = "";
if (oper.equals("DELETE")) {
if (deleteAllele(req, res, conn))
writeEditPage(req, res);
} else if (oper.equals("UPDATE")) {
if(updateAllele(req, res, conn))
writeEditAllelePage(req, res);
} else
writeEditAllelePage(req, res);
}
private void writeEditAllelePage(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession(true);
res.setContentType("text/html");
res.setHeader("Pragma", "no-cache");
res.setHeader("Cache-Control", "no-cache");
PrintWriter out = res.getWriter();
Connection conn = (Connection) session.getValue("conn");
Statement stmt = null;
ResultSet rset = null;
try {
String oldQS = buildQS(req);
// Since oper might be included in the old query string, we better remove it.
// If we don't, the application won't be able to retrive the correct value because
// servlets gets the parameters included in the url before the ones posted.
oldQS = removeQSParameterOper(oldQS);
String laid = req.getParameter("laid");
out.println("<html>");
out.println("<head>");
writeAlleleEditScript(out);
out.println("<title>Edit Library Allele</title>");
HTMLWriter.css(out,getURL("style/axDefault.css"));
out.println("</head>");
out.println("<body>");
out.println("<table width=\"846\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" valign=\"top\">" +
"<tr>" +
"<td width=\"14\" rowspan=\"3\"></td>" +
"<td width=\"736\" colspan=\"2\" height=\"15\">");
out.println("<center>" +
"<b style=\"font-size: 15pt\">Libraray Markers - Edit - Alleles</b></center>" +
"</font></td></tr>" +
"<tr><td width=\"736\" colspan=\"2\" height=\"2\" bgcolor=\"#008B8B\"> </td>" +
"</tr></table>");
out.println("<form method=post action=\"" + getServletPath("adminLMark/editAllele?") +
oldQS + "\">");
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT NAME, COMM FROM " +
"V_L_ALLELES_1 WHERE LAID=" + laid);
rset.next();
out.println("<table cellspacing=0 cellpadding=0><tr>" +
"<td width=15></td><td>");
out.println("<table border=0 cellpading= cellspacing=0></tr>");
out.println("<td width=300 style=\"WIDTH: 300px\">");
out.println("Name<br>");
out.println("<input type=text name=n maxlength=20 width=250 " +
"style=\"WIDTH: 250px\" " +
"value=\"" + replaceNull(rset.getString("NAME"), "") + "\"></td></tr>");
out.println("<tr><td>Comment<br>");
out.println("<textarea name=c cols=40 rows=10>" +
replaceNull(rset.getString("COMM"), "") +
"</textarea>");
out.println("</td></tr>");
out.println("<tr><td> </td></tr>");
out.println("</table>");
out.println("</td></tr>");
out.println("<tr><td></td><td>");
out.println("<table cellspacing=0 cellpading=0>");
out.println("<tr>");
out.println("<td>");
out.println("<input type=button name=BACK value=Back width=100 " +
"style=\"WIDTH: 100px\" onClick='location.href=\"" +
getServletPath("adminLMark/edit?") + oldQS + "\"'> ");
out.println("</td><td>");
out.println("<input type=reset value=Reset width=100 " +
"style=\"WIDTH: 100px\"> ");
out.println("</td><td>");
out.println("<input type=button name=DELETE value=Delete width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm(\"DELETE\")'> ");
out.println("</td><td>");
out.println("<input type=button name=UPDATE value=Update width=100 " +
"style=\"WIDTH: 100px\" onClick='valForm(\"UPDATE\")'> ");
out.println("</td></tr></table>");
out.println("</td></tr>");
out.println("</table>");
// Store some extra information
out.println("<input type=\"hidden\" NAME=laid value=\"" + laid + "\">");
out.println("<input type=\"hidden\" NAME=oper value=\"\">");
out.println("</FORM>");
out.println("</td></tr><table>");
out.println("</body>");
out.println("</html>");
} catch (Exception e)
{
out.println("<PRE>");
e.printStackTrace(out);
out.println("</PRE>");
}
finally {
try {
if (rset != null) rset.close();
if (stmt != null) stmt.close();
} catch (SQLException ignored) {}
}
}
/**
* Creates a new library marker.
*
* @param request a HttpServletRequest value.
* @param response a HttpServletResponse value.
* @param connection a Connection value.
* @return True if object was creatd in the database.
* False if object not created.
*/
private boolean create(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
String name, alias, p1, p2, position, comm;
int sid, cid;
// The variables sid and cid should be part of the query string
sid = Integer.parseInt(request.getParameter("sid"));
cid = Integer.parseInt(request.getParameter("cid"));
connection.setAutoCommit(false);
name = request.getParameter("n");
alias = request.getParameter("a");
p1 = request.getParameter("p1");
p2 = request.getParameter("p2");
position = request.getParameter("p");
comm = request.getParameter("c");
DbLMarker dblm = new DbLMarker();
dblm.CreateLMarker(connection, name, alias, comm, p1, p2, position, sid, cid);
// Get the error message from the database object. If it is set an
// error occured during the operation so an exception is thrown.
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response, "LibraryMarkers.New.Create",
errMessage, "adminLMark/new", isOk);
return isOk;
}
/**
* Creates a new allele in a library marker.
*
* @param request a HttpServletRequest value.
* @param response a HttpServletResponse value.
* @param connection a Connection value.
* @return True if database object was created.
* False if object not created.
*/
private boolean createAllele(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
String name, comm;
int lmid;
connection.setAutoCommit(false);
name = request.getParameter("n");
comm = request.getParameter("c");
lmid = Integer.parseInt(request.getParameter("lmid"));
DbLMarker dblm = new DbLMarker();
dblm.CreateLAllele(connection, name, comm, lmid);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.Edit.Allele.Create", errMessage,
"adminLMark/edit", isOk);
return isOk;
}
/**
* Imports library markers for a given species from a file.
*
* @param request The request object to use.
* @param response The response object to use.
* @return True if markers could be imported.
* False if markers could not be imported.
* @exception IOException If error page could not be written.
* @exception ServletException If error page could not be written.
*/
private boolean createLMarkFile(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
boolean isOk = true;
String errMessage = null;
Connection connection = null;
try
{
HttpSession session = request.getSession(true);
connection = (Connection) session.getValue("conn");
connection.setAutoCommit(false);
String upPath = getUpFilePath();
MultipartRequest multiRequest =
new MultipartRequest(request, upPath, 5 * 1024 * 1024);
String speciesId = multiRequest.getParameter("sid");
FileParser fileParser = null;
Enumeration fileEnum = multiRequest.getFileNames();
if (fileEnum.hasMoreElements())
{
DbLMarker dbLMarker = new DbLMarker();
String givenFileName = (String) fileEnum.nextElement();
String systemFileName = multiRequest.getFilesystemName(givenFileName);
fileParser = new FileParser(upPath + "/" + systemFileName);
fileParser.Parse(FileTypeDefinitionList.matchingDefinitions(FileTypeDefinition.LMARKER,
FileTypeDefinition.LIST));
dbLMarker.CreateLMarkers(fileParser, connection,
Integer.parseInt(speciesId));
errMessage = dbLMarker.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.FileImport.Send", errMessage,
"adminLMark/impLMarkFile", isOk);
return isOk;
}
/**
* Deletes a library marker.
*
* @param request The request object to use.
* @param response The response object to use.
* @param connection The connection object to use.
* @return True if object was deleted.
* False if object not deleted
*/
private boolean delete(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
int lmid;
connection.setAutoCommit(false);
lmid = Integer.parseInt(request.getParameter("lmid"));
DbLMarker dblm = new DbLMarker();
dblm.DeleteLMarker(connection, lmid);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.Edit.Delete", errMessage,
"adminLMark/edit", isOk);
return isOk;
}
/**
* Deletes an allele from a library marker.
*
* @param request The request object to use.
* @param response The response object to use.
* @param connection The connection to use.
* @return True if allele was deleted.
* False if allele was not deleted.
*/
private boolean deleteAllele(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
int laid;
connection.setAutoCommit(false);
laid = Integer.parseInt(request.getParameter("laid"));
DbLMarker dblm = new DbLMarker();
dblm.DeleteLAllele(connection, laid);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.Edit.Allele.Delete", errMessage,
"adminLMark/edit", isOk);
return isOk;
}
/**
* Imports library markers from a sampling unit.
*
* @param request The request object to use.
* @param response The response object to use.
* @param connection The connection object to use.
* @return True if markers were imported.
* False if import failed.
*/
private boolean importSuMark(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
int mid;
connection.setAutoCommit(false);
// problem to parse ints if = null !!!
mid = Integer.parseInt(request.getParameter("mid"));
DbLMarker dblm = new DbLMarker();
dblm.CopySUMarker(connection, mid);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.ImportSU.Copy", errMessage,
"adminLMark/impLMarkSU", isOk);
return isOk;
}
/**
* Updates a library marker.
*
* @param request The request object to use.
* @param response The response object to use.
* @param connection The connection object to use.
* @return True if library marker was updated.
* False if update fails.
*/
private boolean updateLMarker(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
connection.setAutoCommit(false);
String name;
String comm;
String alias;
String p1;
String p2;
String position;
int cid;
int lmid;
String oldQS = request.getQueryString();
name = request.getParameter("n");
comm = request.getParameter("c");
alias = request.getParameter("a");
p1 = request.getParameter("p1");
p2 = request.getParameter("p2");
position = request.getParameter("p");
lmid = Integer.parseInt(request.getParameter("lmid"));
cid = Integer.parseInt(request.getParameter("cid"));
DbLMarker dblm = new DbLMarker();
dblm.UpdateLMarker(connection, lmid, name, alias, comm, p1, p2, position, cid);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.Edit.Update", errMessage,
"adminLMark/edit", isOk);
return isOk;
}
private boolean updateAllele(HttpServletRequest request,
HttpServletResponse response,
Connection connection)
{
boolean isOk = true;
String errMessage = null;
try
{
HttpSession session = request.getSession(true);
connection.setAutoCommit(false);
String temp, name, comm;
int laid;
String oldQS = request.getQueryString();
laid = Integer.parseInt(request.getParameter("laid"));
name = request.getParameter("n");
comm = request.getParameter("c");
DbLMarker dblm = new DbLMarker();
dblm.UpdateLAllele(connection, laid, name, comm);
errMessage = dblm.getErrorMessage();
Assertion.assertMsg(errMessage == null ||
errMessage.trim().equals(""), errMessage);
}
catch (Exception e)
{
// Flag for error and set the errMessage if it has not been set
isOk = false;
e.printStackTrace(System.err);
if (errMessage == null)
{
errMessage = e.getMessage();
}
}
commitOrRollback(connection, request, response,
"LibraryMarkers.Edit.Allele.Update", errMessage,
"adminLMark/edit", isOk);
return isOk;
}
private void writeEditScript(PrintWriter out) {
out.println("<script language=\"JavaScript\">");
out.println("<!--");
out.println("function valForm(action) {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" if ('DELETE' == action.toUpperCase()) {");
out.println(" if (confirm('Are you sure you want to delete the library marker.\\n' + ");
out.println(" 'All the library alleles refering to this marker will also be deleted.')) {");
out.println(" document.forms[0].oper.value='DELETE';");
out.println(" rc = 0;");
out.println(" }");
out.println(" ");
out.println(" } else if ('UPDATE' == action.toUpperCase()) {");
out.println(" if (confirm('Are you sure you want to update the library marker?')) {");
out.println(" document.forms[0].oper.value='UPDATE';");
out.println(" rc = 0;");
out.println(" }");
out.println(" } else {");
out.println(" document.forms[0].oper.value='';");
out.println(" }");
out.println(" ");
out.println(" if (rc == 0) {");
out.println(" document.forms[0].submit();");
out.println(" return true;");
out.println(" }");
out.println(" return false;");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
}
private void writeAlleleEditScript(PrintWriter out) {
out.println("<script language=\"JavaScript\">");
out.println("<!--");
out.println("function valForm(action) {");
out.println(" ");
out.println(" var rc = 1;");
out.println(" if ('DELETE' == action.toUpperCase()) {");
out.println(" if (confirm('Are you sure youwant to delete the library allele?')) {");
out.println(" document.forms[0].oper.value='DELETE';");
out.println(" rc = 0;");
out.println(" }");
out.println(" ");
out.println(" } else if ('UPDATE' == action.toUpperCase()) {");
out.println(" if (confirm('Are you sure you want to update the library allele?')) {");
out.println(" document.forms[0].oper.value='UPDATE';");
out.println(" rc = 0;");
out.println(" }");
out.println(" } else {");
out.println(" document.forms[0].oper.value='';");
out.println(" }");
out.println(" ");
out.println(" if (rc == 0) {");
out.println(" document.forms[0].submit();");
out.println(" return true;");
out.println(" }");
out.println(" return false;");
out.println(" ");
out.println("}");
out.println("//-->");
out.println("</script>");
}
/**
* Returns the query string to be used when going back from the error
* page.
*
* @param request The request object to be used when building the string.
* @return The error query string.
*/
protected String errorQueryString(HttpServletRequest request)
{
String errorQueryString = buildQS(request);
return removeQSParameterOper(errorQueryString);
}
}