package com.gh.mygreen.xlsmapper.validation; import java.awt.Point; import java.util.Map; import com.gh.mygreen.xlsmapper.Utils; /** * フィールドとセルのエラー情報を保持するクラス。 * * @author T.TSUCHIE * */ public class CellFieldError extends FieldError { private final String sheetName; private final Point cellAddress; public CellFieldError(final String objectName, final String fieldPath, final String sheetName, final Point cellAddress) { super(objectName, fieldPath); this.sheetName = sheetName; this.cellAddress = cellAddress; } public CellFieldError(final String objectName, final String fieldPath, final String[] codes, final Object[] args, final String sheetName, final Point cellAddress) { super(objectName, fieldPath, codes, args); this.sheetName = sheetName; this.cellAddress = cellAddress; } public CellFieldError(final String objectName, final String fieldPath, final String[] codes, final Map<String, ?> vars, final String sheetName, final Point cellAddress) { super(objectName, fieldPath, codes, vars); this.sheetName = sheetName; this.cellAddress = cellAddress; } public CellFieldError(final String objectName, final String fieldPath, final Class<?> fieldType, final Object fieldValue, final boolean typeBindFailure, final String[] codes, final Object[] args, final String sheetName, final Point cellAddress) { super(objectName, fieldPath, fieldType, fieldValue, typeBindFailure, codes, args); this.sheetName = sheetName; this.cellAddress = cellAddress; } public CellFieldError(final String objectName, final String fieldPath, final Class<?> fieldType, final Object fieldValue, final boolean typeBindFailure, final String[] codes, final Map<String, ?> vars, final String sheetName, final Point cellAddress) { super(objectName, fieldPath, fieldType, fieldValue, typeBindFailure, codes, vars); this.sheetName = sheetName; this.cellAddress = cellAddress; } @Override public String toString() { final StringBuilder msg = new StringBuilder(); msg.append(String.format("Fail conversion field '%s'.", getFieldPath())); if(isTypeBindFailure()) { msg.append(String.format("field value '%s' => type '%s'.", Utils.convertToString(getFieldValue()), getFieldType().getName())); } msg.append(String.format(" Sheet '%s'", getSheetName())) .append(String.format(" Cell '%s' map to '%s'.", Utils.formatCellAddress(cellAddress), getObjectName())) .toString(); return msg.toString(); } public Point getCellAddress() { return cellAddress; } public String getFormattedCellAddress() { if(getCellAddress() == null) { return null; } return Utils.formatCellAddress(getCellAddress()); } public String getSheetName() { return sheetName; } @Override public CellFieldError setDefaultMessage(String defaultMessage) { super.setDefaultMessage(defaultMessage); return this; } }