TableRow.java

package nl.b3p.brmo.loader.util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * @author Matthijs Laan
 */
public class TableRow {
  private String table;
  private boolean ignoreDuplicates;

  private List<String> columns = new ArrayList<>();
  private List<String> values = new ArrayList<>();

  private final Set<String> alleenArchiefColumns = new HashSet<>();

  /* Used for archief tables */
  private String columnDatumBeginGeldigheid;
  private String columnDatumEindeGeldigheid;

  public String getTable() {
    return table;
  }

  public void setTable(String table) {
    this.table = table;
  }

  public List<String> getColumns() {
    return columns;
  }

  public void setColumns(List<String> columns) {
    this.columns = columns;
  }

  public boolean isAlleenArchiefColumn(String column) {
    return alleenArchiefColumns.contains(column);
  }

  public void setAlleenArchiefColumn(String column) {
    alleenArchiefColumns.add(column);
  }

  public List<String> getValues() {
    return values;
  }

  public void setValues(List<String> values) {
    this.values = values;
  }

  public boolean isIgnoreDuplicates() {
    return ignoreDuplicates;
  }

  public void setIgnoreDuplicates(boolean ignoreDuplicates) {
    this.ignoreDuplicates = ignoreDuplicates;
  }

  public String getColumnDatumBeginGeldigheid() {
    return columnDatumBeginGeldigheid;
  }

  public void setColumnDatumBeginGeldigheid(String columnDatumBeginGeldigheid) {
    this.columnDatumBeginGeldigheid = columnDatumBeginGeldigheid;
  }

  public String getColumnDatumEindeGeldigheid() {
    return columnDatumEindeGeldigheid;
  }

  public void setColumnDatumEindeGeldigheid(String columnDatumEindeGeldigheid) {
    this.columnDatumEindeGeldigheid = columnDatumEindeGeldigheid;
  }

  public String toString(List<String> displayColumns) {
    StringBuilder s = new StringBuilder();
    s.append(table).append("[");

    List<String> keys = new ArrayList<>();
    int i = -1;
    for (String column : columns) {
      i++;
      if (!displayColumns.contains(column)) {
        continue;
      }

      keys.add(column + "=" + values.get(i));
    }
    s.append(String.join(", ", keys));
    s.append("]");
    return s.toString();
  }

  @Override
  public String toString() {
    StringBuilder str = new StringBuilder();

    str.append("TABLE: ");
    str.append(table);
    str.append("\n");

    int i = 0;
    for (String column : columns) {
      str.append(column);
      str.append("=");
      str.append(values.get(i));
      if (isAlleenArchiefColumn(column)) {
        str.append(" (alleen archief)");
      }
      str.append("\n");
      i++;
    }

    return str.toString();
  }

  public String getColumnValue(String column) {
    int i = columns.indexOf(column);
    if (i == -1) {
      return null;
    } else {
      return values.get(i);
    }
  }
}