UpdateTransaction.java Source code

Java tutorial

Introduction

Here is the source code for UpdateTransaction.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.
 */

/**
 *
 * @author KIDDY
 */

import java.awt.Color;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.swing.JOptionPane;
import org.joda.time.DateTime;
import org.joda.time.Days;

public class UpdateTransaction extends javax.swing.JFrame {

    /**
     * Creates new form UpdateTransaction
     */
    public UpdateTransaction() {
        initComponents();
        getContentPane().setBackground(Color.BLACK);

        getDataForCombo();
        getDataForCustomer();
        getDataForRoom();
        ClearForm();

        dp_checkin.setFormats(new String[] { "yyyy-MM-dd" });
        dp_checkin.setDate(null);

        dp_checkout.setFormats(new String[] { "yyyy-MM-dd" });
        dp_checkout.setDate(null);
        jTextField4.setVisible(false);

    }

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

        cb_IDCustomer = new javax.swing.JComboBox();
        cb_IDRoom = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        dp_checkin = new org.jdesktop.swingx.JXDatePicker();
        dp_checkout = new org.jdesktop.swingx.JXDatePicker();
        jLabel13 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        btn_update = new javax.swing.JButton();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jComboBox1 = new javax.swing.JComboBox();
        jTextField4 = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMaximumSize(new java.awt.Dimension(450, 450));
        setMinimumSize(new java.awt.Dimension(450, 450));
        setPreferredSize(new java.awt.Dimension(450, 450));
        setSize(new java.awt.Dimension(450, 450));
        getContentPane().setLayout(null);

        getContentPane().add(cb_IDCustomer);
        cb_IDCustomer.setBounds(179, 125, 161, 20);

        cb_IDRoom.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cb_IDRoomItemStateChanged(evt);
            }
        });
        getContentPane().add(cb_IDRoom);
        cb_IDRoom.setBounds(179, 156, 161, 20);

        jLabel3.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel3.setForeground(new java.awt.Color(255, 255, 255));
        jLabel3.setText("ID Customer");
        getContentPane().add(jLabel3);
        jLabel3.setBounds(58, 128, 73, 15);

        jLabel4.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel4.setForeground(new java.awt.Color(255, 255, 255));
        jLabel4.setText("ID Room");
        getContentPane().add(jLabel4);
        jLabel4.setBounds(58, 159, 52, 14);

        dp_checkin.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                dp_checkinActionPerformed(evt);
            }
        });
        getContentPane().add(dp_checkin);
        dp_checkin.setBounds(179, 213, 161, 22);

        dp_checkout.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                dp_checkoutActionPerformed(evt);
            }
        });
        getContentPane().add(dp_checkout);
        dp_checkout.setBounds(179, 242, 161, 22);

        jLabel13.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel13.setForeground(new java.awt.Color(255, 255, 255));
        jLabel13.setText("ID Transaction");
        getContentPane().add(jLabel13);
        jLabel13.setBounds(58, 102, 85, 15);

        jLabel5.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel5.setForeground(new java.awt.Color(255, 255, 255));
        jLabel5.setText("Check In Date");
        getContentPane().add(jLabel5);
        jLabel5.setBounds(58, 217, 81, 15);

        jLabel6.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel6.setForeground(new java.awt.Color(255, 255, 255));
        jLabel6.setText("Check Out Date");
        getContentPane().add(jLabel6);
        jLabel6.setBounds(58, 246, 92, 15);

        jLabel7.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel7.setForeground(new java.awt.Color(255, 255, 255));
        jLabel7.setText("Room Price");
        getContentPane().add(jLabel7);
        jLabel7.setBounds(58, 190, 68, 15);

        btn_update.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        btn_update.setText("Update");
        btn_update.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_updateActionPerformed(evt);
            }
        });
        getContentPane().add(btn_update);
        btn_update.setBounds(179, 344, 75, 23);

        jLabel8.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel8.setForeground(new java.awt.Color(255, 255, 255));
        jLabel8.setText("Total Day");
        getContentPane().add(jLabel8);
        jLabel8.setBounds(58, 278, 55, 15);

        jLabel9.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jLabel9.setForeground(new java.awt.Color(255, 255, 255));
        jLabel9.setText("Total Price");
        getContentPane().add(jLabel9);
        jLabel9.setBounds(58, 309, 61, 15);

        jLabel1.setFont(new java.awt.Font("Monotype Corsiva", 1, 48)); // NOI18N
        jLabel1.setForeground(new java.awt.Color(255, 255, 255));
        jLabel1.setText("Update Transaction");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(24, 33, 393, 55);

        jTextField1.setEditable(false);
        getContentPane().add(jTextField1);
        jTextField1.setBounds(179, 187, 161, 20);

        jTextField2.setEditable(false);
        jTextField2.setText(" ");
        getContentPane().add(jTextField2);
        jTextField2.setBounds(179, 275, 161, 20);

        jTextField3.setEditable(false);
        jTextField3.setText(" ");
        getContentPane().add(jTextField3);
        jTextField3.setBounds(179, 306, 161, 20);

        jComboBox1.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                jComboBox1ItemStateChanged(evt);
            }
        });
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });
        getContentPane().add(jComboBox1);
        jComboBox1.setBounds(179, 99, 160, 20);

        jTextField4.setEditable(false);
        jTextField4.setForeground(new java.awt.Color(255, 255, 255));
        getContentPane().add(jTextField4);
        jTextField4.setBounds(350, 156, 55, 20);

        jButton1.setFont(new java.awt.Font("Myriad Pro", 0, 14)); // NOI18N
        jButton1.setText("Clear");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(279, 344, 61, 23);

        jButton2.setText("Close");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton2);
        jButton2.setBounds(310, 10, 80, 23);

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

    private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBox1ItemStateChanged
        // TODO add your handling code here:

        try {
            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            String sql = "select * from tb_trans where id_transaction = ?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, jComboBox1.getSelectedItem().toString());
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                //cb_IDCustomer.addItem(rs.getString("id_customer"));

                cb_IDCustomer.setSelectedItem(rs.getString("id_customer"));
                cb_IDRoom.setSelectedItem(rs.getString("id_room"));
                dp_checkin.setDate(rs.getDate("checkindate"));
                dp_checkout.setDate(rs.getDate("checkoutdate"));
                jTextField2.setText(rs.getString("totaldays"));
                jTextField3.setText(rs.getString("totalprice"));
                jTextField4.setText(rs.getString("id_room"));

            } else {
                JOptionPane.showMessageDialog(this, "Data not found.");

            }
        } catch (Exception e) {
            System.err.println(e);
        }
    }//GEN-LAST:event_jComboBox1ItemStateChanged

    private void cb_IDRoomItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cb_IDRoomItemStateChanged
        // TODO add your handling code here:

        //start

        try {
            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            String sql = "select * from tb_room2 where id_room = ?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, cb_IDRoom.getSelectedItem().toString());
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                //cb_IDCustomer.addItem(rs.getString("id_customer"));
                jTextField1.setVisible(true);
                jTextField1.setText(rs.getString("price"));

            } else {
                JOptionPane.showMessageDialog(this, "Data not found.");

            }
        } catch (Exception e) {
            System.err.println(e);
        }

    }//GEN-LAST:event_cb_IDRoomItemStateChanged

    private void dp_checkinActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dp_checkinActionPerformed
        // TODO add your handling code here:
        java.util.Date today = new java.util.Date(); //mengambil tanggal hari ini
        java.util.Date checkindate = dp_checkin.getDate();
        if (jTextField1.getText() == "") {
            JOptionPane.showMessageDialog(this, "Please Choose ID Room");
            dp_checkin.setDate(checkindate);
        }

        //check yesterday
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

        // Create a calendar object with today date. Calendar is in java.util pakage.
        Calendar calendar = Calendar.getInstance();

        // Move calendar to yesterday
        calendar.add(Calendar.DATE, -1);

        // Get current date of calendar which point to the yesterday now
        java.util.Date yesterday = calendar.getTime();

        //

        if (checkindate.before(yesterday)) {
            JOptionPane.showMessageDialog(this, "Checkindate must be bigger than today");
            dp_checkin.setDate(today);
        }
    }//GEN-LAST:event_dp_checkinActionPerformed

    private void dp_checkoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dp_checkoutActionPerformed
        // TODO add your handling code here:
        //check total days
        java.util.Date today = new java.util.Date(); //mengambil tanggal hari ini
        java.util.Date checkindate = dp_checkin.getDate();
        java.util.Date checkoutdate = dp_checkout.getDate();

        if (jTextField1.getText() == "") {
            JOptionPane.showMessageDialog(this, "Please Choose ID Room");
            dp_checkin.setDate(checkindate);
        }
        if (dp_checkin.getDate() == null) {
            JOptionPane.showMessageDialog(this, "Please Choose Checkin Date");
        }

        //start
        int days = getDaysDiff(today, checkindate);
        int days2 = getDaysDiff(checkindate, checkoutdate);
        int days3 = getDaysDiff(checkoutdate, checkindate);

        // tanggal lahir harus sebelum tanggal hari ini.
        if (today.before(checkindate)) {
            JOptionPane.showMessageDialog(this, "Checkin date must bigger than today");
            dp_checkin.setDate(null);
        }
        if (checkindate.equals(today)) {
            jTextField2.setText(String.valueOf(days2));

            Integer roomprice = Integer.parseInt(jTextField1.getText());
            Integer totaldays = Integer.parseInt(jTextField2.getText());

            Integer total = roomprice * totaldays;

            jTextField3.setText(String.valueOf(total));
        }
        if (checkoutdate.before(checkindate)) {
            JOptionPane.showMessageDialog(this, "Checkout date must bigger than checkin date");
            dp_checkout.setDate(checkoutdate);
        }
        if (checkoutdate.equals(checkindate)) {
            JOptionPane.showMessageDialog(this, "Checkout date must bigger than checkin date");
            dp_checkout.setDate(checkoutdate);
        } else {
            jTextField2.setText(String.valueOf(days2));

            Integer roomprice = Integer.parseInt(jTextField1.getText());
            Integer totaldays = Integer.parseInt(jTextField2.getText());

            Integer total = roomprice * totaldays;

            jTextField3.setText(String.valueOf(total));
        }

    }//GEN-LAST:event_dp_checkoutActionPerformed

    private void btn_updateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btn_updateActionPerformed
        // TODO add your handling code here:

        try {
            String idtransaction = jComboBox1.getSelectedItem().toString();
            String idcustomer = cb_IDCustomer.getSelectedItem().toString();
            String idroom = cb_IDRoom.getSelectedItem().toString();
            String idroomlama = jTextField4.getText();
            String roomprice = jTextField1.getText();
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            String checkindate = df.format(dp_checkin.getDate());
            String checkoutdate = df.format(dp_checkout.getDate());
            String totaldays = jTextField2.getText();
            String totalprice = jTextField3.getText();

            String status = "Not Avaliable";
            String statusroom = "Available";

            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            //update room pertama//

            String sql2 = "update tb_room2 set status = ? where id_room = ?";
            PreparedStatement ps2 = con.prepareStatement(sql2);
            ps2.setString(1, statusroom);
            ps2.setString(2, idroomlama);
            int rows2 = ps2.executeUpdate();

            //finish

            String sql = "update tb_trans set id_customer = ?, id_room = ?, checkindate = ?, checkoutdate = ?, totaldays = ?, totalprice = ? where id_transaction = ?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, idcustomer);
            ps.setString(2, idroom);
            ps.setString(3, checkindate);
            ps.setString(4, checkoutdate);
            ps.setString(5, totaldays);
            ps.setString(6, totalprice);
            ps.setString(7, idtransaction);

            //update room kedua yang akan dibuat//

            String sql3 = "update tb_room2 set status = ? where id_room = ?";
            PreparedStatement ps3 = con.prepareStatement(sql3);
            ps3.setString(1, status);
            ps3.setString(2, idroom);
            int rows3 = ps3.executeUpdate();

            //finish

            int rows = ps.executeUpdate();

            if (rows != 0) {
                JOptionPane.showMessageDialog(this, "Sucessfull Checkout.");

                ClearForm();
            } else {
                JOptionPane.showMessageDialog(this, "ID Transaction Not Found.");
            }
        } catch (Exception e) {
            System.err.println(e);
        }
    }//GEN-LAST:event_btn_updateActionPerformed

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jComboBox1ActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:

        ClearForm();
    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:

        this.hide();
    }//GEN-LAST:event_jButton2ActionPerformed

    private int getDaysDiff(java.util.Date startdate, java.util.Date enddate) {
        DateTime start = new DateTime(startdate);
        DateTime end = new DateTime(enddate);

        int days = Days.daysBetween(start, end).getDays();
        return days;

    }

    private void getDataForCombo() {
        try {

            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            String sql = "Select * from tb_trans where status = 'Check In'";

            Statement state = con.createStatement();
            ResultSet rs = state.executeQuery(sql);

            while (rs.next()) {
                jComboBox1.addItem(rs.getString("id_transaction"));

            }
            jComboBox1.setSelectedIndex(-1);

            con.close();
        } catch (Exception e) {
            System.err.println(e);
        }
    }

    private void getDataForCustomer() {
        try {

            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            String sql = "Select * from tb_cust";

            Statement state = con.createStatement();
            ResultSet rs = state.executeQuery(sql);

            while (rs.next()) {
                cb_IDCustomer.addItem(rs.getString("id_customer"));

            }
            cb_IDCustomer.setSelectedIndex(-1);

            con.close();
        } catch (Exception e) {
            System.err.println(e);
        }
    }

    private void getDataForRoom() {
        try {

            Koneksi kon = new Koneksi();
            Connection con = kon.open();

            String sql = "Select * from tb_room2";

            Statement state = con.createStatement();
            ResultSet rs = state.executeQuery(sql);

            while (rs.next()) {
                cb_IDRoom.addItem(rs.getString("id_room"));

            }
            cb_IDRoom.setSelectedIndex(-1);

            con.close();
        } catch (Exception e) {
            System.err.println(e);
        }
    }

    public void ClearForm() {

        jComboBox1.setSelectedIndex(-1);
        cb_IDCustomer.setSelectedIndex(-1);
        cb_IDRoom.setSelectedIndex(-1);
        jTextField1.setText("");
        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        dp_checkin.setDate(null);
        dp_checkout.setDate(null);
    }

    /**
     * @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 ex) {
            java.util.logging.Logger.getLogger(UpdateTransaction.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(UpdateTransaction.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(UpdateTransaction.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(UpdateTransaction.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

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

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btn_update;
    private javax.swing.JComboBox cb_IDCustomer;
    private javax.swing.JComboBox cb_IDRoom;
    private org.jdesktop.swingx.JXDatePicker dp_checkin;
    private org.jdesktop.swingx.JXDatePicker dp_checkout;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel13;
    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.JLabel jLabel9;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration//GEN-END:variables
}