
package de.ivu.elect.jee.presentation.dynamictable;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Nullable;

public class ColumnGroup<E> implements Serializable {

  private static final long serialVersionUID = 1L;

  private final String header;

  private final List<ColumnEntry< ? super E>> columns;

  public ColumnGroup(String header) {
    super();

    this.header = header;
    this.columns = new ArrayList<>();
  }

  public String getHeader() {
    if (header == null) {
      if (columns.isEmpty()) {
        return null;
      } else {
        return columns.get(0).getHeader();
      }
    }

    return header;
  }

  public void addColumn(ColumnEntry< ? super E> column) {
    columns.add(column);
  }

  public void addColumn(int index, ColumnEntry< ? super E> column) {
    columns.add(index, column);
  }

  public int indexOf(ColumnEntry< ? super E> column) {
    return columns.indexOf(column);
  }

  public List<ColumnEntry< ? super E>> getColumns() {
    return columns;
  }

  public int getColSpan() {
    return columns.size();
  }

  public int getRowSpan() {
    if (isMehrzeilig()) {
      return 1;
    }

    return 2;
  }

  public boolean isMehrzeilig() {
    return columns.size() > 1;
  }

  @Nullable
  public ColumnEntry< ? super E> getFirstColumn() {
    if (getColumns().isEmpty()) {
      return null;
    }

    return getColumns().get(0);
  }
}
