/**
  * Diese Methode kann das übergebene Objekt in die lokale Datenbank einfügen.
  *
  * @param GenericDataObject Das Object, das in die Datenbank eingefügt werden soll.
  * @author Alpay Firato
  */
 public void addTermin(GenericDataObject Object) {
   try {
     if (Object != null) {
       gdo.setCurrentTable("attachable_object");
       AttachableObject a = new AttachableObject();
       a.setTableName(this.tablename.toLowerCase());
       a.setKategorieId(0);
       gdo.addDataObject(a);
       a =
           (AttachableObject)
               gdo.unsafeQuery(
                       "select * from attachable_object where global_id=identity()",
                       new AttachableObject())
                   .get(0);
       Termin l = (Termin) Object;
       l.setId(a.getId());
       l.setGroupID(0);
       gdo.setCurrentTable(this.tablename);
       gdo.addDataObject(l);
     } else {
       JOptionPane.showMessageDialog(
           null,
           "Error: NULL OBJECT kann nicht in die Datenbank eingefügt werden",
           "Error!",
           JOptionPane.ERROR_MESSAGE);
     }
   } catch (Exception e) {
     JOptionPane.showMessageDialog(
         null, "Error: " + e.toString(), "Error!", JOptionPane.ERROR_MESSAGE);
   }
 }
  /**
   * Diese Methode löscht das übergebene Objekt aus der lokalen Datenbank.
   *
   * @param Termin Das ist der Termin der aus dem Datenbank entfernt werden soll.
   * @return boolean Falls das Objekt erfolgreich gelöscht wurde dann wird true zurückgeliefert,
   *     sonnst false.
   * @author Alpay Firato
   */
  public boolean deleteTermin(Termin Object) {
    if (Object == null) return false;

    try {
      GenericDAO gdo = new GenericDAO();
      List<GenericDataObject> loeschen =
          gdo.unsafeQuery(
              "SELECT * FROM " + this.tablename + " WHERE ID =" + Object.getId(), new Termin());
      lastDeletedObjects.add(loeschen.get(0));
      loeschen =
          gdo.unsafeQuery(
              "DELETE FROM " + this.tablename + " WHERE ID =" + Object.getId(), new Termin());
      return true;
    } catch (Exception e) {
      JOptionPane.showMessageDialog(
          null, "Error: " + e.toString(), "Error!", JOptionPane.ERROR_MESSAGE);
    }
    return true;
  }
  /**
   * Diese Methode liest die Daten von der lokalen Datenbank mit Hilfe des Generic-DAO aus. Danach
   * werden alle Objekte, die aus der Datenbank ausgelwsen worden sind, in eine Liste gespeichert.
   * Die Datensätze werden nach order geordnet.
   *
   * @author Alpay Firato
   */
  private void readData() {
    String query =
        "select * from TERMIN as t, ATTACHABLE_OBJECT_KATEGORIE as ok, TERMIN_KATEGORIE as kat where t.TERMIN_KATEGORIE_ID = kat.id AND t.GROUP_ID = ok.id";
    try {
      GenericDAO gdo = new GenericDAO();
      if (searchObject != null) {
        if (searchObject.getSecondaryTitle() != null) {
          query +=
              " AND LOWER(t.SECONDARY_TITLE) LIKE '%"
                  + searchObject.getSecondaryTitle().toLowerCase()
                  + "%'";
        }
        if (searchObject.getDescription() != null) {
          query +=
              " AND LOWER(t.DESCRIPTION) LIKE '%"
                  + searchObject.getDescription().toLowerCase()
                  + "%'";
        }
        if (this.datum != null) {
          query += " AND t.DATE LIKE '%" + this.datum + "%'";
        }
        if (this.type != null && !this.type.equals("-")) {
          query += " AND kat.NAME = '" + this.type + "'";
        }
        if (this.group != null && !this.group.equals("-")) {
          query += " AND ok.TITLE = '" + this.group + "'";
        }
        if (this.order != null) {
          query += " ORDER BY " + columnDBName[this.order];
        }

        this.objects = gdo.unsafeQuery(query, searchObject);
      }
    } catch (Exception e) {
      JOptionPane.showMessageDialog(
          null, "Error: " + e.toString(), "Error!", JOptionPane.ERROR_MESSAGE);
    }
  }