package is.idega.idegaweb.travel.presentation; import is.idega.idegaweb.travel.business.TravelSessionManager; import java.rmi.RemoteException; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.ejb.CreateException; import javax.ejb.FinderException; import javax.ejb.RemoveException; import com.idega.block.login.business.LoginBusiness; import com.idega.business.IBOLookup; import com.idega.core.accesscontrol.business.LoginDBHandler; import com.idega.data.IDOLookup; 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.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.user.data.Group; import com.idega.user.data.User; import com.idega.user.data.UserHome; public class SupplierManagerStaffEditor extends TravelManager { private static String ACTION_SAVE_USER = "saveuser"; private static String ACTION_NEW_USER = "newuser"; private static String ACTION_DELETE_USER = "deleteuser"; private static String ACTION_EDIT_USER = "edituser"; private static String ACTION_SAVENEW_USER = "savenewuser"; private static String ACTION_USE_USER = "useuser"; private static String ACTION_UPDATE_USER = "updateuser"; private static String PARAM_USER_ID = "usr_id"; public void _main(IWContext iwc) throws Exception { if (ACTION_USE_USER.equals(iwc.getParameter(this.sAction))) { try { UserHome uhome = (UserHome) IDOLookup.getHome(User.class); User user = uhome.findByPrimaryKey(new Integer(iwc.getParameter(PARAM_USER_ID))); TravelSessionManager tsm = (TravelSessionManager) IBOLookup.getSessionInstance(iwc, TravelSessionManager.class); tsm.clearAll(); LoginBusiness lBiz = new LoginBusiness(); lBiz.logInAsAnotherUser(iwc, user); } catch (Exception e) { e.printStackTrace(); } } super._main(iwc); } public void main(IWContext iwc) throws Exception { super.main(iwc); add(Text.BREAK); String action = iwc.getParameter(this.sAction); if (action != null && action.equals(ACTION_SAVE_USER)) { saveUser(iwc); showUserlist(iwc); } else if (action != null && action.equals(ACTION_NEW_USER)) { showForm(iwc); } else if (action != null && action.equals(ACTION_DELETE_USER)) { deleteUser(iwc); showUserlist(iwc); } else if (action != null && action.equals(ACTION_EDIT_USER)) { showForm(iwc); } else if (action != null && action.equals(ACTION_UPDATE_USER)) { updateUser(iwc); add(getUser(iwc).getName()+super.getResourceBundle().getLocalizedString("travel.user_updated"," updated.")); showUserlist(iwc); } else { showUserlist(iwc); } } private void showUserlist(IWContext iwc) throws RemoteException { List users = null; try { users = getSupplierManagerBusiness(iwc).getSupplierManagerStaffUsers(getSupplierManager()); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } Table table = getTable(); table.setWidth(300); table.setBorder(0); int startrow = 1; table.mergeCells(1, startrow, 5, startrow); table.setRowColor(startrow, backgroundColor); table.add(getHeaderText(getResourceBundle().getLocalizedString("travel.users", "Users")), 1, startrow++); // int startrow = 3; User user; Link delete; Link edit; Link use; String userid = ""; for(int i=0; i<users.size();i++) { user = (User) users.get(i); userid = user.getPrimaryKey().toString(); table.add(user.getName(), 1, startrow); table.add(user.getPrimaryGroup().getName(), 2, startrow); delete = new Link(super.getResourceBundle().getLocalizedString("travel.link_delete", " Delete ")); delete.addParameter(sAction, ACTION_DELETE_USER); delete.setOnClick("return confirm('"+super.getResourceBundle().getLocalizedString("travel.are_you_sure","Are you sure")+"?');"); delete.addParameter(PARAM_USER_ID, userid); if (!iwc.getCurrentUser().equals(user)) { table.add(delete, 3, startrow); } table.setAlignment(3, startrow, "center"); edit = new Link(super.getResourceBundle().getLocalizedString("travel.link_edit"," Edit ")); edit.addParameter(sAction, ACTION_EDIT_USER); edit.addParameter(PARAM_USER_ID, userid); table.add(edit, 4, startrow); table.setAlignment(4, startrow, "center"); use = new Link(super.getResourceBundle().getLocalizedString("travel.link_use"," Use ")); use.addParameter(sAction, ACTION_USE_USER); use.addParameter(PARAM_USER_ID, userid); table.add(use, 5, startrow); table.setAlignment(5, startrow, "center"); table.setRowColor(startrow, GRAY); ++startrow; } Link newuser = new Link(tsm.getIWResourceBundle().getLocalizedImageButton("travel.new_user2", " New User "), SupplierManagerStaffEditor.class); newuser.addParameter(this.sAction, ACTION_NEW_USER); table.setRowColor(startrow, GRAY); table.add(newuser, 1, startrow++); add(table); } private void saveUser(IWContext iwc) throws RemoteException { String name = iwc.getParameter("namefield"); String login = iwc.getParameter("loginfield"); String passw = iwc.getParameter("passfield"); String passw2 = iwc.getParameter("passrfield"); String usertype = iwc.getParameter("user_type"); if (LoginDBHandler.isLoginInUse(login)) { add(super.getResourceBundle().getLocalizedString("travel.login_in_use", "Login in use")); } else if (!passw.equals(passw2)||passw==null||passw.equals("")) { add(super.getResourceBundle().getLocalizedString("travel.passw_empty", "Passwords do not match or are empty")); } else { User user; try { user = getSupplierManagerBusiness(iwc).createSupplierManagerStaff(getSupplierManager(), usertype, name , login, passw); add(super.getResourceBundle().getLocalizedString("travel.user_created","Created user "+user.getName())); } catch (CreateException e) { add(super.getResourceBundle().getLocalizedString("travel.user_creation_failed","Failed to created user")); e.printStackTrace(); } } } private void updateUser(IWContext iwc) throws RemoteException { String name = iwc.getParameter("namefield"); String login = iwc.getParameter("loginfield"); String passw = iwc.getParameter("passfield"); String passw2 = iwc.getParameter("passrfield"); String usertype = iwc.getParameter("user_type"); if (iwc.getParameter(PARAM_USER_ID)!=null) { int userid = Integer.parseInt(iwc.getParameter(PARAM_USER_ID)); if (!passw.equals(passw2)||passw==null||passw.equals("")) { add(super.getResourceBundle().getLocalizedString("travel.passw_empty", "Passwords do not match or are empty")); } else { try { LoginDBHandler.changePassword(userid, passw); LoginDBHandler.updateLogin(userid, login, login); } catch (NumberFormatException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } getUserBusiness().updateUser(userid, name, "", "", "", "", null, "", null, new Integer(getUser(iwc).getPrimaryGroupID()) ); updateSupplierManagerStaffUserPrimaryGroup(iwc, usertype); } } else { add(super.getResourceBundle().getLocalizedString("travel.user_id_is_null","Can't update. usr_id is null")); } } private void deleteUser(IWContext iwc) { try { getUserBusiness().deleteUser(getUser(iwc), iwc.getCurrentUser()); } catch (RemoteException e) { e.printStackTrace(); } catch (RemoveException e) { e.printStackTrace(); } } public void updateSupplierManagerStaffUserPrimaryGroup(IWContext iwc, String grouptype) { User user = getUser(iwc); try { user.setPrimaryGroup(getSupplierManagerBusiness(iwc).getGroupFromGroupType(getSupplierManager(), grouptype)); user.store(); } catch (RemoteException e) { e.printStackTrace(); } } /* * get User obj using primary key. */ private User getUser(IWContext iwc) { List users = null; String userID = iwc.getParameter(PARAM_USER_ID); try { users = getSupplierManagerBusiness(iwc).getSupplierManagerStaffUsers(getSupplierManager()); } catch (RemoteException e) { e.printStackTrace(); } catch (FinderException e) { e.printStackTrace(); } User user = null; Iterator listiter = users.iterator(); while(listiter.hasNext()) { user = (User) listiter.next(); if(user.getPrimaryKey().toString().equals(userID)) { return user; } } return user; } private void showForm(IWContext iwc) throws RemoteException { Form form = new Form(); Collection userTypes = new Vector(); Table table = getTable(); table.setWidth(300); // table.setCellpadding(1); table.setBorder(0); table.add(getHeaderText(getResourceBundle().getLocalizedString("travel.create_user", "Create User")), 1, 1); table.add(super.getResourceBundle().getLocalizedString("travel.name", "Name"), 1, 2); TextInput namefield = new TextInput("namefield"); namefield.setSize(15); namefield.keepStatusOnAction(); table.add(namefield, 2, 2); table.add(super.getResourceBundle().getLocalizedString("travel.login", "Login"), 1, 3); TextInput loginfield = new TextInput("loginfield"); loginfield.setSize(15); loginfield.keepStatusOnAction(); table.add(loginfield, 2, 3); table.add(super.getResourceBundle().getLocalizedString("travel.password", "Password"), 1, 4); PasswordInput passfield = new PasswordInput("passfield"); passfield.setSize(15); passfield.keepStatusOnAction(); table.add(super.getResourceBundle().getLocalizedString("travel.retype_password", "Retype password"), 1, 5); table.add(passfield, 2, 4); PasswordInput passrfield = new PasswordInput("passrfield"); passrfield.setSize(15); passrfield.keepStatusOnAction(); table.add(passrfield, 2, 5); table.add(super.getResourceBundle().getLocalizedString("travel.user_type", "User type"), 1, 6); DropdownMenu userType = new DropdownMenu("user_type"); table.add(userType, 2,6); table.mergeCells(1,1, 2,1); String action = iwc.getParameter(this.sAction); if(action != null && action.equals(ACTION_EDIT_USER)) { User user=getUser(iwc); namefield.setValue(user.getFirstName()); loginfield.setValue( LoginDBHandler.getUserLogin(Integer.parseInt(iwc.getParameter(PARAM_USER_ID))).getUserLogin() ); table.add(new SubmitButton(super.getResourceBundle().getImage("buttons/save.gif"), this.sAction, ACTION_UPDATE_USER),2,7); form.addParameter(PARAM_USER_ID, iwc.getParameter(PARAM_USER_ID)); Collection col = getSupplierManagerBusiness(iwc).getStaffGroups(getSupplierManager()); Iterator iter = col.iterator(); Group g; while (iter.hasNext()) { g = (Group )iter.next(); userType.addMenuElement(g.getGroupType(), super.getResourceBundle().getLocalizedString("travel.groupname."+g.getGroupType(),g.getName())); } userType.setSelectedElement(getUser(iwc).getPrimaryGroup().getGroupType().toString()); } else { Collection col = getSupplierManagerBusiness(iwc).getStaffGroups(getSupplierManager()); Iterator iter = col.iterator(); Group g; while (iter.hasNext()) { g = (Group )iter.next(); userType.addMenuElement(g.getGroupType(), super.getResourceBundle().getLocalizedString("travel.groupname."+g.getGroupType(),g.getName())); } table.add(new SubmitButton(super.getResourceBundle().getImage("buttons/save.gif"), this.sAction, ACTION_SAVE_USER),2,7); } table.setRowColor(1, backgroundColor); table.setRowColor(2, GRAY); table.setRowColor(3, GRAY); table.setRowColor(4, GRAY); table.setRowColor(5, GRAY); table.setRowColor(6, GRAY); table.setRowColor(7, GRAY); table.setAlignment(2, 7, Table.HORIZONTAL_ALIGN_RIGHT); form.add(table); add(form); } }