public static void generateInvalidReport(ArrayList<Incompliance> aggregateIncompliances) {
		
		addElementIntoLog(
				"===============================================================================================", 
				true, ValidatorMain.log);
		addElementIntoLog("  >>> User start a validation task at: " + MyDate.currentDateTime(), true, ValidatorMain.log);
		addElementIntoLog("  >>> Number of errors: " + aggregateIncompliances.size(), true, ValidatorMain.log);
		
		/************************************************************
		 * The below is improved code for output format of validation report
		 * By Gang Shu on Feb. 20, 2014
		 ************************************************************/
		HashMap<String, ArrayList<Incompliance>> map__edf_with_errors = new HashMap<String, ArrayList<Incompliance>>();
		for (Incompliance error : aggregateIncompliances){
			String filename = error.getFileName();
			ArrayList<Incompliance> errorAL = map__edf_with_errors.get(filename);
			if (errorAL == null)
				errorAL = new ArrayList<Incompliance>();
			errorAL.add(error);
			map__edf_with_errors.put(filename, errorAL);
		}
		
		Iterator<Entry<String, ArrayList<Incompliance>>> iterator = map__edf_with_errors.entrySet().iterator();
		while(iterator.hasNext()){
			Entry<String, ArrayList<Incompliance>> entry = iterator.next();
			
			if (entry != null && entry.getKey() != null && entry.getValue() != null) {
				String message = "";
				message += 
						"  ---------------------------------------------------------------------------------------------"
						+ "\r\n";
				message += "  EDF file: " + entry.getKey() + "\r\n";
				message += "  Incompliances:" + "\r\n";
				int i = 0;
				// TODO: should ouput what channel has what kind of Incompliance
				for (Incompliance error : entry.getValue()) {
					message += "  +" + (++i) + " " + error.getDescription() + " [Channel: " + (error.getRowIndex() + 1) + ", Attribute: " + 
					(error.getColumnIndex() + 1) + "] " + "\r\n";
				}
				addElementIntoLog(message, true, ValidatorMain.log);
			}
		}
		/************************************************************
		 * The above is improved code for output format of validation report
		 * By Gang Shu on Feb. 20, 2014
		 ************************************************************/
		
	}