cesardl/facultad-sample-app

View on GitHub
src/main/java/org/sanmarcux/view/JDialogTeacher.java

Summary

Maintainability
D
2 days
Test Coverage
B
86%
/*
 * JDialogTeacher.java
 *
 * Created on 12/07/2009, 05:13:31 PM
 */
package org.sanmarcux.view;

import org.apache.log4j.Logger;
import org.sanmarcux.beans.Teacher;
import org.sanmarcux.controller.DialogAction;
import org.sanmarcux.util.FormSupport;
import org.sanmarcux.view.etc.JDialogFormBase;
import org.sanmarcux.view.etc.Toast;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * @author Cesardl
 */
@Component
public class JDialogTeacher extends JDialogFormBase<Teacher> {

    private static final long serialVersionUID = 4507185410828839727L;

    private static final Logger LOG = Logger.getLogger(JDialogTeacher.class);

    private final transient FormSupport formSupport;

    private String email;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private com.toedter.calendar.JDateChooser dateChooserBirthday;
    private javax.swing.JTextField textFieldCode;
    private javax.swing.JTextField textFieldEmail;
    private javax.swing.JTextField textFieldNames;

    @Autowired
    public JDialogTeacher(FormSupport formSupport) {
        this.formSupport = formSupport;
    }

    @Override
    public boolean validateData() {
        code = textFieldCode.getText().trim();
        names = textFieldNames.getText().trim();
        birthday = dateChooserBirthday.getDate();
        email = textFieldEmail.getText().trim();

        String key;
        if (code.length() == 0) {
            key = "app.warning.teacher.code.empty";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            selectTextField(textFieldCode);
            return false;
        }
        if (DialogAction.INSERT.equals(dialogAction) && teacherController.existsCode(code)) {
            key = "app.warning.teacher.code.already.exists";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            selectTextField(textFieldCode);
            return false;
        }
        if (names.length() == 0) {
            key = "app.warning.teacher.name.empty";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            selectTextField(textFieldNames);
            return false;
        }
        if (birthday == null) {
            key = "app.warning.teacher.birthday.empty";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            dateChooserBirthday.requestFocusInWindow();
            return false;
        }
        if (email.length() == 0) {
            key = "app.warning.teacher.email.empty";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            selectTextField(textFieldEmail);
            return false;
        }
        if (!formSupport.isCorrectEmailFormat(email)) {
            key = "app.warning.teacher.email.wrong.format";
            LOG.warn(key);
            Toast.makeText(this, bundle.getString(key), Toast.Style.WARNING).display();
            selectTextField(textFieldEmail);
            return false;
        }

        return true;
    }

    @Override
    public void setData() {
        code = entity.getCode();
        names = entity.getNames();
        birthday = entity.getBirthday();
        email = entity.getEmail();

        textFieldCode.setText(code);
        textFieldCode.setEnabled(false);
        textFieldNames.setText(names);
        dateChooserBirthday.setDate(birthday);
        textFieldEmail.setText(email);
    }

    @Override
    public Teacher getEntity() {
        return entity;
    }

    @Override
    public void setEntity(Teacher entity) {
        this.entity = entity;

        setData();
    }

    /**
     * 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.
     */
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    @PostConstruct
    private void initComponents() {

        javax.swing.JPanel panel = new javax.swing.JPanel();
        javax.swing.JLabel labelCode = new javax.swing.JLabel();
        javax.swing.JLabel labelNames = new javax.swing.JLabel();
        javax.swing.JLabel labelBirthday = new javax.swing.JLabel();
        javax.swing.JLabel labelEmail = new javax.swing.JLabel();
        textFieldCode = new javax.swing.JTextField();
        textFieldNames = new javax.swing.JTextField();
        dateChooserBirthday = new com.toedter.calendar.JDateChooser();
        textFieldEmail = new javax.swing.JTextField();
        javax.swing.JButton buttonAccept = new javax.swing.JButton();
        javax.swing.JButton buttonCancel = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        setTitle(bundle.getString("app.title")); // NOI18N
        setResizable(false);

        panel.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("app.dialog.border.title"))); // NOI18N

        labelCode.setText(bundle.getString("dictionary.code")); // NOI18N

        labelNames.setText(bundle.getString("dictionary.names")); // NOI18N

        labelBirthday.setText(bundle.getString("dictionary.birthday")); // NOI18N

        labelEmail.setText(bundle.getString("dictionary.email")); // NOI18N

        javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
        panel.setLayout(panelLayout);
        panelLayout.setHorizontalGroup(
                panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(panelLayout.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addComponent(labelBirthday, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(labelEmail, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addComponent(labelNames, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(labelCode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(textFieldEmail)
                                        .addComponent(dateChooserBirthday, javax.swing.GroupLayout.DEFAULT_SIZE, 253, Short.MAX_VALUE)
                                        .addComponent(textFieldNames)
                                        .addComponent(textFieldCode))
                                .addContainerGap())
        );
        panelLayout.setVerticalGroup(
                panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(panelLayout.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                        .addComponent(labelCode)
                                        .addComponent(textFieldCode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                        .addComponent(textFieldNames, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(labelNames))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                        .addComponent(dateChooserBirthday, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(labelBirthday))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
                                        .addComponent(textFieldEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addComponent(labelEmail))
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        buttonAccept.setText(bundle.getString("dictionary.accept")); // NOI18N
        buttonAccept.addActionListener(e -> buttonAcceptActionPerformed());

        buttonCancel.setText(bundle.getString("dictionary.cancel")); // NOI18N
        buttonCancel.addActionListener(e -> buttonCancelActionPerformed());

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(buttonAccept, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(buttonCancel)
                                .addContainerGap())
                        .addGroup(layout.createSequentialGroup()
                                .addGap(12, 12, 12)
                                .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addGap(12, 12, 12))
        );
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                                .addContainerGap()
                                .addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addComponent(buttonAccept, javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(buttonCancel, javax.swing.GroupLayout.Alignment.TRAILING))
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                LOG.info("Closing action in teacher form");
                preparingDialogClose();
            }
        });

        pack();
        setModal(true);
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void buttonAcceptActionPerformed() {//GEN-FIRST:event_buttonAcceptActionPerformed
        if (validateData()) {
            entity.setCode(code);
            entity.setNames(names);
            entity.setBirthday(birthday);
            entity.setEmail(email);

            boolean state = teacherController.saveOrUpdate(entity);

            String key;
            if (state) {
                key = "app.success.teacher.save";
                LOG.info(key);
                Toast.makeText(this, bundle.getString(key), Toast.Style.SUCCESS).display();
                dispose();
            } else {
                key = "app.error.teacher.save";
                LOG.error(key);
                Toast.makeText(this, bundle.getString(key), Toast.Style.ERROR).display();
            }
        }
    }//GEN-LAST:event_buttonAcceptActionPerformed

    private void buttonCancelActionPerformed() {//GEN-FIRST:event_buttonCancelActionPerformed
        LOG.info("Canceling action in teacher form");
        preparingDialogClose();
        dispose();
    }//GEN-LAST:event_buttonCancelActionPerformed
    // End of variables declaration//GEN-END:variables

}