/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package edu.bellevue.its.migration.gui.frames.admin;
import edu.bellevue.its.migration.entities.Role;
import edu.bellevue.its.migration.entities.User;
import edu.bellevue.its.migration.global.AppGlobals;
import edu.bellevue.its.migration.gui.MainApp;
import edu.bellevue.its.migration.global.AppHelper;
import edu.bellevue.its.migration.global.HibernateUtil;
import edu.bellevue.its.migration.gui.frames.UpdateableFrame;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;
import org.hibernate.Session;
/**
*
* @author tslater
*/
public class EditUserFrame extends javax.swing.JInternalFrame {
/**
* Creates new form EditUserFrame
*/
private User user;
private UpdateableFrame owner;
public EditUserFrame(UpdateableFrame frame) {
initComponents();
user = new User();
owner = frame;
this.title = "Create New User";
initRoleList();
}
public EditUserFrame(UpdateableFrame frame, String userName)
{
initComponents();
user = AppHelper.getUserByUsername(userName);
owner = frame;
txtFirstName.setText(user.getFirstName());
txtLastName.setText(user.getLastName());
txtUserName.setText(user.getUserName());
this.title = "Edit User #: " + user.getIdUser() + " ( " + AppHelper.getUserDisplayName(user) + ")";
initRoleList();
}
private void initRoleList() {
Session session = AppGlobals.getInstance().hibernateSession;
List list = session.createCriteria(Role.class).list();
Iterator i = list.iterator();
DefaultListModel dfm = (DefaultListModel)jList1.getModel();
DefaultListModel dfm2 = (DefaultListModel)jList3.getModel();
dfm.clear();
dfm2.clear();
while (i.hasNext())
{
Role r = (Role)i.next();
if (user.getRoles().contains(r))
{
dfm2.addElement(r);
} else
{
dfm.addElement(r);
}
}
}
/**
* 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() {
jLabel1 = new javax.swing.JLabel();
txtFirstName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtLastName = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
txtUserName = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
txtPassword = new javax.swing.JPasswordField();
jLabel5 = new javax.swing.JLabel();
txtConfirmPass = new javax.swing.JPasswordField();
jLabel6 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList();
jLabel7 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
jList3 = new javax.swing.JList();
btnAddRole = new javax.swing.JButton();
btnRemoveRole = new javax.swing.JButton();
btnSaveUser = new javax.swing.JButton();
btnCancel = new javax.swing.JButton();
setClosable(true);
setIconifiable(true);
addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
formInternalFrameClosed(evt);
}
public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
}
public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
}
});
jLabel1.setText("First Name:");
jLabel2.setText("Last Name:");
jLabel3.setText("User Name:");
jLabel4.setText("Password:");
jLabel5.setText("Confirm Password:");
jLabel6.setText("Available Roles:");
jList1.setModel(new DefaultListModel());
jScrollPane1.setViewportView(jList1);
jLabel7.setText("Selected Roles:");
jList3.setModel(new DefaultListModel());
jScrollPane3.setViewportView(jList3);
btnAddRole.setText(">");
btnAddRole.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddRoleActionPerformed(evt);
}
});
btnRemoveRole.setText("<");
btnRemoveRole.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnRemoveRoleActionPerformed(evt);
}
});
btnSaveUser.setText("Save");
btnSaveUser.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSaveUserActionPerformed(evt);
}
});
btnCancel.setText("Cancel");
btnCancel.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(32, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(jLabel4)
.addComponent(jLabel5)
.addComponent(jLabel3)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtFirstName)
.addComponent(txtLastName)
.addComponent(txtUserName)
.addComponent(txtPassword)
.addComponent(txtConfirmPass, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnSaveUser, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnAddRole)
.addComponent(btnRemoveRole))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnCancel))))
.addGap(19, 19, 19))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(txtUserName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(txtPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(txtConfirmPass, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6)
.addComponent(jLabel7))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(btnAddRole)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(btnRemoveRole))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(0, 12, Short.MAX_VALUE)
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnSaveUser)
.addComponent(btnCancel))))
.addGap(12, 12, 12))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void btnAddRoleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddRoleActionPerformed
// TODO add your handling code here:
Role r = (Role)jList1.getSelectedValue();
DefaultListModel dfm = ((DefaultListModel)jList3.getModel());
if (dfm.contains(r) == false)
{
dfm.addElement(r);
((DefaultListModel)jList1.getModel()).removeElement(r);
}
}//GEN-LAST:event_btnAddRoleActionPerformed
private void btnRemoveRoleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoveRoleActionPerformed
// TODO add your handling code here:
Role r = (Role)jList3.getSelectedValue();
((DefaultListModel)jList3.getModel()).removeElement(r);
((DefaultListModel)jList1.getModel()).addElement(r);
}//GEN-LAST:event_btnRemoveRoleActionPerformed
private void btnSaveUserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSaveUserActionPerformed
// TODO add your handling code here:
user.setFirstName(txtFirstName.getText());
user.setLastName(txtLastName.getText());
user.setUserName(txtUserName.getText());
DefaultListModel dfm = (DefaultListModel)jList3.getModel();
Object[] roles = dfm.toArray();
Set<Role> set = new HashSet<Role>();
for (Object r : roles)
{
set.add((Role)r);
}
user.setRoles(set);
if (txtPassword.getText().equals(txtConfirmPass.getText()))
{
if (txtPassword.getPassword().length > 0)
{
String encodedPass = AppHelper.encodePassword(user.getUserName(),new String(txtPassword.getPassword()));
user.setPassword(encodedPass);
}
}
HibernateUtil.saveOrUpdateItem(user);
JOptionPane.showMessageDialog(this,"User Updated");
this.setVisible(false);
owner.updateView();
}//GEN-LAST:event_btnSaveUserActionPerformed
private void btnCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelActionPerformed
// TODO add your handling code here:
this.setVisible(false);
MainApp.getDesktop().remove(this);
}//GEN-LAST:event_btnCancelActionPerformed
private void formInternalFrameClosed(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameClosed
// TODO add your handling code here:
MainApp.getDesktop().remove(evt.getInternalFrame());
}//GEN-LAST:event_formInternalFrameClosed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnAddRole;
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnRemoveRole;
private javax.swing.JButton btnSaveUser;
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.JList jList1;
private javax.swing.JList jList3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JPasswordField txtConfirmPass;
private javax.swing.JTextField txtFirstName;
private javax.swing.JTextField txtLastName;
private javax.swing.JPasswordField txtPassword;
private javax.swing.JTextField txtUserName;
// End of variables declaration//GEN-END:variables
}