mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-09-08 20:20:40 +00:00
perf[storage]: 使用var简化代码
This commit is contained in:
@@ -24,59 +24,26 @@ import org.apache.commons.csv.CSVRecord;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author meiwei666
|
||||
* @version 4.0
|
||||
*/
|
||||
public class CsvReaderUtils {
|
||||
public abstract class CsvReaderUtils {
|
||||
|
||||
/**
|
||||
* 构建配置表消息头
|
||||
* @param iterator
|
||||
* @param fileName
|
||||
* @return
|
||||
*/
|
||||
private static List<ResourceHeader> getHeaders(Iterator<CSVRecord> iterator, String fileName) {
|
||||
// 获取配置表的有效列名称,默认第一行就是字段名称
|
||||
var fieldRow = iterator.next();
|
||||
if (fieldRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的Excel文件的属性控制列", fileName);
|
||||
}
|
||||
//默认第二行字段类型
|
||||
var typeRow = iterator.next();
|
||||
if (typeRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的Excel文件的类型控制列", fileName);
|
||||
}
|
||||
var descRow = iterator.next();
|
||||
|
||||
List<ResourceHeader> headers = new ArrayList<>();
|
||||
for (int i = 0; i < fieldRow.size(); i++) {
|
||||
String fieldName = fieldRow.get(i);
|
||||
if (fieldName == null) {
|
||||
throw new RunException("{}列名不能为空,第{}列没有配置名字", fileName ,i + 1);
|
||||
}
|
||||
String filedType = typeRow.get(i);
|
||||
if (filedType == null) {
|
||||
throw new RunException("{}列类型不能为空,第{}列没有配置类型", fileName ,i + 1);
|
||||
}
|
||||
// String desc = descRecord.get(i);
|
||||
headers.add(ResourceHeader.valueOf(fieldName, filedType, i ));
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
|
||||
public static ResourceData readResourceDataFromCSV(InputStream input, String fileName){
|
||||
CSVParser records = parseCsv(input, fileName);
|
||||
Iterator<CSVRecord> iter = records.iterator();
|
||||
List<ResourceHeader> headers = getHeaders(iter, fileName);
|
||||
List<List<String>> rows = new ArrayList<>();
|
||||
while (iter.hasNext()) {
|
||||
CSVRecord record = iter.next();
|
||||
List<String> data = new ArrayList<>();
|
||||
for (ResourceHeader header : headers) {
|
||||
String value = record.get(header.getIndex());
|
||||
public static ResourceData readResourceDataFromCSV(InputStream input, String fileName) {
|
||||
var records = parseCsv(input, fileName);
|
||||
var iterator = records.iterator();
|
||||
var headers = getHeaders(iterator, fileName);
|
||||
var rows = new ArrayList<List<String>>();
|
||||
while (iterator.hasNext()) {
|
||||
var record = iterator.next();
|
||||
var data = new ArrayList<String>();
|
||||
for (var header : headers) {
|
||||
var value = record.get(header.getIndex());
|
||||
if (StringUtils.isBlank(value)) {
|
||||
value = StringUtils.EMPTY;
|
||||
}
|
||||
@@ -87,6 +54,39 @@ public class CsvReaderUtils {
|
||||
return ResourceData.valueOf(fileName, headers, rows);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 构建配置表消息头
|
||||
*/
|
||||
private static List<ResourceHeader> getHeaders(Iterator<CSVRecord> iterator, String fileName) {
|
||||
// 获取配置表的有效列名称,默认第一行就是字段名称
|
||||
var fieldRow = iterator.next();
|
||||
if (fieldRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的csv文件的属性控制列", fileName);
|
||||
}
|
||||
//默认第二行字段类型
|
||||
var typeRow = iterator.next();
|
||||
if (typeRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的csv文件的类型控制列", fileName);
|
||||
}
|
||||
// 默认第三行为描述,需要的时候再使用
|
||||
var descRow = iterator.next();
|
||||
|
||||
var headers = new ArrayList<ResourceHeader>();
|
||||
for (var i = 0; i < fieldRow.size(); i++) {
|
||||
var fieldName = fieldRow.get(i);
|
||||
if (fieldName == null) {
|
||||
throw new RunException("{}列名不能为空,第{}列没有配置名字", fileName, i + 1);
|
||||
}
|
||||
var filedType = typeRow.get(i);
|
||||
if (filedType == null) {
|
||||
throw new RunException("{}列类型不能为空,第{}列没有配置类型", fileName, i + 1);
|
||||
}
|
||||
headers.add(ResourceHeader.valueOf(fieldName, filedType, i));
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
|
||||
private static CSVParser parseCsv(InputStream input, String fileName) {
|
||||
try {
|
||||
return CSVFormat.EXCEL.parse(new InputStreamReader(input));
|
||||
|
||||
@@ -20,7 +20,9 @@ import com.zfoo.protocol.util.StringUtils;
|
||||
import com.zfoo.storage.model.resource.ResourceData;
|
||||
import com.zfoo.storage.model.resource.ResourceEnum;
|
||||
import com.zfoo.storage.model.resource.ResourceHeader;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.ss.usermodel.WorkbookFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -32,7 +34,7 @@ import java.util.stream.Collectors;
|
||||
* @author meiwei666
|
||||
* @version 4.0
|
||||
*/
|
||||
public class ExcelReaderUtils {
|
||||
public abstract class ExcelReaderUtils {
|
||||
|
||||
public static void excelConvertJson(String inputDir, String outputDir) throws IOException {
|
||||
var listFiles = FileUtils.getAllReadableFiles(new File(inputDir))
|
||||
@@ -61,13 +63,7 @@ public class ExcelReaderUtils {
|
||||
//设置所有列
|
||||
var headers = getHeaders(iterator, fileName);
|
||||
|
||||
// 行数定位到有效数据行,默认是第四行为有效数据行
|
||||
// var iterator = sheet.iterator();
|
||||
// iterator.next();
|
||||
// iterator.next();
|
||||
// iterator.next();
|
||||
// 从ROW_SERVER这行开始读取数据
|
||||
List<List<String>> rows = new ArrayList<>();
|
||||
var rows = new ArrayList<List<String>>();
|
||||
while (iterator.hasNext()) {
|
||||
var row = iterator.next();
|
||||
|
||||
@@ -87,19 +83,18 @@ public class ExcelReaderUtils {
|
||||
return ResourceData.valueOf(fileName, headers, rows);
|
||||
}
|
||||
|
||||
// 只读取代码里写的字段
|
||||
private static List<ResourceHeader> getHeaders(Iterator<Row> iterator, String fileName) {
|
||||
// var iterator = sheet.iterator();
|
||||
// 获取配置表的有效列名称,默认第一行就是字段名称
|
||||
var fieldRow = iterator.next();
|
||||
if (fieldRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的Excel文件的属性控制列", fileName);
|
||||
}
|
||||
//默认第二行字段类型
|
||||
// 默认第二行字段类型
|
||||
var typeRow = iterator.next();
|
||||
if (typeRow == null) {
|
||||
throw new RunException("无法获取资源[class:{}]的Excel文件的类型控制列", fileName);
|
||||
}
|
||||
// 默认第三行为描述,需要的时候再使用
|
||||
var desRow = iterator.next();
|
||||
var headerList = new ArrayList<ResourceHeader>();
|
||||
var cellFieldMap = new HashMap<String, Integer>();
|
||||
|
||||
Reference in New Issue
Block a user