public void setTerm(Termin term) {
   setDisplayName(
       term.getGrupa().getNazwa()
           + " - "
           + term.getGrupa().getPrzedmiot().getNazwa()
           + " - Obecności");
   this.titleLabel.setHorizontalAlignment(SwingConstants.CENTER);
   this.titleLabel.setText(
       "Tabela obecności dla: "
           + term.getGrupa().getNazwa()
           + " - "
           + term.getGrupa().getPrzedmiot().getNazwa()
           + " - "
           + term.getGodzina_start()
           + "-"
           + term.getGodzina_stop());
   this.groupName = term.getGrupa().getNazwa();
   this.subjectName = term.getGrupa().getPrzedmiot().getNazwa();
   setTable(term);
 }
  private void setTable(Termin term) {
    termin = term;
    idTerminu = term.getId();
    students = Student.getByGroup(term.getGrupa().getId());

    DateFormat format = new SimpleDateFormat("dd.MM.yy");
    Calendar cal = Calendar.getInstance();
    String today = format.format(cal.getTime()); // dzisiejsza data
    // sprawdz czy juz są daty dzisiejsze w bazie
    if (isDatesOnDatabase(today, term) == false) {
      for (Student s : students) {
        Obecnosc.addObecnosc(term, s, today, false);
      }
    }
    // tu tworzenie modelu
    DefaultTableModel model =
        new DefaultTableModel() {
          @Override
          public Class<?> getColumnClass(int columnIndex) {
            if (columnIndex != 0) {
              return Boolean.class;
            }
            return super.getColumnClass(columnIndex);
          }
        }; // to sie robi zeby byly checkboxy

    while (model.getRowCount() > 0) {
      model.removeRow(0);
    }

    model.addColumn("Student");
    List<Obecnosc> obecnosci = Obecnosc.getObecnosci(term);
    dates = new ArrayList<String>();
    String first_date = null;
    if (!obecnosci.isEmpty()) {
      first_date = obecnosci.get(0).getData();
      dates.add(first_date);
    }
    for (Obecnosc o : obecnosci) {
      if (!o.getData().equals(first_date)) {
        first_date = o.getData();
        dates.add(first_date);
      }
    }
    sort(dates);
    // w dates mamy kolejne daty dla terminu, czyli kolejne kolumny
    for (String d : dates) {
      model.addColumn(d);
    }

    jScrollPane1.setViewportView(presenceTable);
    // teraz uzupełnianie tabeli
    for (Student s : students) {
      Object[] values = new Object[dates.size() + 1];
      values[0] = s.getImie() + " " + s.getNazwisko();

      for (int i = 1; i < dates.size() + 1; i++) {
        values[i] = znajdzObecnosc(obecnosci, dates.get(i - 1), s);
      }
      model.addRow(values);
    }

    presenceTable.setModel(model);
  }