modify struct name

This commit is contained in:
MaysWind
2025-03-15 11:43:42 +08:00
parent 6a7627e8c6
commit e829bdccb5
3 changed files with 51 additions and 51 deletions
@@ -10,27 +10,27 @@ import (
"github.com/mayswind/ezbookkeeping/pkg/errs" "github.com/mayswind/ezbookkeeping/pkg/errs"
) )
// ExcelFileImportedDataTable defines the structure of excel file data table // ExcelMSCFBFileImportedDataTable defines the structure of excel (microsoft compound file binary) file data table
type ExcelFileImportedDataTable struct { type ExcelMSCFBFileImportedDataTable struct {
workbook *xls.WorkBook workbook *xls.WorkBook
headerLineColumnNames []string headerLineColumnNames []string
} }
// ExcelFileDataRow defines the structure of excel file data table row // ExcelMSCFBFileDataRow defines the structure of excel (microsoft compound file binary) file data table row
type ExcelFileDataRow struct { type ExcelMSCFBFileDataRow struct {
sheet *xls.WorkSheet sheet *xls.WorkSheet
rowIndex int rowIndex int
} }
// ExcelFileDataRowIterator defines the structure of excel file data table row iterator // ExcelMSCFBFileDataRowIterator defines the structure of excel (microsoft compound file binary) file data table row iterator
type ExcelFileDataRowIterator struct { type ExcelMSCFBFileDataRowIterator struct {
dataTable *ExcelFileImportedDataTable dataTable *ExcelMSCFBFileImportedDataTable
currentSheetIndex int currentSheetIndex int
currentRowIndexInSheet uint16 currentRowIndexInSheet uint16
} }
// DataRowCount returns the total count of data row // DataRowCount returns the total count of data row
func (t *ExcelFileImportedDataTable) DataRowCount() int { func (t *ExcelMSCFBFileImportedDataTable) DataRowCount() int {
totalDataRowCount := 0 totalDataRowCount := 0
for i := 0; i < t.workbook.NumSheets(); i++ { for i := 0; i < t.workbook.NumSheets(); i++ {
@@ -47,13 +47,13 @@ func (t *ExcelFileImportedDataTable) DataRowCount() int {
} }
// HeaderColumnNames returns the header column name list // HeaderColumnNames returns the header column name list
func (t *ExcelFileImportedDataTable) HeaderColumnNames() []string { func (t *ExcelMSCFBFileImportedDataTable) HeaderColumnNames() []string {
return t.headerLineColumnNames return t.headerLineColumnNames
} }
// DataRowIterator returns the iterator of data row // DataRowIterator returns the iterator of data row
func (t *ExcelFileImportedDataTable) DataRowIterator() datatable.ImportedDataRowIterator { func (t *ExcelMSCFBFileImportedDataTable) DataRowIterator() datatable.ImportedDataRowIterator {
return &ExcelFileDataRowIterator{ return &ExcelMSCFBFileDataRowIterator{
dataTable: t, dataTable: t,
currentSheetIndex: 0, currentSheetIndex: 0,
currentRowIndexInSheet: 0, currentRowIndexInSheet: 0,
@@ -61,19 +61,19 @@ func (t *ExcelFileImportedDataTable) DataRowIterator() datatable.ImportedDataRow
} }
// ColumnCount returns the total count of column in this data row // ColumnCount returns the total count of column in this data row
func (r *ExcelFileDataRow) ColumnCount() int { func (r *ExcelMSCFBFileDataRow) ColumnCount() int {
row := r.sheet.Row(r.rowIndex) row := r.sheet.Row(r.rowIndex)
return row.LastCol() + 1 return row.LastCol() + 1
} }
// GetData returns the data in the specified column index // GetData returns the data in the specified column index
func (r *ExcelFileDataRow) GetData(columnIndex int) string { func (r *ExcelMSCFBFileDataRow) GetData(columnIndex int) string {
row := r.sheet.Row(r.rowIndex) row := r.sheet.Row(r.rowIndex)
return row.Col(columnIndex) return row.Col(columnIndex)
} }
// HasNext returns whether the iterator does not reach the end // HasNext returns whether the iterator does not reach the end
func (t *ExcelFileDataRowIterator) HasNext() bool { func (t *ExcelMSCFBFileDataRowIterator) HasNext() bool {
workbook := t.dataTable.workbook workbook := t.dataTable.workbook
if t.currentSheetIndex >= workbook.NumSheets() { if t.currentSheetIndex >= workbook.NumSheets() {
@@ -100,12 +100,12 @@ func (t *ExcelFileDataRowIterator) HasNext() bool {
} }
// CurrentRowId returns current index // CurrentRowId returns current index
func (t *ExcelFileDataRowIterator) CurrentRowId() string { func (t *ExcelMSCFBFileDataRowIterator) CurrentRowId() string {
return fmt.Sprintf("table#%d-row#%d", t.currentSheetIndex, t.currentRowIndexInSheet) return fmt.Sprintf("table#%d-row#%d", t.currentSheetIndex, t.currentRowIndexInSheet)
} }
// Next returns the next imported data row // Next returns the next imported data row
func (t *ExcelFileDataRowIterator) Next() datatable.ImportedDataRow { func (t *ExcelMSCFBFileDataRowIterator) Next() datatable.ImportedDataRow {
workbook := t.dataTable.workbook workbook := t.dataTable.workbook
currentRowIndexInTable := t.currentRowIndexInSheet currentRowIndexInTable := t.currentRowIndexInSheet
@@ -133,14 +133,14 @@ func (t *ExcelFileDataRowIterator) Next() datatable.ImportedDataRow {
return nil return nil
} }
return &ExcelFileDataRow{ return &ExcelMSCFBFileDataRow{
sheet: currentSheet, sheet: currentSheet,
rowIndex: int(t.currentRowIndexInSheet), rowIndex: int(t.currentRowIndexInSheet),
} }
} }
// CreateNewExcelFileImportedDataTable returns excel xls data table by file binary data // CreateNewExcelMSCFBFileImportedDataTable returns excel (microsoft compound file binary) data table by file binary data
func CreateNewExcelFileImportedDataTable(data []byte) (*ExcelFileImportedDataTable, error) { func CreateNewExcelMSCFBFileImportedDataTable(data []byte) (*ExcelMSCFBFileImportedDataTable, error) {
reader := bytes.NewReader(data) reader := bytes.NewReader(data)
workbook, err := xls.OpenReader(reader, "") workbook, err := xls.OpenReader(reader, "")
@@ -184,7 +184,7 @@ func CreateNewExcelFileImportedDataTable(data []byte) (*ExcelFileImportedDataTab
} }
} }
return &ExcelFileImportedDataTable{ return &ExcelMSCFBFileImportedDataTable{
workbook: workbook, workbook: workbook,
headerLineColumnNames: headerRowItems, headerLineColumnNames: headerRowItems,
}, nil }, nil
@@ -9,63 +9,63 @@ import (
"github.com/mayswind/ezbookkeeping/pkg/errs" "github.com/mayswind/ezbookkeeping/pkg/errs"
) )
func TestExcelFileImportedDataTableDataRowCount(t *testing.T) { func TestExcelMSCFBFileImportedDataTableDataRowCount(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 2, datatable.DataRowCount()) assert.Equal(t, 2, datatable.DataRowCount())
} }
func TestExcelFileImportedDataTableDataRowCount_MultipleSheets(t *testing.T) { func TestExcelMSCFBFileImportedDataTableDataRowCount_MultipleSheets(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 5, datatable.DataRowCount()) assert.Equal(t, 5, datatable.DataRowCount())
} }
func TestExcelFileImportedDataTableDataRowCount_OnlyHeaderLine(t *testing.T) { func TestExcelMSCFBFileImportedDataTableDataRowCount_OnlyHeaderLine(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/only_one_row_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/only_one_row_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, datatable.DataRowCount()) assert.Equal(t, 0, datatable.DataRowCount())
} }
func TestExcelFileImportedDataTableDataRowCount_EmptyContent(t *testing.T) { func TestExcelMSCFBFileImportedDataTableDataRowCount_EmptyContent(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 0, datatable.DataRowCount()) assert.Equal(t, 0, datatable.DataRowCount())
} }
func TestExcelFileImportedDataTableHeaderColumnNames(t *testing.T) { func TestExcelMSCFBFileImportedDataTableHeaderColumnNames(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.EqualValues(t, []string{"A1", "B1", "C1"}, datatable.HeaderColumnNames()) assert.EqualValues(t, []string{"A1", "B1", "C1"}, datatable.HeaderColumnNames())
} }
func TestExcelFileImportedDataTableHeaderColumnNames_EmptyContent(t *testing.T) { func TestExcelMSCFBFileImportedDataTableHeaderColumnNames_EmptyContent(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.Nil(t, datatable.HeaderColumnNames()) assert.Nil(t, datatable.HeaderColumnNames())
} }
func TestExcelFileDataRowIterator(t *testing.T) { func TestExcelMSCFBFileDataRowIterator(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
assert.True(t, iterator.HasNext()) assert.True(t, iterator.HasNext())
@@ -86,11 +86,11 @@ func TestExcelFileDataRowIterator(t *testing.T) {
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
} }
func TestExcelFileDataRowIterator_MultipleSheets(t *testing.T) { func TestExcelMSCFBFileDataRowIterator_MultipleSheets(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
assert.True(t, iterator.HasNext()) assert.True(t, iterator.HasNext())
@@ -123,11 +123,11 @@ func TestExcelFileDataRowIterator_MultipleSheets(t *testing.T) {
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
} }
func TestExcelFileDataRowIterator_OnlyHeaderLine(t *testing.T) { func TestExcelMSCFBFileDataRowIterator_OnlyHeaderLine(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/only_one_row_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/only_one_row_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
@@ -140,11 +140,11 @@ func TestExcelFileDataRowIterator_OnlyHeaderLine(t *testing.T) {
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
} }
func TestExcelFileDataRowIterator_EmptyContent(t *testing.T) { func TestExcelMSCFBFileDataRowIterator_EmptyContent(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/empty_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
@@ -157,11 +157,11 @@ func TestExcelFileDataRowIterator_EmptyContent(t *testing.T) {
assert.False(t, iterator.HasNext()) assert.False(t, iterator.HasNext())
} }
func TestExcelFileDataRowColumnCount(t *testing.T) { func TestExcelMSCFBFileDataRowColumnCount(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
row1 := iterator.Next() row1 := iterator.Next()
@@ -171,11 +171,11 @@ func TestExcelFileDataRowColumnCount(t *testing.T) {
assert.EqualValues(t, 4, row2.ColumnCount()) assert.EqualValues(t, 4, row2.ColumnCount())
} }
func TestExcelFileDataRowGetData(t *testing.T) { func TestExcelMSCFBFileDataRowGetData(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
row1 := iterator.Next() row1 := iterator.Next()
@@ -189,22 +189,22 @@ func TestExcelFileDataRowGetData(t *testing.T) {
assert.Equal(t, "C3", row2.GetData(2)) assert.Equal(t, "C3", row2.GetData(2))
} }
func TestExcelFileDataRowGetData_GetNotExistedColumnData(t *testing.T) { func TestExcelMSCFBFileDataRowGetData_GetNotExistedColumnData(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/simple_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
row1 := iterator.Next() row1 := iterator.Next()
assert.Equal(t, "", row1.GetData(3)) assert.Equal(t, "", row1.GetData(3))
} }
func TestExcelFileDataRowGetData_MultipleSheets(t *testing.T) { func TestExcelMSCFBFileDataRowGetData_MultipleSheets(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/multiple_sheets_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
datatable, err := CreateNewExcelFileImportedDataTable(testdata) datatable, err := CreateNewExcelMSCFBFileImportedDataTable(testdata)
iterator := datatable.DataRowIterator() iterator := datatable.DataRowIterator()
sheet1Row1 := iterator.Next() sheet1Row1 := iterator.Next()
@@ -237,10 +237,10 @@ func TestExcelFileDataRowGetData_MultipleSheets(t *testing.T) {
assert.Equal(t, "5-C3", sheet5Row2.GetData(2)) assert.Equal(t, "5-C3", sheet5Row2.GetData(2))
} }
func TestCreateNewExcelFileImportedDataTable_MultipleSheetsWithDifferentHeaders(t *testing.T) { func TestCreateNewExcelMSCFBFileImportedDataTable_MultipleSheetsWithDifferentHeaders(t *testing.T) {
testdata, err := os.ReadFile("../../../testdata/multiple_sheets_with_different_header_row_excel_file.xls") testdata, err := os.ReadFile("../../../testdata/multiple_sheets_with_different_header_row_excel_file.xls")
assert.Nil(t, err) assert.Nil(t, err)
_, err = CreateNewExcelFileImportedDataTable(testdata) _, err = CreateNewExcelMSCFBFileImportedDataTable(testdata)
assert.EqualError(t, err, errs.ErrFieldsInMultiTableAreDifferent.Message) assert.EqualError(t, err, errs.ErrFieldsInMultiTableAreDifferent.Message)
} }
@@ -30,7 +30,7 @@ var (
// ParseImportedData returns the imported data by parsing the feidee mymoney (web) transaction xls data // ParseImportedData returns the imported data by parsing the feidee mymoney (web) transaction xls data
func (c *feideeMymoneyWebTransactionDataXlsFileImporter) ParseImportedData(ctx core.Context, user *models.User, data []byte, defaultTimezoneOffset int16, accountMap map[string]*models.Account, expenseCategoryMap map[string]*models.TransactionCategory, incomeCategoryMap map[string]*models.TransactionCategory, transferCategoryMap map[string]*models.TransactionCategory, tagMap map[string]*models.TransactionTag) (models.ImportedTransactionSlice, []*models.Account, []*models.TransactionCategory, []*models.TransactionCategory, []*models.TransactionCategory, []*models.TransactionTag, error) { func (c *feideeMymoneyWebTransactionDataXlsFileImporter) ParseImportedData(ctx core.Context, user *models.User, data []byte, defaultTimezoneOffset int16, accountMap map[string]*models.Account, expenseCategoryMap map[string]*models.TransactionCategory, incomeCategoryMap map[string]*models.TransactionCategory, transferCategoryMap map[string]*models.TransactionCategory, tagMap map[string]*models.TransactionTag) (models.ImportedTransactionSlice, []*models.Account, []*models.TransactionCategory, []*models.TransactionCategory, []*models.TransactionCategory, []*models.TransactionTag, error) {
dataTable, err := excel.CreateNewExcelFileImportedDataTable(data) dataTable, err := excel.CreateNewExcelMSCFBFileImportedDataTable(data)
if err != nil { if err != nil {
return nil, nil, nil, nil, nil, nil, err return nil, nil, nil, nil, nil, nil, err