org.adimadim.kosu.MainForm.java Source code

Java tutorial

Introduction

Here is the source code for org.adimadim.kosu.MainForm.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.adimadim.kosu;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.adimadim.kosu.entity.Account;
import org.adimadim.kosu.entity.Race;
import org.adimadim.kosu.entity.RaceScore;
import org.adimadim.kosu.entity.RaceScorePK;
import org.adimadim.kosu.service.RaceService;
import org.adimadim.service.ClientExportImport;
import org.adimadim.service.ClientExportImportService;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author Adem
 */
public class MainForm extends javax.swing.JFrame {

    private ClientExportImportService clientExportImportService;
    private RaceService raceService;
    private Race selectedRace;
    private Account selectedAccount;

    /**
     * Creates new form MainForm
     */
    public MainForm() {
        initComponents();
    }

    private RaceService getRaceService() {
        if (raceService == null) {
            raceService = new RaceService();
        }
        return raceService;
    }

    private ClientExportImportService getClientExportImportService() {
        if (clientExportImportService == null) {
            clientExportImportService = new ClientExportImportService();
        }
        return clientExportImportService;
    }

    /**
     * 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() {

        jPopupMenu1 = new javax.swing.JPopupMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jPanel1 = new javax.swing.JPanel();
        jToolBar1 = new javax.swing.JToolBar();
        jButton3 = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        jButton2 = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        jButton4 = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        jButton8 = new javax.swing.JButton();
        jSplitPane1 = new javax.swing.JSplitPane();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jPanel5 = new javax.swing.JPanel();
        jPanel7 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTable2 = new javax.swing.JTable();
        jPanel8 = new javax.swing.JPanel();
        jButton7 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jPanel6 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jLabel5 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jLabel7 = new javax.swing.JLabel();
        jTextField5 = new javax.swing.JTextField();
        jTextField6 = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jButton5 = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();

        jMenuItem1.setText("Yar se");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jPopupMenu1.add(jMenuItem1);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setPreferredSize(new java.awt.Dimension(1100, 700));

        jPanel1.setMinimumSize(new java.awt.Dimension(800, 59));
        jPanel1.setPreferredSize(new java.awt.Dimension(1000, 600));
        jPanel1.setLayout(new java.awt.BorderLayout());

        jToolBar1.setRollover(true);
        jToolBar1.setPreferredSize(new java.awt.Dimension(15, 50));

        jButton3.setText("Yarlar Gster");
        jButton3.setFocusable(false);
        jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton3.setPreferredSize(new java.awt.Dimension(113, 48));
        jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton3);
        jToolBar1.add(jSeparator1);

        jButton2.setText("Yarlar Sunucudan Ykle");
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton2.setPreferredSize(new java.awt.Dimension(172, 48));
        jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton2);
        jToolBar1.add(jSeparator2);

        jButton4.setText("Koucular Sunucudan Ykle");
        jButton4.setFocusable(false);
        jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton4.setPreferredSize(new java.awt.Dimension(186, 48));
        jButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton4);
        jToolBar1.add(jSeparator3);

        jButton8.setText("Yar Sonularn Sunucuya Gnder");
        jButton8.setFocusable(false);
        jButton8.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton8.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton8ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton8);

        jPanel1.add(jToolBar1, java.awt.BorderLayout.NORTH);

        jSplitPane1.setDividerLocation(350);

        jPanel4.setPreferredSize(new java.awt.Dimension(200, 471));
        jPanel4.setLayout(new java.awt.BorderLayout());

        jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] {

        }));
        jTable1.setComponentPopupMenu(jPopupMenu1);
        jScrollPane1.setViewportView(jTable1);

        jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jSplitPane1.setLeftComponent(jPanel4);

        jPanel5.setLayout(new java.awt.BorderLayout());

        jPanel7.setLayout(new java.awt.BorderLayout());

        jTable2.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] {

        }));
        jScrollPane2.setViewportView(jTable2);

        jPanel7.add(jScrollPane2, java.awt.BorderLayout.CENTER);

        jPanel8.setPreferredSize(new java.awt.Dimension(639, 50));

        jButton7.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jButton7.setText("Excel'e aktar");
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });

        jButton6.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jButton6.setText("Yenile");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jButton9.setText("Sil");
        jButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton9ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8);
        jPanel8.setLayout(jPanel8Layout);
        jPanel8Layout.setHorizontalGroup(jPanel8Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel8Layout.createSequentialGroup()
                        .addContainerGap(404, Short.MAX_VALUE).addComponent(jButton9)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jButton7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jButton6)
                        .addContainerGap()));
        jPanel8Layout.setVerticalGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel8Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton7).addComponent(jButton6).addComponent(jButton9))
                        .addContainerGap(13, Short.MAX_VALUE)));

        jPanel7.add(jPanel8, java.awt.BorderLayout.SOUTH);

        jPanel5.add(jPanel7, java.awt.BorderLayout.CENTER);

        jPanel2.setLayout(new java.awt.BorderLayout());

        jPanel6.setPreferredSize(new java.awt.Dimension(513, 150));

        jLabel1.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jLabel1.setText("Gs No");

        jTextField1.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jTextField1.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                jTextField1FocusLost(evt);
            }
        });
        jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextField1KeyReleased(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jLabel2.setText("Sra No");

        jTextField2.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jTextField2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTextField2KeyReleased(evt);
            }
        });

        jButton1.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jButton1.setText("Kaydet");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel5.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jLabel5.setText("Ad");

        jTextField3.setEditable(false);
        jTextField3.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N

        jLabel6.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jLabel6.setText("Soyad");

        jTextField4.setEditable(false);
        jTextField4.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N

        jLabel7.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jLabel7.setText("Cinsiyet");

        jTextField5.setEditable(false);
        jTextField5.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N

        jTextField6.setEditable(false);
        jTextField6.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N

        jLabel8.setFont(new java.awt.Font("sansserif", 0, 14)); // NOI18N
        jLabel8.setText("Gs No :");

        jButton5.setFont(new java.awt.Font("sansserif", 0, 18)); // NOI18N
        jButton5.setText("Temizle");
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(jPanel6Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap().addGroup(jPanel6Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel6Layout.createSequentialGroup()
                                .addGroup(jPanel6Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel1).addComponent(jTextField1,
                                                javax.swing.GroupLayout.PREFERRED_SIZE, 158,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(jPanel6Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jLabel2)
                                        .addGroup(jPanel6Layout.createSequentialGroup()
                                                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        187, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jButton1)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jButton5))))
                        .addGroup(jPanel6Layout.createSequentialGroup()
                                .addGroup(jPanel6Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, 89,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(jLabel8))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(
                                        jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel5).addComponent(jTextField3,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 154,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(
                                        jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel6).addComponent(jTextField4,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 155,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(3, 3, 3).addGroup(
                                        jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel7).addComponent(jTextField5,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE, 54,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))))
                        .addContainerGap(96, Short.MAX_VALUE)));
        jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel1).addComponent(jLabel2))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jButton1).addComponent(jButton5))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel5).addComponent(jLabel6).addComponent(jLabel7)
                                .addComponent(jLabel8))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(11, Short.MAX_VALUE)));

        jPanel2.add(jPanel6, java.awt.BorderLayout.CENTER);

        jPanel3.setPreferredSize(new java.awt.Dimension(352, 50));

        jLabel3.setFont(new java.awt.Font("sansserif", 1, 18)); // NOI18N

        jLabel4.setFont(new java.awt.Font("sansserif", 1, 18)); // NOI18N

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout
                .setHorizontalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap().addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel4).addContainerGap(806, Short.MAX_VALUE)));
        jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel3).addComponent(jLabel4))
                        .addContainerGap(44, Short.MAX_VALUE)));

        jPanel2.add(jPanel3, java.awt.BorderLayout.NORTH);

        jPanel5.add(jPanel2, java.awt.BorderLayout.NORTH);

        jSplitPane1.setRightComponent(jPanel5);

        jPanel1.add(jSplitPane1, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        try {
            saveRaces();
            retrieveRaces();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        try {
            if (jTable1.getSelectedRow() < 0) {
                return;
            }
            Integer raceId = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
            changeSelectedRace(retrieveRace(raceId));
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        try {
            retrieveRaces();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jTextField1KeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField1KeyReleased
        if (evt.getKeyCode() != 10) {
            return;
        }
        jTextField2.requestFocus();
    }//GEN-LAST:event_jTextField1KeyReleased

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
        loadAccountsFromServer();
    }//GEN-LAST:event_jButton4ActionPerformed

    private void loadAccountsFromServer() {
        try {
            boolean devam = true;
            Integer startAccountId = 0;
            Integer count = 100;
            while (devam) {
                ClientExportImport port = getClientExportImportService().getClientExportImportPort();
                List<org.adimadim.service.Account> wsAccountList = port.retrieveAccounts(startAccountId, count);
                if (wsAccountList != null && wsAccountList.size() > 0) {
                    startAccountId = saveAccounts(wsAccountList);
                } else {
                    devam = false;
                }
            }
            JOptionPane.showMessageDialog(this, "lem tamamland. ", "Hata", JOptionPane.ERROR_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void sendRaceScoresToServer() {
        if (selectedRace == null) {
            JOptionPane.showMessageDialog(this, "Ltfen sonularn gndermek istediiniz yar seiniz",
                    "Hata", JOptionPane.ERROR_MESSAGE);
            return;
        }

        try {
            ClientExportImport port = getClientExportImportService().getClientExportImportPort();
            List<org.adimadim.service.RaceScoreDto> wsRaceScores = prepareAndRetrieveRaceScores();
            String result = port.saveRaceScores(wsRaceScores);
            JOptionPane.showMessageDialog(this, result, "Hata", JOptionPane.ERROR_MESSAGE);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void jTextField1FocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTextField1FocusLost
        if (jTextField1.getText().trim().toUpperCase().startsWith("S")) {
            JOptionPane.showMessageDialog(this, "Bu alana sra numaras giremezsiniz.");
            jTextField1.setText("");
            jTextField1.requestFocus();
            return;
        }
        retrieveAccount();
    }//GEN-LAST:event_jTextField1FocusLost

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
        clearInputs();
    }//GEN-LAST:event_jButton5ActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        if (!jTextField2.getText().trim().toUpperCase().startsWith("S")) {
            JOptionPane.showMessageDialog(this, "Sra no alanna sadece sra numaras girebilirsiniz. "
                    + jTextField2.getText().trim().replaceAll("S", ""));
            jTextField2.setText("");
            return;
        }

        try {
            saveRaceScore();
            retrieveRaceScores();
            jTextField1.requestFocus();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
        try {
            retrieveRaceScores();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton6ActionPerformed

    private void jTextField2KeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField2KeyReleased
        if (evt.getKeyCode() != 10) {
            return;
        }

        if (!jTextField2.getText().trim().toUpperCase().startsWith("S")) {
            JOptionPane.showMessageDialog(this, "Bu alana sadece sra numaras girebilirsiniz.");
            jTextField2.setText("");
            return;
        }
        try {
            saveRaceScore();
            retrieveRaceScores();
            jTextField1.requestFocus();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jTextField2KeyReleased

    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
        try {
            exportToExcel();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton7ActionPerformed

    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed
        sendRaceScoresToServer();
    }//GEN-LAST:event_jButton8ActionPerformed

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed
        if (JOptionPane.showConfirmDialog(this, "Yar sonucunu silmek istediinize emin misiniz?", "Uyar",
                JOptionPane.YES_NO_OPTION) != JOptionPane.YES_OPTION) {
            return;
        }
        if (jTable2.getSelectedRow() < 0) {
            JOptionPane.showMessageDialog(this, "Ltfen silmek istediiniz kayd seiniz.");
            return;
        }
        try {
            deleteRaceScore();
            retrieveRaceScores();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_jButton9ActionPerformed

    private void deleteRaceScore() throws Exception {
        Integer accountId = Integer.valueOf(jTable2.getValueAt(jTable2.getSelectedRow(), 0).toString());
        Integer raceId = selectedRace.getRaceId();
        getRaceService().deleteRaceScore(accountId, raceId);

    }

    private void clearInputs() {
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jTextField5.setText("");
        jTextField6.setText("");
    }

    private void retrieveAccount() {
        try {
            if (jTextField1.getText().trim().equals("")) {
                return;
            }
            Integer chestNumber = Integer.valueOf(jTextField1.getText().trim());
            Account account = getRaceService().retrieveAccountByChestNumber(chestNumber);
            jTextField6.setText(account.getChestNumber().toString());
            jTextField3.setText(account.getName());
            jTextField4.setText(account.getSurname());
            jTextField5.setText(account.getGender());
            selectedAccount = account;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void saveRaceScore() {
        try {
            if (jTextField1.getText().trim().equals("")) {
                return;
            }
            if (jTextField2.getText().trim().equals("")) {
                return;
            }
            if (selectedAccount == null) {
                return;
            }
            if (selectedRace == null) {
                return;
            }
            RaceScore raceScore = new RaceScore();
            RaceScorePK raceScorePk = new RaceScorePK(selectedRace.getRaceId(), selectedAccount.getAccountId());
            raceScore.setRaceScorePK(raceScorePk);
            raceScore.setAccount(selectedAccount);
            raceScore.setRace(selectedRace);
            raceScore.setOrderNo(Integer.valueOf(jTextField2.getText().trim().toUpperCase().replaceAll("S", "")));
            getRaceService().saveRaceScore(raceScore);
            clearInputs();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Hata", JOptionPane.ERROR_MESSAGE);
        }
    }

    private void changeSelectedRace(Race race) throws Exception {
        selectedRace = race;
        jLabel3.setText(selectedRace.getRaceId().toString() + " )");
        jLabel4.setText(selectedRace.getRaceName());
        retrieveRaceScores();
    }

    private Integer saveAccounts(List<org.adimadim.service.Account> wsAccountList) throws Exception {
        Integer lastAccountId = 0;
        List<org.adimadim.kosu.entity.Account> entityAccountList = new ArrayList<>();
        for (org.adimadim.service.Account wsAccount : wsAccountList) {
            lastAccountId = wsAccount.getAccountId();
            org.adimadim.kosu.entity.Account entityAccount = new org.adimadim.kosu.entity.Account();
            entityAccount.setAccountId(wsAccount.getAccountId());
            entityAccount.setName(wsAccount.getName());
            entityAccount.setSurname(wsAccount.getSurname());
            entityAccount.setAdimadim(wsAccount.getAdimadim());
            entityAccount.setActive(wsAccount.getActive());
            entityAccount.setAdimadimRun(wsAccount.getAdimadimRun());
            entityAccount.setBirthDate(wsAccount.getBirthDate().toGregorianCalendar().getTime());
            entityAccount.setChestNumber(wsAccount.getChestNumber());
            entityAccount.setCreateDate(wsAccount.getCreateDate().toGregorianCalendar().getTime());
            entityAccount.setEmail(wsAccount.getEmail());
            entityAccount.setGender(wsAccount.getGender());
            entityAccount.setManager(wsAccount.getManager());
            entityAccount.setPassword("*****");
            entityAccount.setPhoneNumber(wsAccount.getPhoneNumber());
            entityAccount.setUserName(wsAccount.getUserName());
            entityAccountList.add(entityAccount);
        }
        getRaceService().saveAccountList(entityAccountList);
        return lastAccountId;
    }

    private void saveRaces() throws Exception {
        ClientExportImport port = getClientExportImportService().getClientExportImportPort();
        List<org.adimadim.service.Race> wsRaceList = port.retrieveRaces();
        List<org.adimadim.kosu.entity.Race> entityRaceList = new ArrayList<>();
        for (org.adimadim.service.Race wsRace : wsRaceList) {
            org.adimadim.kosu.entity.Race entityRace = new org.adimadim.kosu.entity.Race();
            entityRace.setActive(wsRace.getActive());
            entityRace.setRaceDate(wsRace.getRaceDate().toGregorianCalendar().getTime());
            entityRace.setRaceId(wsRace.getRaceId());
            entityRace.setRaceName(wsRace.getRaceName());
            entityRace.setRaceScoreList(new ArrayList<RaceScore>());
            entityRaceList.add(entityRace);
        }
        getRaceService().saveRaceList(entityRaceList);
        JOptionPane.showMessageDialog(this, "lem tamamland. " + entityRaceList.size() + " kayt yklendi",
                "Hata", JOptionPane.ERROR_MESSAGE);
    }

    private void retrieveRaces() throws Exception {
        List<Race> raceList = getRaceService().retrieveAllRaces();
        Collections.sort(raceList, new CustomComparator());
        jTable1.setModel(convertRaceListToTableModel(raceList));
    }

    public class CustomComparator implements Comparator<Race> {

        @Override
        public int compare(Race o1, Race o2) {
            return o2.getRaceId().compareTo(o1.getRaceId());
        }
    }

    private void retrieveRaceScores() throws Exception {
        if (selectedRace == null) {
            JOptionPane.showMessageDialog(this, "Ltfen nce bir yar seiniz", "Bilgi",
                    JOptionPane.INFORMATION_MESSAGE);
            return;
        }
        List<RaceScore> raceScoreList = getRaceService().retrieveRaceScoresByRaceId(selectedRace.getRaceId());
        jTable2.setModel(convertRaceScoreListToTableModel(raceScoreList));
    }

    private List<org.adimadim.service.RaceScoreDto> prepareAndRetrieveRaceScores() throws Exception {
        if (selectedRace == null) {
            JOptionPane.showMessageDialog(this, "Ltfen nce bir yar seiniz", "Bilgi",
                    JOptionPane.INFORMATION_MESSAGE);
            return null;
        }
        List<org.adimadim.kosu.entity.RaceScore> raceScoreList = getRaceService()
                .retrieveRaceScoresByRaceId(selectedRace.getRaceId());
        List<org.adimadim.service.RaceScoreDto> wsRaceScoreList = new ArrayList<org.adimadim.service.RaceScoreDto>();

        for (org.adimadim.kosu.entity.RaceScore tempRaceScore : raceScoreList) {
            org.adimadim.service.RaceScoreDto tempWsRaceScore = new org.adimadim.service.RaceScoreDto();
            tempWsRaceScore.setRaceId(tempRaceScore.getRace().getRaceId());
            tempWsRaceScore.setAccountId(tempRaceScore.getAccount().getAccountId());
            tempWsRaceScore.setDuration(dateToXmlGregorianCalendar(new Date()));
            tempWsRaceScore.setOrderNo(tempRaceScore.getOrderNo());
            wsRaceScoreList.add(tempWsRaceScore);
        }
        return wsRaceScoreList;
    }

    private XMLGregorianCalendar dateToXmlGregorianCalendar(Date date) throws DatatypeConfigurationException {
        GregorianCalendar c = new GregorianCalendar();
        c.setTime(date);
        XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
        return xgc;
    }

    private Race retrieveRace(Integer raceId) throws Exception {
        return selectedRace = getRaceService().retrieveRace(raceId);
    }

    private TableModel convertRaceListToTableModel(List<Race> raceList) {
        Object[] header = new Object[] { "No", "Yar Ad" };
        Object[][] data = new Object[raceList.size()][2];
        for (Race race : raceList) {
            Object[] row = new Object[2];
            row[0] = race.getRaceId();
            row[1] = race.getRaceName();
            data[raceList.indexOf(race)] = row;
        }

        DefaultTableModel model = new DefaultTableModel(data, header) {

            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        return model;
    }

    private void exportToExcel() throws Exception {
        List<RaceScore> raceScoreList = getRaceService().retrieveRaceScoresByRaceId(selectedRace.getRaceId());
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet("Sonuclar");
        XSSFRow row = sheet.createRow(0);
        row.createCell(0).setCellValue("Id");
        row.createCell(1).setCellValue("Gs No");
        row.createCell(2).setCellValue("Ad");
        row.createCell(3).setCellValue("Soyad");
        row.createCell(4).setCellValue("Cinsiyet");
        row.createCell(5).setCellValue("Sra");
        int i = 1;
        for (RaceScore raceScore : raceScoreList) {
            XSSFRow tempRow = sheet.createRow(i);
            tempRow.createCell(0).setCellValue(raceScore.getAccount().getAccountId());
            tempRow.createCell(1).setCellValue(raceScore.getAccount().getChestNumber());
            tempRow.createCell(2).setCellValue(raceScore.getAccount().getName());
            tempRow.createCell(3).setCellValue(raceScore.getAccount().getSurname());
            tempRow.createCell(4).setCellValue(raceScore.getAccount().getGender());
            tempRow.createCell(5).setCellValue(raceScore.getOrderNo());
            i++;
        }
        String fileName = "sonuclar.xlsx";
        try (FileOutputStream fos = new FileOutputStream(fileName)) {
            workbook.write(fos);
        }
        System.out.println(fileName + " written successfully");

    }

    private TableModel convertRaceScoreListToTableModel(List<RaceScore> raceScoreList) {
        Object[] header = new Object[] { "Id", "Ad", "Soyad", "Gs No", "Sra" };
        Object[][] data = new Object[raceScoreList.size()][5];
        for (RaceScore raceScore : raceScoreList) {
            Object[] row = new Object[5];
            row[0] = raceScore.getAccount().getAccountId();
            row[1] = raceScore.getAccount().getName();
            row[2] = raceScore.getAccount().getSurname();
            row[3] = raceScore.getAccount().getChestNumber();
            row[4] = raceScore.getOrderNo();
            data[raceScoreList.indexOf(raceScore)] = row;
        }

        DefaultTableModel model = new DefaultTableModel(data, header) {

            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        return model;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException
                | javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MainForm.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MainForm().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPopupMenu jPopupMenu1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JToolBar jToolBar1;
    // End of variables declaration//GEN-END:variables
}