package com.alibaba.excel.converters; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; /** * Convert between Java objects and excel objects * * @param * @author Dan Zheng */ public interface Converter { /** * Back to object types in Java * * @return Support for Java class */ default Class supportJavaTypeKey() { throw new UnsupportedOperationException("The current operation is not supported by the current converter."); } /** * Back to object enum in excel * * @return Support for {@link CellDataTypeEnum} */ default CellDataTypeEnum supportExcelTypeKey() { throw new UnsupportedOperationException("The current operation is not supported by the current converter."); } /** * Convert excel objects to Java objects * * @param cellData Excel cell data.NotNull. * @param contentProperty Content property.Nullable. * @param globalConfiguration Global configuration.NotNull. * @return Data to put into a Java object * @throws Exception Exception. */ default T convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { throw new UnsupportedOperationException("The current operation is not supported by the current converter."); } /** * Convert excel objects to Java objects * * @param context read converter context * @return Data to put into a Java object * @throws Exception Exception. */ default T convertToJavaData(ReadConverterContext context) throws Exception { return convertToJavaData(context.getReadCellData(), context.getContentProperty(), context.getAnalysisContext().currentReadHolder().globalConfiguration()); } /** * Convert Java objects to excel objects * * @param value Java Data.NotNull. * @param contentProperty Content property.Nullable. * @param globalConfiguration Global configuration.NotNull. * @return Data to put into a Excel * @throws Exception Exception. */ default WriteCellData convertToExcelData(T value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { throw new UnsupportedOperationException("The current operation is not supported by the current converter."); } /** * Convert Java objects to excel objects * * @param context write context * @return Data to put into a Excel * @throws Exception Exception. */ default WriteCellData convertToExcelData(WriteConverterContext context) throws Exception { return convertToExcelData(context.getValue(), context.getContentProperty(), context.getWriteContext().currentWriteHolder().globalConfiguration()); } }