/** * Create and return the details for a history line. * * @param details * @return */ public String changeDetails() { String the_details = ""; StringTokenizer tokens = new StringTokenizer(this.change_details, "|"); while (tokens.hasMoreTokens()) { String token = tokens.nextToken().trim(); int i = 0; StringTokenizer tokens2 = new StringTokenizer(token, ";"); while (tokens2.hasMoreTokens()) { String token2 = tokens2.nextToken().trim(); token2 = Util.encodeTagAndNull(token2); i++; if (i == 1) { the_details = the_details + "<tr>" + " <td>" + " <b>" + token2 + ":</b>" + " </td>"; } if (i == 2) { the_details = the_details + " <td>" + " " + token2 + " </td>"; } if (i == 3) { the_details = the_details + " <td>" + " " + token2 + " </td>" + "</tr>"; } } // end inner tokenizer for deteils on eg. location } // end outher tokenizer on the list of changes for a container. return the_details; }
/** * @param id * @param table * @param table_id * @param text_id * @param change_details * @param text * @param changed_by * @param timestamp * @param unit * @param old_value * @param new_value */ public HistoryLine( String id, String table, String table_id, String text_id, String change_details, String text, String changed_by, String timestamp, String unit, String old_value, String new_value, String structure) { this.id = id; this.table = table; this.table_id = table_id; this.text_id = text_id; this.change_details = change_details; this.text = text; this.changed_by = changed_by; this.timestamp = timestamp; this.unit = unit; this.old_value = old_value; this.new_value = new_value; // Handle search history. if (this.table.equals(History.SEARCH_COMPOUND)) { html_line = " <td style=\"vertical-align: top\">" + " " + Util.encodeTagAndNull(this.table) + // Table " </td>" + " <td style=\"vertical-align: top\">" + " " + Util.encodeTagAndNull(this.text_id) + // Text id = Search performed, quick search or repeated. " </td>" + " <td style=\"vertical-align: top\">"; StringTokenizer st = new StringTokenizer(this.change_details, "#", true); int i = 1; while (st.hasMoreElements()) { String str = (String) st.nextElement(); if (i == 1) { if (!str.equals("#")) html_line += "Chemical Name: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 2) { if (!str.equals("#")) html_line += "Formula: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 3) { if (!str.equals("#")) html_line += "CAS: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 4) { if (!str.equals("#")) html_line += "Density: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 5) { if (!str.equals("#")) html_line += "Reg. date: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 6) { if (!str.equals("#")) html_line += "Reg. by: " + Util.encodeTagAndNull(str) + "<br/>"; } else if (i == 7) { if (!str.equals("#")) html_line += "Method: " + Util.encodeTagAndNull(str) + "<br/>"; } i++; } html_line += " </td>" + " <td style=\"vertical-align: top\"><a title=\"" + Util.encodeTagAndNull(this.text) + "\" href=\"" + Attributes.HISTORY_BASE + "?action=search_history&repeatSearch=true&repeatSearchId=" + id + "\">" + " RUN QUERY" + // text = the resulting sql " </a></td>" + " <td style=\"vertical-align: top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // Search by " </td>" + " <td style=\"vertical-align: top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // timestamp " </td>"; if (structure == null || structure.equals("") || structure.trim().length() < 15) { html_line += " <td style=\"vertical-align: top\">" + "No structure" + "</td>"; } else { html_line += " <td style=\"vertical-align: top\"><a href=\"#\" title=\"Display Structure data in new window.\" onclick=\"openWindow(\'" + Attributes.HISTORY_BASE + "?action=search_structure&search_Id=" + id + "\')\">" + "Show Structure" + // Show the strucure data " </a></td>"; } } // Handle container created line if (this.text.equals(History.CREATE_CONTAINER)) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td>" + " --" + // change details is empty for creation of a container " </td>" + " <td>" + " --" + // old value is empty for creation of a container " </td>" + " <td>" + " " + Util.encodeTagAndNull(this.new_value) + // new value = the registered value " </td>" + " <td>" + " " + Util.encodeTagAndNull(this.unit) + // unit " </td>"; } // handle container check in if (this.text.equals(History.CHECK_IN)) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td>" + " --" + // change details is empty for creation of a container " </td>" + " <td>" + " " + Util.encodeTag(this.old_value) + " </td>" + " <td>" + " " + Util.encodeTagAndNull(this.new_value) + // new value = the registered value " </td>" + " <td>" + " " + Util.encodeTagAndNull(this.unit) + // unit " </td>"; } // handle container check out if (this.text.equals(History.CHECK_OUT)) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td>" + " --" + // change details is empty for creation of a container " </td>" + " <td>" + " --" + // old value is empty for check out " </td>" + " <td>" + " --" + // new value is empty for check out " </td>" + " <td>" + " --" + // unit is empty for checkout " </td>"; } // handle delete of container if (this.text.equals(History.DELETE) && this.table.equals(History.CONTAINER_TABLE)) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td>" + " --" + // change details is empty for creation of a container " </td>" + " <td>" + " " + this.old_value + // old value " </td>" + " <td>" + " " + this.new_value + // new value " </td>" + " <td>" + " " + this.unit + // unit " </td>"; } // Handle transfer of a container if (this.text.indexOf(History.TRANSFER_BY) != -1) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td>" + " --" + // change details is empty for creation of a container " </td>" + " <td>" + " " + this.old_value + // old value " </td>" + " <td>" + " " + this.new_value + // new value " </td>" + " <td>" + " " + this.unit + // unit " </td>"; } // handle moving a container. if (this.text.indexOf(History.MOVE_CONTAINER) != -1 && this.table.equals(History.CONTAINER_TABLE)) { /* * Create the details */ String the_details = changeDetails(); // encode the text remark of the change line this.text = Util.encodeTagAndNull(this.text); this.text = this.text.replaceAll("\n", "<br//>"); String old_location = ""; String new_location = ""; int u = 0; StringTokenizer strtok = new StringTokenizer(change_details, "|"); while (strtok.hasMoreElements()) { String tmpstr = (String) strtok.nextElement(); if (u == 0) new_location = tmpstr; else old_location = tmpstr; u++; } html_line = " <td valign=\"top\">" + " " + this.text + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td align=\"center\" valign=\"top\">" + " <table class=\"history\" border=\"1\">" + " <tr>" + " <th width=\"35%\">" + " Old Loc." + " </th>" + " <th width=\"35%\">" + " New Loc." + " </th>" + " </tr>" + " <tr>" + " <td align=\"center\">" + old_location + " </td>" + " <td align=\"center\">" + new_location + " </td>" + " </tr>" + " </table>" + // change details is empty for creation of a container " </td>" + " <td valign=\"top\">" + " --" + // old value user change details " </td>" + " <td valign=\"top\">" + " --" + // new value use change details " </td>" + " <td valign=\"top\">" + " --" + // unit use change details " </td>"; } // handle modify of a container. if (this.text.indexOf(History.MODIFY) != -1 && this.table.equals(History.CONTAINER_TABLE)) { /* * Create the details */ String the_details = changeDetails(); // encode the text remark of the change line this.text = Util.encodeTagAndNull(this.text); this.text = this.text.replaceAll("\n", "<br//>"); html_line = " <td valign=\"top\">" + " " + this.text + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td align=\"center\" valign=\"top\">" + " <table class=\"history\" border=\"1\">" + " <tr>" + " <th width=\"30%\">" + " Field" + " </th>" + " <th width=\"35%\">" + " Old" + " </th>" + " <th width=\"35%\">" + " New" + " </th>" + " </tr>" + " " + the_details + " </table>" + // change details is empty for creation of a container " </td>" + " <td valign=\"top\">" + " --" + // old value user change details " </td>" + " <td valign=\"top\">" + " --" + // new value use change details " </td>" + " <td valign=\"top\">" + " --" + // unit use change details " </td>"; } /*Create the history line, for a creation of a compound or modification of a compound*/ if (this.text.equals(History.CREATE_COMPOUND) || (this.text.indexOf(History.MODIFY) != -1 && this.table.equals(History.COMPOUND_TABLE))) { /* * Create the details */ String the_details = changeDetails(); // encode the text remark of the change line this.text = Util.encodeTagAndNull(this.text); this.text = this.text.replaceAll("\n", "<br//>"); html_line = " <td valign=\"top\">" + " " + this.text + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td align=\"center\" valign=\"top\">" + " <table class=\"history\" border=\"1\">" + " <tr>" + " <th width=\"30%\">" + " Field" + " </th>" + " <th width=\"35%\">" + " Old" + " </th>" + " <th width=\"35%\">" + " New" + " </th>" + " </tr>" + " " + the_details + " </table>" + " </td>"; } // History line for delete compound if (this.text.indexOf(History.DELETE_COMPOUND) != -1) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td valign=\"top\">" + Util.encodeTagAndNull(this.text) + "</td>"; } // History line for delete compound if (this.text.indexOf(History.DISPLAY_COMPOUND) != -1 && this.table.indexOf(History.COMPOUND_TABLE) != -1) { html_line = " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.text) + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td valign=\"top\">" + Util.encodeTagAndNull(this.change_details) + "</td>"; } /*history line for the creation and modifycation of a batch*/ if (this.text.equals(History.CREATE_BATCH) || (this.text.indexOf(History.MODIFY_BATCH) != -1 && this.table.equals(History.BATCH_TABLE))) { /* * Create the details */ String the_details = changeDetails(); // encode the text remark of the change line this.text = Util.encodeTagAndNull(this.text); this.text = this.text.replaceAll("\n", "<br//>"); html_line = " <td valign=\"top\">" + " " + this.text + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td align=\"center\" valign=\"top\">" + " <table class=\"history\" border=\"1\">" + " <tr>" + " <th width=\"30%\">" + " Field" + " </th>" + " <th width=\"35%\">" + " Old" + " </th>" + " <th width=\"35%\">" + " New" + " </th>" + " </tr>" + " " + the_details + " </table>" + " </td>"; } /*history line for lock and unlock of a batch*/ if (this.text.equals(History.LOCK_BATCH) || (this.text.indexOf(History.UNLOCK_BATCH) != -1 && this.table.equals(History.BATCH_TABLE))) { // encode the text remark of the change line this.text = Util.encodeTagAndNull(this.text); this.text = this.text.replaceAll("\n", "<br//>"); html_line = " <td valign=\"top\">" + " " + this.text + // type of change " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.changed_by) + // changed by " </td>" + " <td valign=\"top\">" + " " + Util.encodeTagAndNull(this.timestamp) + // time stamp " </td>" + " <td align=\"center\" valign=\"top\">" + " --" + " </td>"; } }