package gw.rating.rtm.domain uses gw.api.locale.DisplayKey uses java.lang.Comparable uses java.util.ArrayList uses java.util.Map uses java.util.HashMap uses gw.rating.rtm.domain.table.RateTableRow uses gw.rating.rtm.domain.table.RateTableCell uses java.util.List class DefaultErrorCollector implements ErrorCollector { private var _rowsWithErrors : Map> construct() { _rowsWithErrors = new HashMap>() } override function addRowError(row : RateTableRow, errorType : RateTableErrorType) { var rowErrors = _rowsWithErrors.get(row) rowErrors = rowErrors ?: new ArrayList() rowErrors.add(new RateTableRowError( errorType, DisplayKey.get("Web.Rating.Errors.RowErrorMessage", errorType.DisplayName))) _rowsWithErrors.put(row, rowErrors) } override function addCellError(row : RateTableRow, cell : RateTableCell>, errorType : RateTableErrorType, msg : String = null) { var rowErrors = _rowsWithErrors.get(row) rowErrors = rowErrors ?: new ArrayList() if (msg.HasContent) { rowErrors.add(new RateTableRowError( errorType, DisplayKey.get("Web.Rating.Errors.CellErrorMessageWithNote", errorType.DisplayName, cell.ColumnDefinition.ColumnLabel, msg))) } else { rowErrors.add(new RateTableRowError( errorType, DisplayKey.get("Web.Rating.Errors.CellErrorMessage", errorType.DisplayName, cell.ColumnDefinition.ColumnLabel))) } _rowsWithErrors.put(row, rowErrors) } override function getErrorSummary() : String { var e : List = {} var map = _rowsWithErrors.Values.flatten().toList().partition(\ error -> error.ErrorType) map.Keys.each(\ errorType -> { e.add(DisplayKey.get("Web.Rating.Errors.ErrorTypeSummary", errorType.DisplayName, map.get(errorType).Count)) }) return map.Empty ? "" : DisplayKey.get("Web.Rating.Errors.RateTableErrorSummary", e.join("; ")) } override function getErrorCount() : int { var map = _rowsWithErrors.Values.flatten().toList().partition(\ error -> error.ErrorType) return map.Values.flatten().Count } override function getRowErrors(row : RateTableRow) : List { return _rowsWithErrors.get(row) } override function reset() { _rowsWithErrors.clear() } }