/**
  * DOCUMENT ME!
  *
  * @param evt DOCUMENT ME!
  */
 private void btnCreateNewFlurstueckActionPerformed(
     final java.awt.event.ActionEvent
         evt) { // GEN-FIRST:event_btnCreateNewFlurstueckActionPerformed
   try {
     if (log.isDebugEnabled()) {
       log.debug("create flurstück performed");
     }
     // lblStatus.setText("");
     ((TitledBorder) panAll.getBorder()).setTitle("");
     final FlurstueckSchluesselCustomBean checkedKey =
         CidsBroker.getInstance().completeFlurstueckSchluessel(currentFlurstueckSchluessel);
     if (checkedKey != null) {
       if (log.isDebugEnabled()) {
         log.debug("Flurstück ist bereits vorhanden");
       }
       // ((lblStatus.setText("Flurstück ist bereits vorhanden, bitte wählen Sie einen anderen
       // Schlüssel.");
       ((TitledBorder) panAll.getBorder())
           .setTitle("Flurstück ist bereits vorhanden, bitte wählen Sie einen anderen Schlüssel.");
     } else {
       if (log.isDebugEnabled()) {
         log.debug("Flurstück ist noch nicht vorhanden und kann angelegt werden");
       }
       final FlurstueckCustomBean newFlurstueck =
           CidsBroker.getInstance().createFlurstueck(currentFlurstueckSchluessel);
       if (newFlurstueck != null) {
         if (log.isDebugEnabled()) {
           log.debug("Id des neuen Flurstücks" + newFlurstueck.getId());
         }
         // LagisBroker.getInstance().fireFlurstueckChanged(newFlurstueck);
         LagisBroker.getInstance().loadFlurstueck(newFlurstueck.getFlurstueckSchluessel());
         StaticSwingTools.getParentFrame(this).dispose();
       } else {
         if (log.isDebugEnabled()) {
           log.debug("Neues Flurstücks ist null");
           log.debug("Fehler beim Anlegen den Flurstuecks.");
         }
       }
     }
   } catch (Exception ex) {
     log.error("Fehler beim anlegen des Flurstuecks: " + ex);
   }
 } // GEN-LAST:event_btnCreateNewFlurstueckActionPerformed
    // ~ Methods  ------------------------------------------------------------
    @Override
    protected Set<CidsBean> doInBackground() throws Exception {
      final FlurstueckSchluesselCustomBean currentKey =
          LagisBroker.getInstance().getCurrentFlurstueckSchluessel();
      if (currentKey != null) {
        Geometry flurstueckGeom = LagisBroker.getInstance().getInstance().getCurrentWFSGeometry();
        if (flurstueckGeom != null) {
          log.info(
              "Crossover: Geometrie zum bestimmen der Kassenzeichen (vor Transformation): "
                  + flurstueckGeom
                  + ",SRS"
                  + flurstueckGeom.getSRID());
          flurstueckGeom =
              CrsTransformer.transformToGivenCrs(flurstueckGeom, "EPSG:31466"); // Hardcoded FTW
          log.info(
              "Crossover: Geometrie zum bestimmen der Kassenzeichen: "
                  + flurstueckGeom
                  + ",SRS"
                  + flurstueckGeom.getSRID());

          //                    final KassenzeichenFacadeRemote verdisServer =
          // LagisBroker.getInstance().getVerdisServer();

          final String query =
              "SELECT 11, k.id\n"
                  + "FROM  kassenzeichen k, geom\n"
                  + "WHERE k.geometrie = geom.id\n"
                  + "AND not isEmpty(geom.geo_field)\n"
                  + "AND intersects(geom.geo_field,st_buffer(st_buffer(geometryfromtext('"
                  + flurstueckGeom.toText()
                  + "',31466), "
                  + LagisBroker.getInstance().getKassenzeichenBuffer()
                  + "), 0))";

          if (log.isDebugEnabled()) {
            log.debug(query);
          }

          if (isCancelled()) {
            return null;
          }

          final MetaObject[] result =
              CidsBroker.getInstance().getMetaObject(query, "VERDIS_GRUNDIS");
          final HashSet<CidsBean> kassenzeichen =
              new HashSet<CidsBean>((result == null) ? 0 : result.length);

          if (result != null) {
            for (int i = 0; i < result.length; i++) {
              kassenzeichen.add(result[i].getBean());
            }
          }

          //                        kassenzeichen =
          // verdisServer.getIntersectingKassenzeichen(flurstueckGeom,
          //                                LagisBroker.getInstance().getKassenzeichenBuffer());

          if ((kassenzeichen != null) && (kassenzeichen.size() > 0)) {
            if (log.isDebugEnabled()) {
              log.debug("Crossover: Anzahl Kassenzeichen: " + kassenzeichen.size());
            }
          } else {
            log.info("Crossover:Keine geschnittenen Kassenzeichen gefunden."); // ToDo Meldung an
            // benutzer
          }
          return kassenzeichen;
        } else { // ToDo user message !
          lblMessage.setText(
              "<html>Keine Flurstücksgeometrie vorhanden,<br/>bestimmen der Kasssenzeichen nicht möglich.</html>");
          log.warn("Crossover: Keine Geometrie vorhanden zum bestimmen der Kassenzeichen");
        }
      } else {
        // ToDo user message !
        lblMessage.setText(
            "<html>Bitte wählen Sie ein Flurstück aus,<br/>damit Kassenzeichen bestimmt werden können.</html > ");
        log.warn("Crossover: Kein  Flurstück ausgewählt kann Lagis Kassenzeichen nicht bestimmen");
      }
      return null;
    }