/**
   * When the "update geo data" button is clicked. <br>
   * Updates the login records with geodata for their IP's if found.<br>
   * This is done by a calling a web service from Hostinfo.org.<br>
   *
   * @param event
   * @throws InterruptedException
   */
  public void onClick$button_SecLoginlogList_UpdateGeoData(Event event)
      throws InterruptedException {

    final String str =
        InputConfirmBox.show(
            this.secLoginlogListWindow,
            Labels.getLabel("message.Information.InputSupervisorPassword"));

    if (StringUtils.equalsIgnoreCase(str, "yes we can")) {
      final int recCount = getGuiLoginLoggingService().updateFromHostLookUpMain();

      final String message =
          Labels.getLabel("message.Information.CountRecordsInsertedUpdated") + " " + recCount;
      final String title = Labels.getLabel("message.Information");
      MultiLineMessageBox.doSetTemplate();
      MultiLineMessageBox.show(message, title, MultiLineMessageBox.OK, "INFORMATION", true);

      // ++ create the searchObject and init sorting ++//
      final HibernateSearchObject<SecLoginlog> soSecLoginlog =
          new HibernateSearchObject<SecLoginlog>(SecLoginlog.class, getCountRows());
      // deeper loading of the relations to prevent the lazy
      // loading problem.
      soSecLoginlog.addFetch("ip2Country.countryCode");
      soSecLoginlog.addSort("lglLogtime", true);

      // Set the ListModel
      getPagedListWrapper().init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);

    } else {
      final String message = Labels.getLabel("message.error.falsePassword");
      final String title = Labels.getLabel("message.Error");
      MultiLineMessageBox.doSetTemplate();
      MultiLineMessageBox.show(message, title, MultiLineMessageBox.OK, "INFORMATION", true);
    }
  }
  /**
   * when the "search/filter" button is clicked. It searches over a period. <br>
   * Checks if EndDate not before StartDate.<br>
   *
   * @param event
   */
  public void onClick$button_SecLoginlogList_bb_SearchDate(Event event) throws Exception {

    if (!(this.dbox_LoginLog_DateFrom.getValue() == null)
        && !(this.dbox_LoginLog_DateTo.getValue() == null)) {

      if (this.dbox_LoginLog_DateFrom.getValue().after(this.dbox_LoginLog_DateTo.getValue())) {
        MultiLineMessageBox.doSetTemplate();
        MultiLineMessageBox.show(Labels.getLabel("message_EndDate_Before_BeginDate"));
      } else {
        Date dateFrom = this.dbox_LoginLog_DateFrom.getValue();
        Date dateTo = this.dbox_LoginLog_DateTo.getValue();

        final Calendar calFrom = Calendar.getInstance();
        calFrom.setTime(dateFrom);
        calFrom.set(Calendar.AM_PM, 0);
        calFrom.set(Calendar.HOUR, 0);
        calFrom.set(Calendar.MINUTE, 0);
        calFrom.set(Calendar.SECOND, 1);
        dateFrom = calFrom.getTime();

        final Calendar calTo = Calendar.getInstance();
        calTo.setTime(dateTo);
        calTo.set(Calendar.AM_PM, 1);
        calTo.set(Calendar.HOUR, 11);
        calTo.set(Calendar.MINUTE, 59);
        calTo.set(Calendar.SECOND, 59);
        dateTo = calTo.getTime();

        // ++ create the searchObject and init sorting ++//
        final HibernateSearchObject<SecLoginlog> soSecLoginlog =
            new HibernateSearchObject<SecLoginlog>(SecLoginlog.class, getCountRows());
        // deeper loading of the relations to prevent the lazy
        // loading problem.
        soSecLoginlog.addFetch("ip2Country.countryCode");
        soSecLoginlog.addSort("lglLogtime", true);

        soSecLoginlog.addFilter(new Filter("lglLogtime", dateFrom, Filter.OP_GREATER_OR_EQUAL));
        soSecLoginlog.addFilter(new Filter("lglLogtime", dateTo, Filter.OP_LESS_OR_EQUAL));

        // Set the ListModel
        getPagedListWrapper()
            .init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);

        this.checkbox_SecLoginlogList_ShowAll.setChecked(false);
      }
    }
  }
  /**
   * when the checkBox 'Show All' for filtering is checked. <br>
   *
   * @param event
   */
  public void onCheck$checkbox_SecLoginlogList_ShowAll(Event event) {

    // empty the text search boxes
    this.tb_SecUserlog_LoginName.setValue(""); // clear
    this.checkbox_SecLoginlogList_ShowOnlySuccess.setChecked(false);
    this.checkbox_SecLoginlogList_ShowOnlyFailed.setChecked(false);

    // ++ create the searchObject and init sorting ++//
    final HibernateSearchObject<SecLoginlog> soSecLoginlog =
        new HibernateSearchObject<SecLoginlog>(SecLoginlog.class, getCountRows());
    // deeper loading of the relations to prevent the lazy
    // loading problem.
    soSecLoginlog.addFetch("ip2Country.countryCode");
    soSecLoginlog.addSort("lglLogtime", true);

    // Set the ListModel
    getPagedListWrapper().init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);
  }
  /**
   * Filter the logins log list with 'like LoginName'. <br>
   * We check additionally if something is selected in the right type listbox <br>
   * for including in the search statement.<br>
   */
  public void onClick$button_SecLoginlogList_SearchLoginName(Event event) throws Exception {

    // if not empty
    if (!this.tb_SecUserlog_LoginName.getValue().isEmpty()) {
      this.checkbox_SecLoginlogList_ShowAll.setChecked(false); // clear

      // ++ create the searchObject and init sorting ++//
      final HibernateSearchObject<SecLoginlog> soSecLoginlog =
          new HibernateSearchObject<SecLoginlog>(SecLoginlog.class, getCountRows());
      // deeper loading of the relations to prevent the lazy
      // loading problem.
      soSecLoginlog.addFetch("ip2Country.countryCode");
      soSecLoginlog.addSort("lglLogtime", true);

      soSecLoginlog.addFilter(
          new Filter("lglLoginname", this.tb_SecUserlog_LoginName.getValue(), Filter.OP_EQUAL));

      // Set the ListModel
      getPagedListWrapper().init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);
    }
  }
  /**
   * When the "clear local IPs" button is clicked. <br>
   * Deletes local IP's (127.0.0.1) or '0:0:0:0:0:0' <br>
   * from the list from.
   *
   * @param event
   * @throws InterruptedException
   */
  public void onClick$button_SecLoginlogList_DeleteLocalIPs(Event event)
      throws InterruptedException {

    final int recCount = getLoginLoggingService().deleteLocalIPs();

    final String message =
        Labels.getLabel("message.Information.CountRecordsDeleted") + " " + recCount;
    final String title = Labels.getLabel("message.Information");
    MultiLineMessageBox.doSetTemplate();
    MultiLineMessageBox.show(message, title, MultiLineMessageBox.OK, "INFORMATION", true);

    // ++ create the searchObject and init sorting ++//
    final HibernateSearchObject<SecLoginlog> soSecLoginlog =
        new HibernateSearchObject<SecLoginlog>(SecLoginlog.class, getCountRows());
    // deeper loading of the relations to prevent the lazy
    // loading problem.
    soSecLoginlog.addFetch("ip2Country.countryCode");
    soSecLoginlog.addSort("lglLogtime", true);

    // Set the ListModel
    getPagedListWrapper().init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);
  }
  /**
   * Saves the components to table. <br>
   *
   * @throws InterruptedException
   */
  public void doSave() throws InterruptedException {

    Orderposition anOrderposition = getOrderposition();

    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    // force validation, if on, than execute by component.getValue()
    // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    if (!isValidationOn()) {
      doSetValidation();
    }

    artNr.getValue();

    // additionally calculate new
    if (isDataChanged()) {
      doCalculate();
    }

    // fill the objects with the components data
    doWriteComponentsToBean(anOrderposition);

    // save it to database
    try {
      getOrderService().saveOrUpdate(anOrderposition);
    } catch (DataAccessException e) {
      ZksampleMessageUtils.showErrorMessage(e.getMostSpecificCause().toString());

      // Reset to init values
      doResetInitValues();

      doReadOnly();
      btnCtrl.setBtnStatus_Save();
      return;
    }

    /** Synchronize the listbox in the OrderDialog */
    HibernateSearchObject<Orderposition> soOrderPosition =
        new HibernateSearchObject<Orderposition>(
            Orderposition.class, orderDialogCtrl.getPageSizeOrderPosition());
    soOrderPosition.addFilter(new Filter("order", getOrder(), Filter.OP_EQUAL));
    // deeper loading of a relation to prevent the lazy
    // loading problem.
    soOrderPosition.addFetch("article");

    // Set the ListModel.
    getPlwOrderpositions()
        .init(
            soOrderPosition,
            orderDialogCtrl.listBoxOrderOrderPositions,
            orderDialogCtrl.paging_ListBoxOrderOrderPositions);

    /** Synchronize the OrderList */
    // Listbox listBoxOrderArticle = orderListCtrl.getListBoxOrderArticle();
    // listBoxOrderArticle.setModel(orderDialogCtrl.listBoxOrderOrderPositions.getModel());
    orderListCtrl
        .getListBoxOrderArticle()
        .setModel(orderDialogCtrl.listBoxOrderOrderPositions.getModel());

    // synchronize the TotalCount from the paging component
    orderListCtrl.paging_OrderArticleList.setTotalSize(
        orderDialogCtrl.paging_ListBoxOrderOrderPositions.getTotalSize());

    doReadOnly();
    btnCtrl.setBtnStatus_Save();
    // init the old values vars new
    doStoreInitValues();
  }
  public void onCreate$secLoginlogListWindow(Event event) throws Exception {
    /**
     * Calculate how many rows have been place in the listbox. Get the currentDesktopHeight from a
     * hidden Intbox from the index.zul that are filled by onClientInfo() in the indexCtroller
     */
    final int height =
        ((Intbox) Path.getComponent("/outerIndexWindow/currentDesktopHeight"))
            .getValue()
            .intValue();
    final int maxListBoxHeight = height - 150;
    setCountRows(Math.round(maxListBoxHeight / 17));
    // System.out.println("MaxListBoxHeight : " + maxListBoxHeight);
    // System.out.println("==========> : " + getCountRows());

    this.borderLayout_SecUserlogList.setHeight(String.valueOf(maxListBoxHeight) + "px");

    // init, show all rights
    this.checkbox_SecLoginlogList_ShowAll.setChecked(true);

    // not used listheaders must be declared like ->
    // lh.setSortAscending(""); lh.setSortDescending("")
    this.listheader_SecLoginlogList_lglLogtime.setSortAscending(
        new FieldComparator("lglLogtime", true));
    this.listheader_SecLoginlogList_lglLogtime.setSortDescending(
        new FieldComparator("lglLogtime", false));
    this.listheader_SecLoginlogList_lglLogtime.setSortDirection("descending");
    this.listheader_SecLoginlogList_lglLoginname.setSortAscending(
        new FieldComparator("lglLoginname", true));
    this.listheader_SecLoginlogList_lglLoginname.setSortDescending(
        new FieldComparator("lglLoginname", false));
    this.listheader_SecLoginlogList_lglStatusid.setSortAscending(
        new FieldComparator("lglStatusid", true));
    this.listheader_SecLoginlogList_lglStatusid.setSortDescending(
        new FieldComparator("lglStatusid", false));
    this.listheader_SecLoginlogList_lglIp.setSortAscending(new FieldComparator("lglIp", true));
    this.listheader_SecLoginlogList_lglIp.setSortDescending(new FieldComparator("lglIp", false));
    this.listheader_SecLoginlogList_CountryCode2.setSortAscending(
        new FieldComparator("ip2Country.countryCode.ccdCode2", true));
    this.listheader_SecLoginlogList_CountryCode2.setSortDescending(
        new FieldComparator("ip2Country.countryCode.ccdCode2", false));
    this.listheader_SecLoginlogList_lglSessionid.setSortAscending(
        new FieldComparator("lglSessionid", true));
    this.listheader_SecLoginlogList_lglSessionid.setSortDescending(
        new FieldComparator("lglSessionid", false));

    // ++ create the searchObject and init sorting ++//
    final HibernateSearchObject<SecLoginlog> soSecLoginlog =
        new HibernateSearchObject<SecLoginlog>(SecLoginlog.class);
    // deeper loading of the relations to prevent the lazy
    // loading problem.
    soSecLoginlog.addFetch("ip2Country.countryCode");
    soSecLoginlog.addSort("lglLogtime", true);

    // set the paging params
    this.paging_SecUserLogList.setPageSize(getCountRows());
    this.paging_SecUserLogList.setDetailed(true);

    // Set the ListModel
    getPagedListWrapper().init(soSecLoginlog, this.listBoxSecUserlog, this.paging_SecUserLogList);
    // set the itemRenderer
    this.listBoxSecUserlog.setItemRenderer(new SecLoginlogListModelItemRenderer());

    createServerPushTimer();
  }