public String generateHardValidationErrorMessage(
     ArrayList<SubjectDataBean> subjectData,
     HashMap<String, String> hardValidationErrors,
     boolean isValid) {
   StringBuffer sb = new StringBuffer();
   String studyEventRepeatKey = "1";
   String groupRepeatKey = "1";
   sb.append("<table border=\'0\' cellpadding=\'0\' cellspacing=\'0\' width=\'100%\'>");
   for (SubjectDataBean subjectDataBean : subjectData) {
     sb.append(
         "<tr valign=\'top\'> <td class=\'table_header_row\' colspan=\'4\'>Study Subject: "
             + subjectDataBean.getSubjectOID()
             + "</td> </tr>");
     // next step here
     ArrayList<StudyEventDataBean> studyEventDataBeans = subjectDataBean.getStudyEventData();
     for (StudyEventDataBean studyEventDataBean : studyEventDataBeans) {
       sb.append(
           "<tr valign=\'top\'> <td class=\'table_header_row\'>Event CRF OID</td> <td class=\'table_header_row\' colspan=\'3\'></td>");
       sb.append("</tr> <tr valign=\'top\'> <td class=\'table_cell_left\'>");
       sb.append(studyEventDataBean.getStudyEventOID());
       if (studyEventDataBean.getStudyEventRepeatKey() != null) {
         studyEventRepeatKey = studyEventDataBean.getStudyEventRepeatKey();
         sb.append(" (Repeat key " + studyEventDataBean.getStudyEventRepeatKey() + ")");
       } else {
         // reset
         studyEventRepeatKey = "1";
       }
       sb.append("</td> <td class=\'table_cell\' colspan=\'3\'></td> </tr>");
       ArrayList<FormDataBean> formDataBeans = studyEventDataBean.getFormData();
       for (FormDataBean formDataBean : formDataBeans) {
         sb.append("<tr valign=\'top\'> <td class=\'table_header_row\'></td> ");
         sb.append(
             "<td class=\'table_header_row\'>CRF Version OID</td> <td class=\'table_header_row\' colspan=\'2\'></td></tr>");
         sb.append(
             "<tr valign=\'top\'> <td class=\'table_cell_left\'></td> <td class=\'table_cell\'>");
         sb.append(formDataBean.getFormOID());
         sb.append("</td> <td class=\'table_cell\' colspan=\'2\'></td> </tr>");
         ArrayList<ImportItemGroupDataBean> itemGroupDataBeans = formDataBean.getItemGroupData();
         for (ImportItemGroupDataBean itemGroupDataBean : itemGroupDataBeans) {
           sb.append("<tr valign=\'top\'> <td class=\'table_header_row\'></td>");
           sb.append(
               "<td class=\'table_header_row\'></td> <td class=\'table_header_row\' colspan=\'2\'>");
           sb.append(itemGroupDataBean.getItemGroupOID());
           if (itemGroupDataBean.getItemGroupRepeatKey() != null) {
             groupRepeatKey = itemGroupDataBean.getItemGroupRepeatKey();
             sb.append(" (Repeat key " + itemGroupDataBean.getItemGroupRepeatKey() + ")");
           } else {
             groupRepeatKey = "1";
           }
           sb.append("</td></tr>");
           ArrayList<ImportItemDataBean> itemDataBeans = itemGroupDataBean.getItemData();
           for (ImportItemDataBean itemDataBean : itemDataBeans) {
             String oidKey =
                 itemDataBean.getItemOID()
                     + "_"
                     + studyEventRepeatKey
                     + "_"
                     + groupRepeatKey
                     + "_"
                     + subjectDataBean.getSubjectOID();
             if (!isValid) {
               if (hardValidationErrors.containsKey(oidKey)) {
                 sb.append("<tr valign=\'top\'> <td class=\'table_cell_left\'></td>");
                 sb.append(
                     "<td class=\'table_cell\'></td> <td class=\'table_cell\'><font color=\'red\'>");
                 sb.append(itemDataBean.getItemOID());
                 sb.append("</font></td> <td class=" + "\'table_cell\'>");
                 sb.append(itemDataBean.getValue() + "<br/>");
                 sb.append(hardValidationErrors.get(oidKey));
                 sb.append("</td></tr>");
                 /*
                  * <tr valign="top"> <td
                  * class="table_cell_left"></td> <td
                  * class="table_cell"></td> <td
                  * class="table_cell"><font
                  * color="red"><c:out
                  * value="${itemData.itemOID}"/></font></td>
                  * <td class="table_cell"> <c:out
                  * value="${itemData.value}"/><br/> <c:out
                  * value="${hardValidationErrors[oidKey]}"/>
                  * </td> </tr>
                  */
               }
             } else {
               if (!hardValidationErrors.containsKey(oidKey)) {
                 sb.append("<tr valign=\'top\'> <td class=\'table_cell_left\'></td>");
                 sb.append("<td class=\'table_cell\'></td> <td class=\'table_cell\'>");
                 sb.append(itemDataBean.getItemOID());
                 sb.append("</td> <td class=" + "\'table_cell\'>");
                 sb.append(itemDataBean.getValue());
                 sb.append("</td></tr>");
               }
             }
           }
         }
       }
     }
   }
   sb.append("</table>");
   return sb.toString();
 }