/** * @exception ValidationException when entry is not valid. This function validates the user input * and builds the search object * @return the Audit search object */ public AuditSearchObject getAuditSearchObject() throws ValidationException { AuditSearchObject auditSearchObject = new AuditSearchObject(); // if user enters LID and SystemCode get the EUID and set it to the AuditSearchObject if (super.getUpdateableFeildsMap().get("LID") != null && super.getUpdateableFeildsMap().get("SystemCode") != null) { String LID = (String) super.getUpdateableFeildsMap().get("LID"); String SystemCode = (String) super.getUpdateableFeildsMap().get("SystemCode"); if (LID.trim().length() > 0 && SystemCode.trim().length() > 0) { try { // remove masking for LID field LID = LID.replaceAll("-", ""); SystemObject so = masterControllerService.getSystemObject(SystemCode, LID); if (so == null) { errorMessage = bundle.getString("system_object_not_found_error_message"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); // mLogger.error("LID/SYSTEM CODE:: " + errorMessage); mLogger.info(mLocalizer.x("AUD018: LID/SYSTEM CODE : {0}", errorMessage)); } else { EnterpriseObject eo = masterControllerService.getEnterpriseObjectForSO(so); auditSearchObject.setEUID(eo.getEUID()); } } catch (Exception ex) { if (ex instanceof ValidationException) { mLogger.error( mLocalizer.x("AUD019: Service Layer Validation Exception has occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof UserException) { mLogger.error(mLocalizer.x("AUD020: Service Layer User Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (!(ex instanceof ProcessingException)) { mLogger.error(mLocalizer.x("AUD021: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof ProcessingException) { String exceptionMessage = QwsUtil.getRootCause(ex).getMessage(); if (exceptionMessage.indexOf("stack trace") != -1) { String parsedString = exceptionMessage.substring(0, exceptionMessage.indexOf("stack trace")); if (exceptionMessage.indexOf("message=") != -1) { parsedString = parsedString.substring( exceptionMessage.indexOf("message=") + 8, parsedString.length()); } mLogger.error( mLocalizer.x("AUD022: Service Layer Processing Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, parsedString, exceptionMessaage)); } else { mLogger.error(mLocalizer.x("AUD023: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, exceptionMessage, exceptionMessaage)); } } return null; } } } // set EUID VALUE IF lid/system code not supplied if (super.getUpdateableFeildsMap().get("EUID") != null && super.getUpdateableFeildsMap().get("EUID").toString().trim().length() > 0) { auditSearchObject.setEUID((String) super.getUpdateableFeildsMap().get("EUID")); // } else { // auditSearchObject.setEUID(null); } // added as fix of bug with Id 113 on 21-10-08 if (((super.getUpdateableFeildsMap().get("StartDate") != null) && (super.getUpdateableFeildsMap().get("StartDate").toString().trim().length() > 0)) && ((super.getUpdateableFeildsMap().get("EndDate") != null) && (super.getUpdateableFeildsMap().get("EndDate").toString().trim().length() > 0))) { Date fromdate = DateUtil.string2Date( super.getUpdateableFeildsMap().get("StartDate").toString() + ((super.getUpdateableFeildsMap().get("StartTime") != null && super.getUpdateableFeildsMap() .get("StartTime") .toString() .trim() .length() > 0) ? " " + super.getUpdateableFeildsMap().get("StartTime").toString() : " 00:00:00")); Date todate = DateUtil.string2Date( super.getUpdateableFeildsMap().get("EndDate").toString() + ((super.getUpdateableFeildsMap().get("EndTime") != null && super.getUpdateableFeildsMap() .get("EndTime") .toString() .trim() .length() > 0) ? " " + super.getUpdateableFeildsMap().get("EndTime").toString() : " 23:59:59")); long startDate = fromdate.getTime(); long endDate = todate.getTime(); if (endDate < startDate) { errorMessage = bundle.getString("ERROR_INVALID_FROMDATE_RANGE"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); return null; } } String startTime = (String) super.getUpdateableFeildsMap().get("StartTime"); String searchStartDate = (String) super.getUpdateableFeildsMap().get("StartDate"); if (startTime != null && startTime.trim().length() > 0) { // if only time fields are entered validate for the date fields if ((searchStartDate != null && searchStartDate.trim().length() == 0)) { errorMessage = bundle.getString("enter_date_from"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); return null; } } // Set StartDate to the AuditSearchObject if (super.getUpdateableFeildsMap().get("StartDate") != null && super.getUpdateableFeildsMap().get("StartDate").toString().trim().length() > 0) { // append the time aling with date if (startTime != null && startTime.trim().length() > 0) { searchStartDate = searchStartDate + " " + startTime; } else { searchStartDate = searchStartDate + " 00:00:00"; } Date date = DateUtil.string2Date(searchStartDate); if (date != null) { auditSearchObject.setCreateStartDate(new Timestamp(date.getTime())); } } String endTime = (String) super.getUpdateableFeildsMap().get("EndTime"); String searchEndDate = (String) super.getUpdateableFeildsMap().get("EndDate"); if (endTime != null && endTime.trim().length() > 0) { // if only time fields are entered validate for the date fields if ((searchEndDate != null && searchEndDate.trim().length() == 0)) { errorMessage = bundle.getString("enter_date_to"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); return null; } } // Set StartDate to the AuditSearchObject if (super.getUpdateableFeildsMap().get("EndDate") != null && super.getUpdateableFeildsMap().get("EndDate").toString().trim().length() > 0) { // append the time aling with date if (endTime != null && endTime.trim().length() > 0) { searchEndDate = searchEndDate + " " + endTime; } else { searchEndDate = searchEndDate + " 23:59:59"; } Date date = DateUtil.string2Date(searchEndDate); if (date != null) { auditSearchObject.setCreateEndDate(new Timestamp(date.getTime())); } } // EndTime=, StartTime=, EndDate=, StartDate=, Function=null, SystemUser=, SystemCode=null, // LID=, EUID= if (super.getUpdateableFeildsMap().get("SystemUser") != null && super.getUpdateableFeildsMap().get("SystemUser").toString().trim().length() > 0) { auditSearchObject.setCreateUser((String) super.getUpdateableFeildsMap().get("SystemUser")); } else { auditSearchObject.setCreateUser(null); } if (super.getUpdateableFeildsMap().get("Function") != null && super.getUpdateableFeildsMap().get("Function").toString().trim().length() > 0) { auditSearchObject.setFunction((String) super.getUpdateableFeildsMap().get("Function")); } else { auditSearchObject.setFunction(null); } // Set to static values need clarification from prathiba // This will be revoked when login module is implemented. // auditSearchObject.setPageSize(ConfigManager.getInstance().getMatchingConfig().getItemPerSearchResultPage()); // auditSearchObject.setMaxElements(ConfigManager.getInstance().getMatchingConfig().getMaxResultSize()); // set max results and page size here auditSearchObject.setPageSize(super.getPageSize()); auditSearchObject.setMaxElements(super.getMaxRecords()); Date date = null; if (errorMessage != null && errorMessage.length() != 0) { throw new ValidationException(mLocalizer.t("AUD501: {0}", errorMessage)); } return auditSearchObject; }
/** * This method calls the service layer method MasterControllerService.lookupAuditLog to fetch the * Audit Log Search results The method builds the array of AuditDataObject to be displayed on the * resulting JSF * * @return AUDIT_LOG_SEARCH_RES the Navigation rule for the JSF framework * @throws com.sun.mdm.index.presentation.exception.HandlerException */ public ArrayList auditLogSearch() throws HandlerException { try { super.setUpdateableFeildsMap(parametersMap); // check one of many condtion here if (super.checkOneOfManyCondition()) { errorMessage = bundle.getString("ERROR_one_of_many"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); // mLogger.error("Validation failed. Message displayed to the user: "******"One of Many :: " + // errorMessage); mLogger.info(mLocalizer.x("AUD001: Validation failed : {0}", errorMessage)); return null; } // Check if all the required values in the group are entered by the user HashMap oneOfErrors = super.checkOneOfGroupCondition(); if (oneOfErrors.size() > 0) { Iterator iter = oneOfErrors.keySet().iterator(); while (iter.hasNext()) { String key = (String) iter.next(); String message = bundle.getString("ERROR_ONE_OF_GROUP_TEXT1") + (key == null ? " " : " " + key + " ") + bundle.getString("ERROR_ONE_OF_GROUP_TEXT2"); FacesContext.getCurrentInstance() .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message)); ArrayList fieldsInGroup = (ArrayList) oneOfErrors.get(key); for (int i = 0; i < fieldsInGroup.size(); i++) { String fields = (String) fieldsInGroup.get(i); FacesContext.getCurrentInstance() .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, fields, fields)); } } return null; } // Check if all required values are entered by the user ArrayList requiredErrorsList = super.isRequiredCondition(); if (requiredErrorsList.size() > 0) { for (int i = 0; i < requiredErrorsList.size(); i++) { String fields = (String) requiredErrorsList.get(i); fields += " " + bundle.getString("ERROR_ONE_OF_GROUP_TEXT2"); FacesContext.getCurrentInstance() .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, fields, fields)); } return null; } // Added to check the format of the user enter LID value adheres to the // System defined LID format if ((getUpdateableFeildsMap().get("LID") != null && getUpdateableFeildsMap().get("LID").toString().trim().length() > 0)) { if (!super.checkMasking( (String) getUpdateableFeildsMap().get("LID"), (String) getUpdateableFeildsMap().get("lidmask"))) { String localIdDesignation = ConfigManager.getInstance().getConfigurableQwsValue(ConfigManager.LID, "Local ID"); String messages = localIdDesignation + " " + bundle.getString("lid_format_error_text") + " " + (String) getUpdateableFeildsMap().get("lidmask"); FacesContext.getCurrentInstance() .addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, messages, messages)); ArrayList lidErrorList = new ArrayList(); // fix of 6703149 HashMap lidError = new HashMap(); lidError.put("LID_SYSTEM_CODE_ERROR", messages); lidErrorList.add(lidError); return lidErrorList; } } // if user enters LID ONLY if ((super.getUpdateableFeildsMap().get("LID") != null && super.getUpdateableFeildsMap().get("LID").toString().trim().length() > 0) && super.getUpdateableFeildsMap().get("SystemCode") == null) { errorMessage = bundle.getString("LID_only"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); // mLogger.error("Validation failed. Message displayed to the user: "******"LID/SystemCode // Validation :: " + errorMessage); mLogger.info(mLocalizer.x("AUD002: {0} ", errorMessage)); ArrayList lidErrorList = new ArrayList(); // fix of 6703149 HashMap lidError = new HashMap(); lidError.put("LID_SYSTEM_CODE_ERROR", errorMessage); lidErrorList.add(lidError); return lidErrorList; } // if user enters LID and SystemCode Validate the LID if (super.getUpdateableFeildsMap().get("LID") != null && super.getUpdateableFeildsMap().get("SystemCode") != null) { String LID = (String) super.getUpdateableFeildsMap().get("LID"); String SystemCode = (String) super.getUpdateableFeildsMap().get("SystemCode"); if (SystemCode.trim().length() > 0 && LID.trim().length() == 0) { errorMessage = bundle.getString("enter_LID"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, errorMessage, errorMessage)); // mLogger.error("Validation failed. Message displayed to the user: "******"LID/SystemCode // Validation :: " + errorMessage); mLogger.info( mLocalizer.x("AUD003: LID/SystemCode Validation failed : {0}", errorMessage)); ArrayList lidErrorList = new ArrayList(); // fix of 6703149 HashMap lidError = new HashMap(); lidError.put("LID_SYSTEM_CODE_ERROR", errorMessage); lidErrorList.add(lidError); return lidErrorList; } } // if user enters LID and SystemCode Validate the LID if (super.getUpdateableFeildsMap().get("LID") != null && super.getUpdateableFeildsMap().get("SystemCode") != null) { String LID = (String) super.getUpdateableFeildsMap().get("LID"); String SystemCode = (String) super.getUpdateableFeildsMap().get("SystemCode"); if (LID.trim().length() > 0 && SystemCode.trim().length() > 0) { try { // remove masking for LID field LID = LID.replaceAll("-", ""); SystemObject so = masterControllerService.getSystemObject(SystemCode, LID); if (so == null) { errorMessage = bundle.getString("system_object_not_found_error_message"); String msg = bundle.getString("LID_SYSTEM_CODE"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, msg + errorMessage, errorMessage)); mLogger.info(mLocalizer.x("AUD004: LID Validation failed : {0}", LID, errorMessage)); ArrayList lidErrorList = new ArrayList(); // fix of 6703149 HashMap lidError = new HashMap(); lidError.put("LID_SYSTEM_CODE_ERROR", errorMessage); lidErrorList.add(lidError); return lidErrorList; } } catch (Exception ex) { if (ex instanceof ValidationException) { mLogger.error( mLocalizer.x("AUD005: Service Layer Validation Exception has occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof UserException) { mLogger.error(mLocalizer.x("AUD006: Service Layer User Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (!(ex instanceof ProcessingException)) { mLogger.error(mLocalizer.x("AUD007: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof ProcessingException) { String exceptionMessage = QwsUtil.getRootCause(ex).getMessage(); if (exceptionMessage.indexOf("stack trace") != -1) { String parsedString = exceptionMessage.substring(0, exceptionMessage.indexOf("stack trace")); if (exceptionMessage.indexOf("message=") != -1) { parsedString = parsedString.substring( exceptionMessage.indexOf("message=") + 8, parsedString.length()); } mLogger.error( mLocalizer.x("AUD008: Service Layer Processing Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, parsedString, exceptionMessaage)); } else { mLogger.error(mLocalizer.x("AUD009: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, exceptionMessage, exceptionMessaage)); } } return null; } } } // Validate all date fields entered by the user if (super.validateDateFields().size() > 0) { Object[] messObjs = super.validateDateFields().toArray(); for (int i = 0; i < messObjs.length; i++) { String obj = (String) messObjs[i]; String[] fieldErrors = obj.split(">>"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, fieldErrors[0] + " : " + fieldErrors[1], fieldErrors[1])); mLogger.info( mLocalizer.x( "AUD010: Invalid date format : {0} : {1}", fieldErrors[0], fieldErrors[1])); return null; } } // Validate all time fields entered by the user if (super.validateTimeFields().size() > 0) { Object[] messObjs = super.validateTimeFields().toArray(); for (int i = 0; i < messObjs.length; i++) { String obj = (String) messObjs[i]; String[] fieldErrors = obj.split(">>"); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, fieldErrors[0] + " : " + fieldErrors[1], fieldErrors[1])); mLogger.info( mLocalizer.x( "AUD011: Invalid time format : {0} :{1}", fieldErrors[0], fieldErrors[1])); return null; } } AuditSearchObject aso = this.getAuditSearchObject(); if (aso == null) return null; // Lookup Audit log Controller AuditIterator alPageIter = masterControllerService.lookupAuditLog(aso); // AuditIterator alPageIterOutput = masterControllerService.lookupAuditLog(aso); int i = 0; // Set the size of the VO Array setAuditLogVO(new AuditDataObject[alPageIter.count()]); // SimpleDateFormat sdf = new SimpleDateFormat(ConfigManager.getDateFormat() + " HH:mm:ss"); SimpleDateFormat simpleDateFormatFields = new SimpleDateFormat(ConfigManager.getDateFormat() + " HH:mm:ss"); // Populate the Value Object to be displayed on the JSF page. while (alPageIter.hasNext()) { auditLogVO[i] = new AuditDataObject(); // to be safe with malloc auditLogVO[i] = alPageIter.next(); AuditDataObject auditDataObject = auditLogVO[i]; // to be safe with malloc /*String outputValues = "{AuditId:" + "\"" + auditDataObject.getId() + "\"" + ", EUID1: " + "\"" + ((auditDataObject.getEUID1() != null) ? auditDataObject.getEUID1() : "") +"\"" + ", EUID2: " + "\"" + ((auditDataObject.getEUID2() != null) ? auditDataObject.getEUID2() : "") +"\"" + ", Function: " + "\"" + ((auditDataObject.getFunction() != null) ? auditDataObject.getFunction() : "") +"\"" + ", Detail: " + "\"" + ((auditDataObject.getDetail() != null) ? auditDataObject.getDetail() : "") +"\"" + ", CreateDate: " + "\"" + ((auditDataObject.getCreateDate() != null) ? sdf.format(auditDataObject.getCreateDate()) : "") +"\"" + ", CreateUser: "******"\"" + ((auditDataObject.getCreateUser() != null) ? auditDataObject.getCreateUser() : "") +"\"" + "}"; */ HashMap resultsMap = new HashMap(); resultsMap.put("AUDITID", auditDataObject.getId()); resultsMap.put("EUID1", auditDataObject.getEUID1()); resultsMap.put("EUID2", auditDataObject.getEUID2()); resultsMap.put("Function", auditDataObject.getFunction()); resultsMap.put("Detail", auditDataObject.getDetail()); resultsMap.put("PrimaryObjectType", auditDataObject.getPrimaryObjectType()); resultsMap.put( "CreateDate", simpleDateFormatFields.format(auditDataObject.getCreateDate())); resultsMap.put("CreateUser", auditDataObject.getCreateUser()); resultsArrayList.add(resultsMap); // Logger.getLogger(AuditLogHandler.class.getName()).log(Level.INFO, null, // this.getClass().getName() + "Audit Log Handler EUID is " + this.getEuid()); i++; } } catch (ValidationException ex) { FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, exceptionMessaage, exceptionMessaage)); mLogger.error( mLocalizer.x("AUD012: ValidationException has encountered : {0}", ex.getMessage()), QwsUtil.getRootCause(ex)); // mLogger.error("ValidationException ex : " + ex.toString()); return null; } catch (Exception ex) { if (ex instanceof ValidationException) { mLogger.error(mLocalizer.x("AUD013: Service Layer Validation Exception has occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof UserException) { mLogger.error(mLocalizer.x("AUD014: Service Layer User Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (!(ex instanceof ProcessingException)) { mLogger.error(mLocalizer.x("AUD015: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, QwsUtil.getRootCause(ex).getMessage(), exceptionMessaage)); } else if (ex instanceof ProcessingException) { String exceptionMessage = QwsUtil.getRootCause(ex).getMessage(); if (exceptionMessage.indexOf("stack trace") != -1) { String parsedString = exceptionMessage.substring(0, exceptionMessage.indexOf("stack trace")); if (exceptionMessage.indexOf("message=") != -1) { parsedString = parsedString.substring( exceptionMessage.indexOf("message=") + 8, parsedString.length()); } mLogger.error(mLocalizer.x("AUD016: Service Layer Processing Exception occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, parsedString, exceptionMessaage)); } else { mLogger.error(mLocalizer.x("AUD017: Error occurred"), ex); FacesContext.getCurrentInstance() .addMessage( null, new FacesMessage( FacesMessage.SEVERITY_ERROR, exceptionMessage, exceptionMessaage)); } } return null; } return resultsArrayList; }