Skip to content

Commit

Permalink
perf($Excel): make maximumRowCount configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
johnnymillergh committed Mar 16, 2021
1 parent 9ab350f commit 8865ead
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 10 deletions.
2 changes: 2 additions & 0 deletions docker/config/auth-center/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ maf:
- "api-gateway"
- "spring-boot-admin"
- "auth-center"
excel:
maximum-row-count: 3000
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@
@Configuration
@IntegrationComponentScan
@ConditionalOnWebApplication
@EnableConfigurationProperties({MafConfiguration.class, MafProjectProperty.class})
@EnableConfigurationProperties({
MafConfiguration.class,
MafProjectProperty.class,
ExcelImportConfiguration.class
})
@Import({
WebMvcConfiguration.class,
MyBatisPlusConfiguration.class,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.jmsoftware.maf.springcloudstarter.configuration;

import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.annotation.PostConstruct;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.ArrayList;
import java.util.List;

/**
* <h1>CustomConfiguration</h1>
* <p>Custom configurations which are written in .yml files, containing a variety of fragmentary configs. Such as,
* Druid login info, web security switch, web log and so on.</p>
*
* @author Johnny Miller (锺俊), email: johnnysviva@outlook.com
* @date 2019-03-23 14:24
**/
@Data
@Slf4j
@Validated
@Component
@RefreshScope
@ConfigurationProperties(prefix = "maf.configuration.excel")
public class ExcelImportConfiguration {
@Min(2)
@NotNull
private Integer maximumRowCount;

@PostConstruct
private void postConstruct() {
log.warn("Initial bean: '{}'", this.getClass().getSimpleName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
import java.util.List;

/**
* <h1>CustomConfiguration</h1>
* <p>Custom configurations which are written in .yml files, containing a variety of fragmentary configs. Such as,
* <h1>MafConfiguration</h1>
* <p>MAF Configuration which are written in .yml files, containing a variety of fragmentary configs. Such as,
* Druid login info, web security switch, web log and so on.</p>
*
* @author Johnny Miller (锺俊), email: johnnysviva@outlook.com
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cn.hutool.core.util.StrUtil;
import com.jmsoftware.maf.common.bean.ExcelImportResult;
import com.jmsoftware.maf.common.bean.ResponseBodyBean;
import com.jmsoftware.maf.springcloudstarter.configuration.ExcelImportConfiguration;
import com.jmsoftware.maf.springcloudstarter.sftp.SftpHelper;
import com.jmsoftware.maf.springcloudstarter.sftp.SftpUploadFile;
import com.jmsoftware.maf.springcloudstarter.util.PoiUtil;
Expand Down Expand Up @@ -118,11 +119,6 @@ public abstract class AbstractExcelImportController<ExcelImportBeanType> {
* The constant XLSX.
*/
private static final String XLSX = "xlsx";
/**
* Maximum row count
* TODO: make it configurable
*/
private static final Integer MAXIMUM_ROW_COUNT = 2000;
/**
* The User defined message.
*/
Expand Down Expand Up @@ -208,6 +204,8 @@ public abstract class AbstractExcelImportController<ExcelImportBeanType> {

@Resource
protected SftpHelper sftpHelper;
@Resource
protected ExcelImportConfiguration excelImportConfiguration;

/**
* <p>Constructor of AbstractExcelImportController</p>
Expand Down Expand Up @@ -641,10 +639,11 @@ private void bindData(Workbook workbook) throws Exception {
// Set Reading row count
readingRowCount.set(readingRowCount.get() + sheet.getLastRowNum() - sheet.getFirstRowNum());
// Check if exceeding the MAXIMUM_ROW_COUNT
if (readingRowCount.get() > MAXIMUM_ROW_COUNT) {
if (readingRowCount.get() > excelImportConfiguration.getMaximumRowCount()) {
setErrorMessage(String.format(
"The amount of importing data cannot be greater than %d (Table head included)! " +
"Current reading row count: %d", MAXIMUM_ROW_COUNT, readingRowCount.get()));
"Current reading row count: %d", excelImportConfiguration.getMaximumRowCount(),
readingRowCount.get()));
continue;
}
// Check if the readingRowCount is equal to zero
Expand Down

0 comments on commit 8865ead

Please sign in to comment.