package com.idega.core.user.presentation;
import java.util.Iterator;
import java.util.List;
import javax.transaction.TransactionManager;
import com.idega.core.accesscontrol.business.LoginDBHandler;
import com.idega.core.data.GenericGroup;
import com.idega.core.user.business.UserBusiness;
import com.idega.core.user.data.User;
import com.idega.core.user.data.UserGroupRepresentative;
import com.idega.data.GenericEntity;
import com.idega.presentation.IWContext;
import com.idega.presentation.Table;
import com.idega.presentation.text.Link;
import com.idega.presentation.text.Text;
import com.idega.presentation.ui.CheckBox;
import com.idega.presentation.ui.DropdownMenu;
import com.idega.presentation.ui.Form;
import com.idega.presentation.ui.PasswordInput;
import com.idega.presentation.ui.SubmitButton;
import com.idega.presentation.ui.TextInput;
import com.idega.presentation.ui.Window;
import com.idega.transaction.IdegaTransactionManager;
import com.idega.util.IWTimestamp;
/**
* Title: User
* Description:
* Copyright: Copyright (c) 2001
* Company: idega.is
* @author 2000 - idega team - <a href="mailto:gummi@idega.is">Gu�mundur �g�st S�mundsson</a>
* @version 1.0
*/
public class CreateUser extends Window {
private Text firstNameText;
private Text middleNameText;
private Text lastNameText;
private Text userLoginText;
private Text passwordText;
private Text confirmPasswordText;
private Text generateLoginText;
private Text generatePasswordText;
private Text mustChangePasswordText;
private Text cannotChangePasswordText;
private Text passwordNeverExpiresText;
private Text disableAccountText;
private Text goToPropertiesText;
private Text primaryGroupText;
private TextInput firstNameField;
private TextInput middleNameField;
private TextInput lastNameField;
private TextInput userLoginField;
private PasswordInput passwordField;
private PasswordInput confirmPasswordField;
private CheckBox generateLoginField;
private CheckBox generatePasswordField;
private CheckBox mustChangePasswordField;
private CheckBox cannotChangePasswordField;
private CheckBox passwordNeverExpiresField;
private CheckBox disableAccountField;
private CheckBox goToPropertiesField;
private DropdownMenu primaryGroupField;
private SubmitButton okButton;
private SubmitButton cancelButton;
private Form myForm;
public static String okButtonParameterValue = "ok";
public static String cancelButtonParameterValue = "cancel";
public static String submitButtonParameterName = "submit";
public static String firstNameFieldParameterName = "firstName";
public static String middleNameFieldParameterName = "middleName";
public static String lastNameFieldParameterName = "lastName";
public static String userLoginFieldParameterName = "login";
public static String passwordFieldParameterName = "password";
public static String confirmPasswordFieldParameterName = "confirmPassword";
public static String generateLoginFieldParameterName = "generateLogin";
public static String generatePasswordFieldParameterName = "generatePassword";
public static String mustChangePasswordFieldParameterName = "mustChange";
public static String cannotChangePasswordFieldParameterName = "cannotChange";
public static String passwordNeverExpiresFieldParameterName = "neverExpires";
public static String disableAccountFieldParameterName = "disableAccount";
public static String goToPropertiesFieldParameterName = "gotoProperties";
public static String primaryGroupFieldParameterName = "primarygroup";
private UserBusiness business;
private String rowHeight = "37";
public CreateUser() {
super();
this.setName("idegaWeb Builder - Stofna f�laga");
this.setHeight(460);
this.setWidth(390);
this.setBackgroundColor("#d4d0c8");
this.setScrollbar(false);
this.myForm = new Form();
this.add(this.myForm);
this.business = new UserBusiness();
initializeTexts();
initializeFields();
lineUpElements();
}
protected void initializeTexts() {
this.firstNameText = new Text("First name");
this.middleNameText = new Text("Middle name");
this.lastNameText = new Text("Last name");
this.userLoginText = new Text("User login");
this.passwordText = new Text("Password");
this.confirmPasswordText = new Text("Confirm password");
this.generateLoginText = new Text("generate");
this.generatePasswordText = new Text("generate");
this.mustChangePasswordText = new Text("User must change password at next login");
this.cannotChangePasswordText = new Text("User cannot change password");
this.passwordNeverExpiresText = new Text("Password never expires");
this.disableAccountText = new Text("Account is disabled");
this.goToPropertiesText = new Text("go to properties");
this.primaryGroupText = new Text("Primarygroup");
}
protected void initializeFields() {
this.firstNameField = new TextInput(firstNameFieldParameterName);
this.firstNameField.setLength(12);
this.middleNameField = new TextInput(middleNameFieldParameterName);
this.middleNameField.setLength(12);
this.lastNameField = new TextInput(lastNameFieldParameterName);
this.lastNameField.setLength(12);
this.userLoginField = new TextInput(userLoginFieldParameterName);
this.userLoginField.setLength(12);
this.passwordField = new PasswordInput(passwordFieldParameterName);
this.passwordField.setLength(12);
this.confirmPasswordField = new PasswordInput(confirmPasswordFieldParameterName);
this.confirmPasswordField.setLength(12);
this.generateLoginField = new CheckBox(generateLoginFieldParameterName);
this.generatePasswordField = new CheckBox(generatePasswordFieldParameterName);
this.mustChangePasswordField = new CheckBox(mustChangePasswordFieldParameterName);
this.cannotChangePasswordField = new CheckBox(cannotChangePasswordFieldParameterName);
this.passwordNeverExpiresField = new CheckBox(passwordNeverExpiresFieldParameterName);
this.passwordNeverExpiresField.setChecked(true);
this.disableAccountField = new CheckBox(disableAccountFieldParameterName);
this.goToPropertiesField = new CheckBox(goToPropertiesFieldParameterName);
this.goToPropertiesField.setChecked(true);
this.primaryGroupField = new DropdownMenu(CreateUser.primaryGroupFieldParameterName);
//primaryGroupField.addMenuElement("","a�alh�pur");
this.primaryGroupField.addSeparator();
try {
String[] gr = new String[1];
gr[0] = ((UserGroupRepresentative) GenericEntity.getStaticInstance(UserGroupRepresentative.class)).getGroupTypeValue();
List groups = com.idega.core.data.GenericGroupBMPBean.getAllGroups(gr, false);
if (groups != null) {
/**
* @todo filter standardGroups
*/
//groups.removeAll(AccessController.getStandardGroups());
Iterator iter = groups.iterator();
while (iter.hasNext()) {
GenericGroup item = (GenericGroup) iter.next();
this.primaryGroupField.addMenuElement(item.getID(), item.getName());
}
}
}
catch (Exception ex) {
}
this.okButton = new SubmitButton(" OK ", submitButtonParameterName, okButtonParameterValue);
this.cancelButton = new SubmitButton(" Cancel ", submitButtonParameterName, cancelButtonParameterValue);
}
public void lineUpElements() {
Table frameTable = new Table(1, 6);
frameTable.setCellpadding(0);
frameTable.setCellspacing(0);
// nameTable begin
Table nameTable = new Table(4, 2);
nameTable.setCellpadding(0);
nameTable.setCellspacing(0);
nameTable.setHeight(1, this.rowHeight);
nameTable.setHeight(2, this.rowHeight);
nameTable.add(this.firstNameText, 1, 1);
nameTable.add(this.firstNameField, 2, 1);
nameTable.add(this.middleNameText, 3, 1);
nameTable.add(this.middleNameField, 4, 1);
nameTable.add(this.lastNameText, 1, 2);
nameTable.add(this.lastNameField, 2, 2);
// nameTable end
// loginTable begin
Table loginTable = new Table(4, 3);
loginTable.setCellpadding(0);
loginTable.setCellspacing(0);
loginTable.setHeight(1, this.rowHeight);
loginTable.setHeight(2, this.rowHeight);
loginTable.setHeight(3, this.rowHeight);
loginTable.setWidth(1, "110");
loginTable.add(this.userLoginText, 1, 1);
loginTable.add(this.userLoginField, 2, 1);
loginTable.add(this.generateLoginField, 3, 1);
loginTable.add(this.generateLoginText, 4, 1);
loginTable.add(this.passwordText, 1, 2);
loginTable.add(this.passwordField, 2, 2);
loginTable.add(this.generatePasswordField, 3, 2);
loginTable.add(this.generatePasswordText, 4, 2);
loginTable.add(this.confirmPasswordText, 1, 3);
loginTable.add(this.confirmPasswordField, 2, 3);
// loginTable end
// groupTable begin
Table groupTable = new Table(2, 1);
groupTable.setCellpadding(0);
groupTable.setCellspacing(0);
groupTable.setHeight(1, this.rowHeight);
groupTable.setWidth(1, "110");
groupTable.add(this.primaryGroupText, 1, 1);
groupTable.add(this.primaryGroupField, 2, 1);
// groupTable end
// AccountPropertyTable begin
Table AccountPropertyTable = new Table(2, 4);
AccountPropertyTable.setCellpadding(0);
AccountPropertyTable.setCellspacing(0);
AccountPropertyTable.setHeight(1, this.rowHeight);
AccountPropertyTable.setHeight(2, this.rowHeight);
AccountPropertyTable.setHeight(3, this.rowHeight);
AccountPropertyTable.setHeight(4, this.rowHeight);
AccountPropertyTable.add(this.mustChangePasswordField, 1, 1);
AccountPropertyTable.add(this.mustChangePasswordText, 2, 1);
AccountPropertyTable.add(this.cannotChangePasswordField, 1, 2);
AccountPropertyTable.add(this.cannotChangePasswordText, 2, 2);
AccountPropertyTable.add(this.passwordNeverExpiresField, 1, 3);
AccountPropertyTable.add(this.passwordNeverExpiresText, 2, 3);
AccountPropertyTable.add(this.disableAccountField, 1, 4);
AccountPropertyTable.add(this.disableAccountText, 2, 4);
// AccountPropertyTable end
// propertyTable begin
Table propertyTable = new Table(2, 1);
propertyTable.setCellpadding(0);
propertyTable.setCellspacing(0);
propertyTable.setHeight(1, this.rowHeight);
propertyTable.add(this.goToPropertiesText, 1, 1);
propertyTable.add(this.goToPropertiesField, 2, 1);
// propertyTable end
// buttonTable begin
Table buttonTable = new Table(3, 1);
buttonTable.setCellpadding(0);
buttonTable.setCellspacing(0);
buttonTable.setHeight(1, this.rowHeight);
buttonTable.setWidth(2, "5");
buttonTable.add(this.okButton, 1, 1);
buttonTable.add(this.cancelButton, 3, 1);
// buttonTable end
frameTable.add(nameTable, 1, 1);
frameTable.add(loginTable, 1, 2);
frameTable.add(groupTable, 1, 3);
frameTable.add(AccountPropertyTable, 1, 4);
frameTable.add(propertyTable, 1, 5);
frameTable.setAlignment(1, 5, "right");
frameTable.add(buttonTable, 1, 6);
frameTable.setAlignment(1, 6, "right");
this.myForm.add(frameTable);
}
public void commitCreation(IWContext iwc) throws Exception {
User newUser;
boolean createLogin = false;
String login = iwc.getParameter(CreateUser.userLoginFieldParameterName);
String passw = iwc.getParameter(CreateUser.passwordFieldParameterName);
String cfPassw = iwc.getParameter(CreateUser.confirmPasswordFieldParameterName);
String password = null;
String mustChage = iwc.getParameter(CreateUser.mustChangePasswordFieldParameterName);
String cannotchangePassw = iwc.getParameter(CreateUser.cannotChangePasswordFieldParameterName);
String passwNeverExpires = iwc.getParameter(CreateUser.passwordNeverExpiresFieldParameterName);
String disabledAccount = iwc.getParameter(CreateUser.disableAccountFieldParameterName);
String primaryGroup = iwc.getParameter(CreateUser.primaryGroupFieldParameterName);
Boolean bMustChage;
Boolean bAllowedToChangePassw;
Boolean bPasswNeverExpires;
Boolean bEnabledAccount;
Integer primaryGroupId = null;
if (primaryGroup != null && !primaryGroup.equals("")) {
primaryGroupId = new Integer(primaryGroup);
}
if (mustChage != null && !"".equals(mustChage)) {
bMustChage = Boolean.TRUE;
}
else {
bMustChage = Boolean.FALSE;
}
if (cannotchangePassw != null && !"".equals(cannotchangePassw)) {
bAllowedToChangePassw = Boolean.FALSE;
}
else {
bAllowedToChangePassw = Boolean.TRUE;
}
if (passwNeverExpires != null && !"".equals(passwNeverExpires)) {
bPasswNeverExpires = Boolean.TRUE;
}
else {
bPasswNeverExpires = Boolean.FALSE;
}
if (disabledAccount != null && !"".equals(disabledAccount)) {
bEnabledAccount = Boolean.FALSE;
}
else {
bEnabledAccount = Boolean.TRUE;
}
if (passw != null && cfPassw != null && passw.equals(cfPassw)) {
password = passw;
}
else if (passw != null && cfPassw != null && !passw.equals(cfPassw)) {
throw new Exception("password and confirmed password not the same");
}
if (password != null && password.length() > 0 && login != null && login.length() > 0) {
createLogin = true;
}
TransactionManager transaction = IdegaTransactionManager.getInstance();
try {
transaction.begin();
newUser =
this.business.insertUser(
iwc.getParameter(firstNameFieldParameterName),
iwc.getParameter(middleNameFieldParameterName),
iwc.getParameter(lastNameFieldParameterName),
null,
null,
null,
null,
primaryGroupId);
if (createLogin) {
LoginDBHandler.createLogin(newUser.getID(), login, password, bEnabledAccount, IWTimestamp.RightNow(), 5000, bPasswNeverExpires, bAllowedToChangePassw, bMustChage, null);
}
transaction.commit();
}
catch (Exception e) {
transaction.rollback();
throw new Exception(e.getMessage() + " : User entry was removed");
}
if (iwc.getParameter(goToPropertiesFieldParameterName) != null) {
Link gotoLink = new Link();
gotoLink.setWindowToOpen(UserPropertyWindow.class);
gotoLink.addParameter(UserPropertyWindow.PARAMETERSTRING_USER_ID, newUser.getID());
this.setWindowToOpenOnLoad(gotoLink, iwc);
}
}
public void main(IWContext iwc) throws Exception {
String submit = iwc.getParameter("submit");
if (submit != null) {
if (submit.equals("ok")) {
this.commitCreation(iwc);
this.close();
this.setParentToReload();
}
else if (submit.equals("cancel")) {
this.close();
}
}
}
}