@Override
 protected Void doInBackground() {
   try {
     JollydaysBuchhaltungPUJollydaysEntityManager.getTransaction().commit();
     JollydaysBuchhaltungPUJollydaysEntityManager.getTransaction().begin();
   } catch (RollbackException rex) {
     rex.printStackTrace();
     JollydaysBuchhaltungPUJollydaysEntityManager.getTransaction().begin();
     List<BuhaArea> merged = new ArrayList<BuhaArea>(buhaAreaList.size());
     for (BuhaArea B : buhaAreaList) {
       merged.add(JollydaysBuchhaltungPUJollydaysEntityManager.merge(B));
     }
     buhaAreaList.clear();
     buhaAreaList.addAll(merged);
   }
   return null;
 }
 @Action
 public void newAreaRecord() {
   BuhaArea B = new BuhaArea();
   JollydaysBuchhaltungPUJollydaysEntityManager.persist(B);
   buhaAreaList.add(B);
   int row = buhaAreaList.size() - 1;
   jTableArea.setRowSelectionInterval(row, row);
   jTableArea.scrollRectToVisible(jTableArea.getCellRect(row, 0, true));
   setSaveNeeded(true);
 }
 @Action(enabledProperty = "areaRecordSelected")
 public void deleteAreaRecord() {
   int[] selected = jTableArea.getSelectedRows();
   List<BuhaArea> toRemove = new ArrayList<BuhaArea>(selected.length);
   for (int idx = 0; idx < selected.length; idx++) {
     BuhaArea B = buhaAreaList.get(jTableArea.convertRowIndexToModel(selected[idx]));
     toRemove.add(B);
     JollydaysBuchhaltungPUJollydaysEntityManager.remove(B);
   }
   buhaBookingList.removeAll(toRemove);
   setSaveNeeded(true);
 }
 @Action(enabledProperty = "areaRecordSelected")
 public void newBookingRecord() {
   int index = jTableArea.getSelectedRow();
   BuhaArea B = buhaAreaList.get(jTableArea.convertRowIndexToModel(index));
   Collection<BuhaBooking> bs = B.getBuhaBookingCollection();
   if (bs == null) {
     bs = new LinkedList<BuhaBooking>();
     B.setBuhaBookingCollection((List) bs);
   }
   BuhaBooking b = new BuhaBooking();
   JollydaysBuchhaltungPUJollydaysEntityManager.persist(b);
   b.setBuhaArea(B);
   bs.add(b);
   jTableArea.clearSelection();
   jTableArea.setRowSelectionInterval(index, index);
   int row = bs.size() - 1;
   jTableBooking.setRowSelectionInterval(row, row);
   jTableBooking.scrollRectToVisible(jTableBooking.getCellRect(row, 0, true));
   setSaveNeeded(true);
 }
 @Action(enabledProperty = "bookingRecordSelected")
 public void deleteBookingRecord() {
   int index = jTableArea.getSelectedRow();
   BuhaArea B = buhaAreaList.get(jTableArea.convertRowIndexToModel(index));
   Collection<BuhaBooking> bs = B.getBuhaBookingCollection();
   int[] selected = jTableBooking.getSelectedRows();
   List<BuhaBooking> toRemove = new ArrayList<BuhaBooking>(selected.length);
   for (int idx = 0; idx < selected.length; idx++) {
     selected[idx] = jTableBooking.convertRowIndexToModel(selected[idx]);
     int count = 0;
     Iterator<BuhaBooking> iter = bs.iterator();
     while (count++ < selected[idx]) iter.next();
     BuhaBooking b = iter.next();
     toRemove.add(b);
     JollydaysBuchhaltungPUJollydaysEntityManager.remove(b);
   }
   bs.removeAll(toRemove);
   jTableArea.clearSelection();
   jTableArea.setRowSelectionInterval(index, index);
   setSaveNeeded(true);
 }
  /** Creates new form JPanelKonfigER */
  public JPanelKonfigER() {
    initComponents();

    // tracking table selection
    jTableArea
        .getSelectionModel()
        .addListSelectionListener(
            new ListSelectionListener() {
              @Override
              public void valueChanged(ListSelectionEvent e) {
                firePropertyChange(
                    "areaRecordSelected", !isAreaRecordSelected(), isAreaRecordSelected());
              }
            });
    jTableBooking
        .getSelectionModel()
        .addListSelectionListener(
            new ListSelectionListener() {
              @Override
              public void valueChanged(ListSelectionEvent e) {
                firePropertyChange(
                    "bookingRecordSelected", !isBookingRecordSelected(), isBookingRecordSelected());
              }
            });

    // tracking changes to save
    bindingGroup.addBindingListener(
        new AbstractBindingListener() {
          @Override
          public void targetChanged(Binding binding, PropertyStateEvent event) {
            // save action observes saveNeeded property
            setSaveNeeded(true);
          }
        });

    // have a transaction started
    JollydaysBuchhaltungPUJollydaysEntityManager.getTransaction().begin();
  }
  /**
   * This method is called from within the constructor to initialize the form. WARNING: Do NOT
   * modify this code. The content of this method is always regenerated by the Form Editor.
   */
  @SuppressWarnings("unchecked")
  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  private void initComponents() {
    bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

    JollydaysBuchhaltungPUJollydaysEntityManager =
        java.beans.Beans.isDesignTime()
            ? null
            : javax.persistence.Persistence.createEntityManagerFactory(
                    "JollydaysBuchhaltungPUJollydays")
                .createEntityManager();
    buhaAreaQuery =
        java.beans.Beans.isDesignTime()
            ? null
            : JollydaysBuchhaltungPUJollydaysEntityManager.createQuery("SELECT b FROM BuhaArea b");
    buhaAreaList =
        java.beans.Beans.isDesignTime()
            ? java.util.Collections.emptyList()
            : buhaAreaQuery.getResultList();
    buhaAreaQuery1 =
        java.beans.Beans.isDesignTime()
            ? null
            : JollydaysBuchhaltungPUJollydaysEntityManager.createQuery("SELECT b FROM BuhaArea b");
    buhaAreaList1 =
        java.beans.Beans.isDesignTime()
            ? java.util.Collections.emptyList()
            : buhaAreaQuery1.getResultList();
    buhaBookingQuery =
        java.beans.Beans.isDesignTime()
            ? null
            : JollydaysBuchhaltungPUJollydaysEntityManager.createQuery(
                "SELECT b FROM BuhaBooking b");
    buhaBookingList =
        java.beans.Beans.isDesignTime()
            ? java.util.Collections.emptyList()
            : buhaBookingQuery.getResultList();
    buhaFilterQuery =
        java.beans.Beans.isDesignTime()
            ? null
            : JollydaysBuchhaltungPUJollydaysEntityManager.createQuery(
                "SELECT b FROM BuhaFilter b");
    buhaFilterList =
        java.beans.Beans.isDesignTime()
            ? java.util.Collections.emptyList()
            : buhaFilterQuery.getResultList();
    jScrollPane2 = new javax.swing.JScrollPane();
    jTableArea = new javax.swing.JTable();
    jScrollPane1 = new javax.swing.JScrollPane();
    jTableBooking = new javax.swing.JTable();
    jButtonDelArea = new javax.swing.JButton();
    jButtonNewArea = new javax.swing.JButton();
    jButtonSaveBooking = new javax.swing.JButton();
    jButtonRefreshBooking = new javax.swing.JButton();
    jButtonDelBooking = new javax.swing.JButton();
    jButtonNewBooking = new javax.swing.JButton();
    jScrollPane3 = new javax.swing.JScrollPane();
    jTableFilter = new javax.swing.JTable();
    jButtonSaveFilter = new javax.swing.JButton();
    jButtonRefreshFilter = new javax.swing.JButton();
    jButtonDelFilter = new javax.swing.JButton();
    jButtonNewFilter = new javax.swing.JButton();

    setName("Form"); // NOI18N

    jScrollPane2.setName("jScrollPane2"); // NOI18N

    jTableArea.setName("jTableArea"); // NOI18N

    org.jdesktop.swingbinding.JTableBinding jTableBinding =
        org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
            buhaAreaList,
            jTableArea);
    org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${description}"));
    columnBinding.setColumnName("Description");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${id}"));
    columnBinding.setColumnName("Id");
    columnBinding.setColumnClass(Integer.class);
    bindingGroup.addBinding(jTableBinding);
    jTableBinding.bind();
    jScrollPane2.setViewportView(jTableArea);

    jScrollPane1.setName("jScrollPane1"); // NOI18N

    jTableBooking.setName("jTableBooking"); // NOI18N

    jTableBinding =
        org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
            buhaBookingList,
            jTableBooking);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${kontosoll}"));
    columnBinding.setColumnName("Konto Soll");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${kontohaben}"));
    columnBinding.setColumnName("Kontohaben");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${debitor}"));
    columnBinding.setColumnName("Debitor");
    columnBinding.setColumnClass(Short.class);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${creditor}"));
    columnBinding.setColumnName("Creditor");
    columnBinding.setColumnClass(Short.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${buchungscode}"));
    columnBinding.setColumnName("Buchungscode");
    columnBinding.setColumnClass(Short.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${steuersatz}"));
    columnBinding.setColumnName("Steuersatz");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${gutscheinfilter}"));
    columnBinding.setColumnName("Gutscheinfilter");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${bookingtype}"));
    columnBinding.setColumnName("Bookingtype");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${buhaCountry}"));
    columnBinding.setColumnName("Buha Country");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${webCountry}"));
    columnBinding.setColumnName("Web Country");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${description}"));
    columnBinding.setColumnName("Description");
    columnBinding.setColumnClass(String.class);
    bindingGroup.addBinding(jTableBinding);
    jTableBinding.bind();
    jScrollPane1.setViewportView(jTableBooking);
    org.jdesktop.application.ResourceMap resourceMap =
        org.jdesktop.application.Application.getInstance(at.jollydays.booking.ui.MainUI.class)
            .getContext()
            .getResourceMap(JPanelKonfigER.class);
    jTableBooking
        .getColumnModel()
        .getColumn(1)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title1")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(2)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title2")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(3)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title3")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(4)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title4")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(5)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title5")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(6)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title6")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(7)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title7")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(8)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title8")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(9)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title9")); // NOI18N
    jTableBooking
        .getColumnModel()
        .getColumn(10)
        .setHeaderValue(resourceMap.getString("jTableBooking.columnModel.title10")); // NOI18N

    javax.swing.ActionMap actionMap =
        org.jdesktop.application.Application.getInstance(at.jollydays.booking.ui.MainUI.class)
            .getContext()
            .getActionMap(JPanelKonfigER.class, this);
    jButtonDelArea.setAction(actionMap.get("deleteAreaRecord")); // NOI18N
    jButtonDelArea.setText(resourceMap.getString("jButtonDelArea.text")); // NOI18N
    jButtonDelArea.setName("jButtonDelArea"); // NOI18N

    jButtonNewArea.setAction(actionMap.get("newAreaRecord")); // NOI18N
    jButtonNewArea.setText(resourceMap.getString("jButtonNewArea.text")); // NOI18N
    jButtonNewArea.setName("jButtonNewArea"); // NOI18N

    jButtonSaveBooking.setText(resourceMap.getString("jButtonSaveBooking.text")); // NOI18N
    jButtonSaveBooking.setName("jButtonSaveBooking"); // NOI18N

    jButtonRefreshBooking.setText(resourceMap.getString("jButtonRefreshBooking.text")); // NOI18N
    jButtonRefreshBooking.setName("jButtonRefreshBooking"); // NOI18N

    jButtonDelBooking.setText(resourceMap.getString("jButtonDelBooking.text")); // NOI18N
    jButtonDelBooking.setName("jButtonDelBooking"); // NOI18N

    jButtonNewBooking.setText(resourceMap.getString("jButtonNewBooking.text")); // NOI18N
    jButtonNewBooking.setName("jButtonNewBooking"); // NOI18N

    jScrollPane3.setName("jScrollPane3"); // NOI18N

    jTableFilter.setName("jTableFilter"); // NOI18N

    jTableBinding =
        org.jdesktop.swingbinding.SwingBindings.createJTableBinding(
            org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE,
            buhaFilterList,
            jTableFilter);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${itemFrom}"));
    columnBinding.setColumnName("Item From");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${itemTo}"));
    columnBinding.setColumnName("Item To");
    columnBinding.setColumnClass(Integer.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${gutscheinfilter}"));
    columnBinding.setColumnName("Gutscheinfilter");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${country}"));
    columnBinding.setColumnName("Country");
    columnBinding.setColumnClass(String.class);
    columnBinding =
        jTableBinding.addColumnBinding(
            org.jdesktop.beansbinding.ELProperty.create("${description}"));
    columnBinding.setColumnName("Description");
    columnBinding.setColumnClass(String.class);
    bindingGroup.addBinding(jTableBinding);
    jTableBinding.bind();
    jScrollPane3.setViewportView(jTableFilter);
    jTableFilter
        .getColumnModel()
        .getColumn(0)
        .setHeaderValue(resourceMap.getString("jTableFilter.columnModel.title0")); // NOI18N
    jTableFilter
        .getColumnModel()
        .getColumn(1)
        .setHeaderValue(resourceMap.getString("jTableFilter.columnModel.title1")); // NOI18N
    jTableFilter
        .getColumnModel()
        .getColumn(2)
        .setHeaderValue(resourceMap.getString("jTableFilter.columnModel.title2")); // NOI18N
    jTableFilter
        .getColumnModel()
        .getColumn(3)
        .setHeaderValue(resourceMap.getString("jTableFilter.columnModel.title3")); // NOI18N
    jTableFilter
        .getColumnModel()
        .getColumn(4)
        .setHeaderValue(resourceMap.getString("jTableFilter.columnModel.title4")); // NOI18N

    jButtonSaveFilter.setText(resourceMap.getString("jButtonSaveFilter.text")); // NOI18N
    jButtonSaveFilter.setName("jButtonSaveFilter"); // NOI18N

    jButtonRefreshFilter.setText(resourceMap.getString("jButtonRefreshFilter.text")); // NOI18N
    jButtonRefreshFilter.setName("jButtonRefreshFilter"); // NOI18N

    jButtonDelFilter.setText(resourceMap.getString("jButtonDelFilter.text")); // NOI18N
    jButtonDelFilter.setName("jButtonDelFilter"); // NOI18N

    jButtonNewFilter.setText(resourceMap.getString("jButtonNewFilter.text")); // NOI18N
    jButtonNewFilter.setName("jButtonNewFilter"); // NOI18N

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 1043, Short.MAX_VALUE)
            .addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout
                    .createSequentialGroup()
                    .addGap(605, 605, 605)
                    .addComponent(jButtonNewArea)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonDelArea))
            .addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout
                    .createSequentialGroup()
                    .addGap(461, 461, 461)
                    .addComponent(jButtonNewBooking)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonDelBooking)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonRefreshBooking)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonSaveBooking))
            .addComponent(
                jScrollPane3,
                javax.swing.GroupLayout.Alignment.TRAILING,
                javax.swing.GroupLayout.DEFAULT_SIZE,
                1043,
                Short.MAX_VALUE)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1043, Short.MAX_VALUE)
            .addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout
                    .createSequentialGroup()
                    .addGap(461, 461, 461)
                    .addComponent(jButtonNewFilter)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonDelFilter)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonRefreshFilter)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(jButtonSaveFilter)));
    layout.setVerticalGroup(
        layout
            .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(
                layout
                    .createSequentialGroup()
                    .addComponent(
                        jScrollPane2,
                        javax.swing.GroupLayout.PREFERRED_SIZE,
                        129,
                        javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jButtonDelArea)
                            .addComponent(jButtonNewArea))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(
                        jScrollPane1,
                        javax.swing.GroupLayout.PREFERRED_SIZE,
                        283,
                        javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jButtonSaveBooking)
                            .addComponent(jButtonRefreshBooking)
                            .addComponent(jButtonDelBooking)
                            .addComponent(jButtonNewBooking))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(
                        jScrollPane3,
                        javax.swing.GroupLayout.PREFERRED_SIZE,
                        173,
                        javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(
                        layout
                            .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jButtonSaveFilter)
                            .addComponent(jButtonRefreshFilter)
                            .addComponent(jButtonDelFilter)
                            .addComponent(jButtonNewFilter))
                    .addContainerGap(50, Short.MAX_VALUE)));

    bindingGroup.bind();
  } // </editor-fold>//GEN-END:initComponents