/*
* UserForm2.java
*
* Created on February 8, 2008, 6:08 PM
*/
package com.floreantpos.ui.forms;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import com.floreantpos.PosException;
import com.floreantpos.model.User;
import com.floreantpos.model.UserType;
import com.floreantpos.model.dao.UserDAO;
import com.floreantpos.model.dao.UserTypeDAO;
import com.floreantpos.model.util.IllegalModelStateException;
import com.floreantpos.ui.BeanEditor;
import com.floreantpos.ui.dialog.POSMessageDialog;
import com.floreantpos.util.POSUtil;
/**
*
* @author rodaya
*/
public class UserForm extends BeanEditor {
/** Creates new form UserForm2 */
public UserForm() {
initComponents();
UserTypeDAO dao = new UserTypeDAO();
List<UserType> userTypes = dao.findAll();
cbUserType.setModel(new DefaultComboBoxModel(userTypes.toArray()));
}
/**
* 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
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
tfPassword1 = new javax.swing.JPasswordField();
tfPassword2 = new javax.swing.JPasswordField();
tfId = new javax.swing.JTextField();
tfSsn = new javax.swing.JTextField();
tfFirstName = new javax.swing.JTextField();
tfLastName = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
tfCostPerHour = new javax.swing.JTextField();
jLabel6 = new javax.swing.JLabel();
cbUserType = new javax.swing.JComboBox();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("ID:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel1, gridBagConstraints);
jLabel2.setText("SSN:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel2, gridBagConstraints);
jLabel3.setText("First Name:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel3, gridBagConstraints);
jLabel4.setText("Last Name:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel4, gridBagConstraints);
jLabel9.setText("Password:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel9, gridBagConstraints);
jLabel10.setText("Confirm Password:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel10, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 1;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfPassword1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 1;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 4, 0);
add(tfPassword2, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 100;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfId, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 100;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfSsn, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 200;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfFirstName, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 200;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfLastName, gridBagConstraints);
jLabel5.setText("Cost Per Hour:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 6;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
add(jLabel5, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 6;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
add(tfCostPerHour, gridBagConstraints);
jLabel6.setText("User Type:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 7;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
add(jLabel6, gridBagConstraints);
cbUserType.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Manager", "Cashier", "Server" }));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 7;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
add(cbUserType, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cbUserType;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
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 jLabel9;
private javax.swing.JTextField tfCostPerHour;
private javax.swing.JTextField tfFirstName;
private javax.swing.JTextField tfId;
private javax.swing.JTextField tfLastName;
private javax.swing.JPasswordField tfPassword1;
private javax.swing.JPasswordField tfPassword2;
private javax.swing.JTextField tfSsn;
// End of variables declaration//GEN-END:variables
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public String getDisplayText() {
if (isEditMode())
return "Edit User";
return "Add new user";
}
private boolean editMode;
@Override
public boolean save() {
try {
updateModel();
} catch (IllegalModelStateException e) {
POSMessageDialog.showError(this, e.getMessage());
return false;
}
User user = (User) getBean();
UserDAO userDAO = UserDAO.getInstance();
if (!editMode) {
User user2 = userDAO.findUser(user.getUserId(), user.getNewUserType());
if (user2 != null) {
POSMessageDialog.showError(this, "User with ID: " + user.getUserId() + " and Type: " + user.getNewUserType() + " already exists.");
return false;
}
}
try {
userDAO.saveOrUpdate(user, editMode);
} catch (PosException x) {
POSMessageDialog.showError(this, x.getMessage(), x);
x.printStackTrace();
return false;
} catch (Exception x) {
POSMessageDialog.showError(this, "Could not save user", x);
x.printStackTrace();
return false;
}
return true;
}
@Override
protected boolean updateModel() throws IllegalModelStateException {
User user = null;
if (!(getBean() instanceof User)) {
user = new User();
}
else {
user = (User) getBean();
}
int id = 1000;
try {
id = Integer.parseInt(tfId.getText());
} catch (Exception x) {
throw new IllegalModelStateException("ID is not valid");
}
String ssn = tfSsn.getText();
String firstName = tfFirstName.getText();
String lastName = tfLastName.getText();
String password1 = new String(tfPassword1.getPassword());
String password2 = new String(tfPassword2.getPassword());
if (POSUtil.isBlankOrNull(ssn)) {
throw new IllegalModelStateException("SSN cannot be empty");
}
if (POSUtil.isBlankOrNull(firstName)) {
throw new IllegalModelStateException("First name cannot be empty");
}
if (POSUtil.isBlankOrNull(lastName)) {
throw new IllegalModelStateException("Last name cannot be empty");
}
if (POSUtil.isBlankOrNull(password1)) {
throw new IllegalModelStateException("Password1 cannot be empty");
}
if (POSUtil.isBlankOrNull(password2)) {
throw new IllegalModelStateException("Password2 cannot be empty");
}
if (!password1.equals(password2)) {
throw new IllegalModelStateException("Password did not match");
}
double cost = 0;
try {
cost = Double.parseDouble(tfCostPerHour.getText());
} catch (Exception x) {
throw new IllegalModelStateException("Cost per hour for " + firstName + " " + lastName + " is not valid.");
}
user.setNewUserType((UserType) cbUserType.getSelectedItem());
user.setCostPerHour(cost);
user.setSsn(ssn);
user.setUserId(id);
user.setFirstName(firstName);
user.setLastName(lastName);
user.setPassword(password1);
setBean(user);
return true;
}
@Override
protected void updateView() {
if (!(getBean() instanceof User)) {
return;
}
User user = (User) getBean();
setData(user);
}
private void setData(User data) {
if (data.getUserId() != null) {
tfId.setText(String.valueOf(data.getUserId()));
}
else {
tfId.setText("");
}
if (data.getSsn() != null) {
tfSsn.setText(data.getSsn());
}
else {
tfSsn.setText("");
}
tfFirstName.setText(data.getFirstName());
tfLastName.setText(data.getLastName());
//tfCostPerHour.setText(data.getCostPerHour() == null ? "" : data.getCostPerHour().toString());
//cbUserType.setSelectedItem(data.getUserType());
tfPassword1.setText(data.getPassword());
tfPassword2.setText(data.getPassword());
cbUserType.setSelectedItem(data.getNewUserType());
tfCostPerHour.setText(data.getCostPerHour() == null ? "" : data.getCostPerHour().toString());
}
public boolean isEditMode() {
return editMode;
}
public void setEditMode(boolean editMode) {
this.editMode = editMode;
if (editMode) {
tfId.setEditable(false);
}
else {
tfId.setEditable(true);
}
}
public void setId(Integer id) {
if (id != null) {
tfId.setText(String.valueOf(id.intValue()));
}
}
}