All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.viiyue.plugins.excel.metadata.ExcelInfo Maven / Gradle / Ivy

There is a newer version: 1.1.2
Show newest version
/**
 * Copyright (C) 2021 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.viiyue.plugins.excel.metadata;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;

import com.viiyue.plugins.excel.converter.ReadConverter;
import com.viiyue.plugins.excel.converter.Styleable;
import com.viiyue.plugins.excel.converter.WriteConverter;

/**
 * Bean root metadata wraper
 *
 * @author tangxbai
 * @since 2023/06/19
 * @param 
 */
public class ExcelInfo {

    private int headerIndex;
    private int startIndex;
    private int cellHeight;
    private boolean strip;
    private Styleable styleable;
    private ReadConverter reader;
    private WriteConverter writer;
    private List> cells;
    private Map> mappings;

    protected ExcelInfo() {}

    public static final  ExcelInfo ofBean() {
        return new ExcelInfo();
    }

    public static final ExcelInfo> ofMap() {
        return new ExcelInfo>();
    }

    public ExcelInfo headerIndex( int index ) {
        this.headerIndex = index;
        return this;
    }

    public ExcelInfo strip( boolean strip ) {
        this.strip = strip;
        return this;
    }

    public ExcelInfo cellHeight( int cellHeight ) {
        this.cellHeight = cellHeight;
        return this;
    }

    public ExcelInfo reader( ReadConverter reader ) {
        this.reader = reader;
        return this;
    }

    public ExcelInfo writer( WriteConverter writer ) {
        this.writer = writer;
        return this;
    }

    public ExcelInfo styleable( Styleable styleable ) {
        this.styleable = styleable;
        return this;
    }

    public ExcelInfo startIndex( int index ) {
        this.startIndex = index;
        return this;
    }

    public ExcelInfo addCell( CellInfo cell ) {
        if ( cell != null ) {
            if ( this.cells == null ) {
                this.cells = new ArrayList>();
                this.mappings = new HashMap>();
            }
            if ( cell.getReader() == null ) {
                cell.reader( reader );
            }
            if ( cell.getWriter() == null ) {
                cell.writer( writer );
            }
            if ( cell.getStyleable() == null ) {
                cell.styleable( styleable );
            }
            this.cells.add( cell );
            this.mappings.put( cell.getLabel(), cell );
        }
        return this;
    }

    public ExcelInfo cells( String ... labels ) {
        for ( String label : labels ) {
            addCell( CellInfo.newCell( label ) );
        }
        return this;
    }

    public CellInfo getByLabel( String label ) {
        return mappings == null ? null : mappings.get( strip ? StringUtils.strip( label ) : label );
    }

    public List> getCells() {
        return cells;
    }

    public boolean hasCells() {
        return CollectionUtils.isNotEmpty( cells );
    }

    public Styleable getStyleable() {
        return styleable;
    }

    public int getHeaderIndex() {
        return headerIndex;
    }

    public int getStartIndex() {
        return startIndex == 0 ? headerIndex + 1 : startIndex;
    }

    public int getCellHeight() {
        return this.cellHeight;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy