refactor: Refactor the code for the reading module (#214)
This commit is contained in:
parent
a5b10044d5
commit
1e4807d88a
@ -1,9 +1,9 @@
|
||||
package cn.idev.excel.read.builder;
|
||||
|
||||
import cn.idev.excel.metadata.AbstractParameterBuilder;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
import cn.idev.excel.read.metadata.ReadBasicParameter;
|
||||
import cn.idev.excel.util.ListUtils;
|
||||
import cn.idev.excel.metadata.AbstractParameterBuilder;
|
||||
|
||||
/**
|
||||
* Build ExcelBuilder
|
||||
|
@ -8,17 +8,17 @@ import java.util.List;
|
||||
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
|
||||
import cn.idev.excel.ExcelReader;
|
||||
import cn.idev.excel.cache.ReadCache;
|
||||
import cn.idev.excel.cache.selector.ReadCacheSelector;
|
||||
import cn.idev.excel.cache.selector.SimpleReadCacheSelector;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.enums.CellExtraTypeEnum;
|
||||
import cn.idev.excel.enums.ReadDefaultReturnEnum;
|
||||
import cn.idev.excel.event.AnalysisEventListener;
|
||||
import cn.idev.excel.event.SyncReadListener;
|
||||
import cn.idev.excel.read.listener.ModelBuildEventListener;
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
import cn.idev.excel.ExcelReader;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.support.ExcelTypeEnum;
|
||||
|
||||
/**
|
||||
@ -211,7 +211,6 @@ public class ExcelReaderBuilder extends AbstractExcelReaderParameterBuilder<Exce
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public ExcelReaderBuilder numRows(Integer numRows) {
|
||||
readWorkbook.setNumRows(numRows);
|
||||
return this;
|
||||
|
@ -2,11 +2,11 @@ package cn.idev.excel.read.builder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.idev.excel.event.SyncReadListener;
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
import cn.idev.excel.ExcelReader;
|
||||
import cn.idev.excel.event.SyncReadListener;
|
||||
import cn.idev.excel.exception.ExcelAnalysisException;
|
||||
import cn.idev.excel.exception.ExcelGenerateException;
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
|
||||
/**
|
||||
* Build sheet
|
||||
|
@ -4,16 +4,16 @@ import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.enums.CellDataTypeEnum;
|
||||
import cn.idev.excel.enums.HeadKindEnum;
|
||||
import cn.idev.excel.enums.ReadDefaultReturnEnum;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.exception.ExcelDataConvertException;
|
||||
import cn.idev.excel.metadata.Head;
|
||||
import cn.idev.excel.metadata.data.DataFormatData;
|
||||
import cn.idev.excel.metadata.data.ReadCellData;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.support.cglib.beans.BeanMap;
|
||||
import cn.idev.excel.util.BeanMapUtils;
|
||||
import cn.idev.excel.util.ClassUtils;
|
||||
@ -21,7 +21,6 @@ import cn.idev.excel.util.ConverterUtils;
|
||||
import cn.idev.excel.util.DateUtils;
|
||||
import cn.idev.excel.util.MapUtils;
|
||||
|
||||
|
||||
/**
|
||||
* Convert to the object the user needs
|
||||
*
|
||||
@ -57,7 +56,7 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener<Map<
|
||||
if (readDefaultReturn == ReadDefaultReturnEnum.STRING) {
|
||||
// string
|
||||
map.put(key,
|
||||
(String) ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
|
||||
(String)ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
|
||||
context, context.readRowHolder().getRowIndex(), key));
|
||||
} else {
|
||||
// return ReadCellData
|
||||
|
@ -3,9 +3,8 @@ package cn.idev.excel.read.listener;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import cn.idev.excel.util.ListUtils;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
|
||||
import cn.idev.excel.util.ListUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
||||
/**
|
||||
|
@ -2,13 +2,11 @@ package cn.idev.excel.read.listener;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import cn.idev.excel.event.Listener;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.event.Listener;
|
||||
import cn.idev.excel.metadata.CellExtra;
|
||||
import cn.idev.excel.metadata.data.ReadCellData;
|
||||
import cn.idev.excel.read.metadata.holder.ReadRowHolder;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
|
||||
/**
|
||||
* Interface to listen for read results
|
||||
@ -69,10 +67,10 @@ public interface ReadListener<T> extends Listener {
|
||||
*/
|
||||
default boolean hasNext(AnalysisContext context) {
|
||||
if (context == null
|
||||
|| context.readRowHolder() == null
|
||||
|| context.readSheetHolder() == null
|
||||
|| context.readSheetHolder().getReadSheet() == null
|
||||
|| context.readWorkbookHolder().getReadWorkbook() == null
|
||||
|| context.readRowHolder() == null
|
||||
|| context.readSheetHolder() == null
|
||||
|| context.readSheetHolder().getReadSheet() == null
|
||||
|| context.readWorkbookHolder().getReadWorkbook() == null
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import java.util.List;
|
||||
|
||||
import cn.idev.excel.metadata.BasicParameter;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
@ -31,7 +31,7 @@ public class ReadSheet extends ReadBasicParameter {
|
||||
this.sheetName = sheetName;
|
||||
}
|
||||
|
||||
public ReadSheet(Integer sheetNo, String sheetName,Integer numRows) {
|
||||
public ReadSheet(Integer sheetNo, String sheetName, Integer numRows) {
|
||||
this.sheetNo = sheetNo;
|
||||
this.sheetName = sheetName;
|
||||
this.numRows = numRows;
|
||||
@ -53,7 +53,6 @@ public class ReadSheet extends ReadBasicParameter {
|
||||
this.sheetName = sheetName;
|
||||
}
|
||||
|
||||
|
||||
public Integer getNumRows() {
|
||||
return numRows;
|
||||
}
|
||||
|
@ -3,18 +3,17 @@ package cn.idev.excel.read.metadata.holder;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import cn.idev.excel.enums.HolderEnum;
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.util.ListUtils;
|
||||
import cn.idev.excel.converters.Converter;
|
||||
import cn.idev.excel.converters.ConverterKeyBuild;
|
||||
import cn.idev.excel.converters.DefaultConverterLoader;
|
||||
import cn.idev.excel.enums.HolderEnum;
|
||||
import cn.idev.excel.metadata.AbstractHolder;
|
||||
import cn.idev.excel.read.listener.ModelBuildEventListener;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
import cn.idev.excel.read.metadata.ReadBasicParameter;
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.util.ListUtils;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -2,12 +2,11 @@ package cn.idev.excel.read.metadata.holder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.metadata.ConfigurationHolder;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
|
||||
/**
|
||||
*
|
||||
* Get the corresponding Holder
|
||||
*
|
||||
* @author Jiaju Zhuang
|
||||
|
@ -4,11 +4,10 @@ import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.idev.excel.enums.HolderEnum;
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
import cn.idev.excel.metadata.Cell;
|
||||
import cn.idev.excel.metadata.CellExtra;
|
||||
import cn.idev.excel.metadata.data.ReadCellData;
|
||||
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -3,7 +3,6 @@ package cn.idev.excel.read.metadata.holder.csv;
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
import cn.idev.excel.support.ExcelTypeEnum;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
@ -7,7 +7,6 @@ import cn.idev.excel.enums.RowTypeEnum;
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
import cn.idev.excel.support.ExcelTypeEnum;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -14,8 +15,6 @@ import org.apache.poi.hssf.record.BoundSheetRecord;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
||||
|
||||
import cn.idev.excel.support.ExcelTypeEnum;
|
||||
|
||||
/**
|
||||
* Workbook holder
|
||||
*
|
||||
|
@ -6,7 +6,6 @@ import java.util.LinkedList;
|
||||
import cn.idev.excel.read.metadata.ReadSheet;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
@ -4,13 +4,12 @@ import java.util.Map;
|
||||
|
||||
import javax.xml.parsers.SAXParserFactory;
|
||||
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
import cn.idev.excel.util.MapUtils;
|
||||
import cn.idev.excel.constant.BuiltinFormats;
|
||||
import cn.idev.excel.metadata.data.DataFormatData;
|
||||
import cn.idev.excel.read.metadata.ReadWorkbook;
|
||||
import cn.idev.excel.read.metadata.holder.ReadWorkbookHolder;
|
||||
import cn.idev.excel.support.ExcelTypeEnum;
|
||||
|
||||
import cn.idev.excel.util.MapUtils;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
@ -3,7 +3,6 @@ package cn.idev.excel.read.processor;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
|
||||
/**
|
||||
*
|
||||
* Event processor
|
||||
*
|
||||
* @author jipengfei
|
||||
@ -26,8 +25,7 @@ public interface AnalysisEventProcessor {
|
||||
/**
|
||||
* Notify after all analysed
|
||||
*
|
||||
* @param analysisContext
|
||||
* Analysis context
|
||||
* @param analysisContext Analysis context
|
||||
*/
|
||||
void endSheet(AnalysisContext analysisContext);
|
||||
}
|
||||
|
@ -4,22 +4,21 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.enums.CellDataTypeEnum;
|
||||
import cn.idev.excel.enums.HeadKindEnum;
|
||||
import cn.idev.excel.enums.RowTypeEnum;
|
||||
import cn.idev.excel.exception.ExcelAnalysisException;
|
||||
import cn.idev.excel.exception.ExcelAnalysisStopException;
|
||||
import cn.idev.excel.metadata.Head;
|
||||
import cn.idev.excel.metadata.data.ReadCellData;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
import cn.idev.excel.read.metadata.holder.ReadRowHolder;
|
||||
import cn.idev.excel.read.metadata.holder.ReadSheetHolder;
|
||||
import cn.idev.excel.read.metadata.property.ExcelReadHeadProperty;
|
||||
import cn.idev.excel.util.BooleanUtils;
|
||||
import cn.idev.excel.util.ConverterUtils;
|
||||
import cn.idev.excel.util.StringUtils;
|
||||
import cn.idev.excel.context.AnalysisContext;
|
||||
import cn.idev.excel.exception.ExcelAnalysisException;
|
||||
import cn.idev.excel.exception.ExcelAnalysisStopException;
|
||||
import cn.idev.excel.metadata.Head;
|
||||
import cn.idev.excel.metadata.data.ReadCellData;
|
||||
import cn.idev.excel.read.listener.ReadListener;
|
||||
|
||||
import org.apache.commons.collections4.MapUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@ -37,16 +36,28 @@ public class DefaultAnalysisEventProcessor implements AnalysisEventProcessor {
|
||||
dealExtra(analysisContext);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ends the processing of a row.
|
||||
* This method is called after reading a row of data to perform corresponding processing.
|
||||
* If the current row is empty and the workbook holder is set to ignore empty rows, then directly return without processing.
|
||||
* If the row is not empty or empty rows are not ignored, then call the dealData method to process the data.
|
||||
*
|
||||
* @param analysisContext Analysis context, containing information about the current analysis, including the type and content of the row.
|
||||
*/
|
||||
@Override
|
||||
public void endRow(AnalysisContext analysisContext) {
|
||||
// Check if the current row is empty
|
||||
if (RowTypeEnum.EMPTY.equals(analysisContext.readRowHolder().getRowType())) {
|
||||
// Log debug information if the current row is empty
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug("Empty row!");
|
||||
}
|
||||
// If the workbook holder is set to ignore empty rows, then directly return
|
||||
if (analysisContext.readWorkbookHolder().getIgnoreEmptyRow()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Call the data processing method
|
||||
dealData(analysisContext);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user