package gw.exportimport.resolver uses entity.KeyableBean uses gw.exportimport.CellData uses gw.exportimport.validation.ImportValidationResult uses java.lang.Object uses gw.exportimport.ImportMetaData uses java.util.Map /** * A {@link ColumnDataResolver} is responsible for importing and exporting cell data values. * Depending on the type of a column the logic will be different (see {@link CoverageColumnDataResolver}, {@link TypeKeyColumnDataResolver}) */ @ReadOnly interface ColumnDataResolver { /** * Calculates the value for the column by potentially utilizing iterative reflection (see {@link SimpleColumnDataResolver}). * * @param bean the bean * @return Object the resolved cell data (typically a String) */ function resolveCellValue(bean : KeyableBean) : Object /** * Imports (modifies) a bean in the bean graph using {@link CellData} and {@link LanguageType}. * * @param bean The root bean * @param data The CellData used to modify a bean value * @param metaData The ImportMetaData to be used * @param dependentData The data this ColumnDataResolver depends on */ function importBeanValue(bean : KeyableBean, data : CellData, metaData : ImportMetaData, dependentData : Map) /** * First step of the two step import process: Calculates and returns the converted CellData value (e.g. a TypeKey) * which will then be used by the second step #setBeanValue() to actually set it in the bean graph. Unfortunately that * does not guarantee that the first step is side-effect free (e.g. the CoverageColumnDataResolver needs to create and change state * in its #calculateCellValue method). * * @param bean The root bean * @param data The CellData used to modify a bean value * @param metaData The ImportMetaData to be used * @param dependentData The data this ColumnDataResolver depends on */ function calculateCellValue(bean : KeyableBean, data : CellData, metaData : ImportMetaData, dependentData : Map) : T }