Skip to content

Commit

Permalink
refactor: Refactor the code for the reading module (#214)
Browse files Browse the repository at this point in the history
  • Loading branch information
psxjoy authored Feb 5, 2025
1 parent 8e8adcd commit 5dd2ce0
Show file tree
Hide file tree
Showing 18 changed files with 44 additions and 50 deletions.
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@

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;

/**
Expand Down Expand Up @@ -211,7 +211,6 @@ public ExcelReaderBuilder readDefaultReturn(ReadDefaultReturnEnum readDefaultRet
return this;
}


public ExcelReaderBuilder numRows(Integer numRows) {
readWorkbook.setNumRows(numRows);
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,23 @@
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;
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
*
Expand Down Expand Up @@ -57,7 +56,7 @@ private Object buildNoModel(Map<Integer, ReadCellData<?>> cellDataMap, ReadSheet
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
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;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@

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
Expand Down Expand Up @@ -69,10 +67,10 @@ default void extra(CellExtra extra, AnalysisContext context) {
*/
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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

import cn.idev.excel.metadata.BasicParameter;
import cn.idev.excel.read.listener.ReadListener;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public ReadSheet(Integer sheetNo, String sheetName) {
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;
Expand All @@ -53,7 +53,6 @@ public void setSheetName(String sheetName) {
this.sheetName = sheetName;
}


public Integer getNumRows() {
return numRows;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,17 @@
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

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;
Expand All @@ -14,8 +15,6 @@
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import cn.idev.excel.support.ExcelTypeEnum;

/**
* Workbook holder
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@

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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import cn.idev.excel.context.AnalysisContext;

/**
*
* Event processor
*
* @author jipengfei
Expand All @@ -26,8 +25,7 @@ public interface AnalysisEventProcessor {
/**
* Notify after all analysed
*
* @param analysisContext
* Analysis context
* @param analysisContext Analysis context
*/
void endSheet(AnalysisContext analysisContext);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,21 @@
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;
Expand All @@ -37,16 +36,28 @@ public void extra(AnalysisContext analysisContext) {
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);
}

Expand Down

0 comments on commit 5dd2ce0

Please sign in to comment.