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

com.github.leeonky.dal.ast.node.table.TransposedRowHeaderRow Maven / Gradle / Ivy

package com.github.leeonky.dal.ast.node.table;

import com.github.leeonky.dal.ast.node.DALNode;
import com.github.leeonky.dal.ast.node.TableNode;
import com.github.leeonky.interpreter.SyntaxException;

import java.util.List;
import java.util.stream.Collectors;

import static com.github.leeonky.interpreter.InterpreterException.Position.Type.ROW;
import static java.util.Optional.empty;

public class TransposedRowHeaderRow extends DALNode {
    private final List rowHeaders;

    public TransposedRowHeaderRow(List rowHeaders) {
        this.rowHeaders = rowHeaders.stream().map(RowHeader.class::cast).collect(Collectors.toList());
        if (!rowHeaders.isEmpty())
            setPositionBegin(rowHeaders.get(rowHeaders.size() - 1).getPositionBegin());
    }

    @Override
    public String inspect() {
        return "| >> " + TableNode.printLine(rowHeaders) + "\n";
    }

    public RowHeader getRowHeader(int i) {
        if (i >= rowHeaders.size())
            return new RowHeader(empty(), empty(), empty());
        return rowHeaders.get(i);
    }

    public void checkSize(TransposedRow row) {
        if (row.cellCount() != rowHeaders.size())
            throw new SyntaxException("Different cell size", getPositionBegin(), ROW);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy