package com.dokoll.solutions.inc.Utils; /** * Created: 2014.02.08.4.02.PM * Maintain variable in session, based on NSF record returned * load custom error Message(s) */ import javax.faces.context.FacesContext; import lotus.domino.Database; import lotus.domino.NotesException; import lotus.domino.Session; import lotus.domino.View; import lotus.domino.ViewEntry; import lotus.domino.ViewEntryCollection; import com.ibm.xsp.model.domino.DominoUtils; /** * @author Dököll Solutions, Inc. * @version 2014.02.08.4.02.PM * */ public class TestLoginJavaBean { //declare search/err Message variables private String UserName; private String MyEntries; private String message; //... static String URLACCESS_VIEWNAME = "URLAccessView"; /** * @return the userName */ public String getUserName() { return UserName; } /** * @param userName * the userName to set */ public void setUserName(String userName) { UserName = userName; } /** * @param myEntries * the myEntries to set */ public void setMyEntries(String myEntries) { MyEntries = myEntries; } /** * @return the message */ public String getMessage() { return message; } /** * @param message * the message to set */ public void setMessage(String message) { this.message = message; } /** * @return the myEntries */ public String getMyEntries() { return MyEntries; } public TestLoginJavaBean() { // ... } //button code @SuppressWarnings("unchecked") public String doLoginUser() { // let's add a try catch here, to grab errors near the end try { // BEGIN DEBUG System.out .println("BEGIN DEBUG | TestLoginJavaBean.java - doLoginUser started... "); Session session = DominoUtils.getCurrentSession(FacesContext .getCurrentInstance()); System.out .println("docucontent.nsf | doLoginUser() in TestLoginJavaBean.java Database Session Obtained..." + session); // find database in question from current session System.out .println("docucontent.nsf | doLoginUser() in TestLoginJavaBean.java based on Database Session..."); Database database = session.getDatabase(session.getServerName(), "docucontent.nsf"); System.out .println("doLoginUser() in TestLoginJavaBean.java Fetched Database..." + database); System.out.println("Getting a database connection... "); System.out .println("TestLoginJavaBean.java | doLoginUser Connected to " + database); // Find the view in question View view = database.getView(URLACCESS_VIEWNAME); System.out .println("TestLoginJavaBean.java | doLoginUser Connected to " + view); // determine database state for searching if (database.isFTIndexed()) database.updateFTIndex(false); else database.updateFTIndex(true); //perform search via ViewEntryCollection ViewEntryCollection vec = view.getAllEntriesByKey(UserName, true); // ... // put the userName variable in session to be picked up through App FacesContext.getCurrentInstance().getExternalContext() .getSessionMap().put("userName", UserName); //at this point we assume, the userID column in back-end (URLACCESS_VIEWNAME) has the value searched //load count for debugging purposes //Note, count can be 0 here, thus err Message(s) should load... System.out .println("TestLoginJavaBean.java | ViewEntryCollection Counts Obtained..."); System.out.println("TestLoginJavaBean.java | ViewEntries " + vec.getCount() + " Account(s)"); System.out .println("TestLoginJavaBean.java | ViewEntryCollection completed successfully..."); ViewEntry tmpentry = null; ViewEntry entry = vec.getFirstEntry(); // ensure UserID field/column returned is not null (record not found) from NSF back-end, // if so, load text/err Message(s) to user if (entry == null) { // add Message value... // TODO: Do something else with the current component // example, combine with built-in items //... MyEntries = "Invalid UserID"; //load to custom errMessage label control message = MyEntries.toString(); // load friendlier debug message to log // in which case, inputText or Label should load 'Invalid UserID to // form // TODO: Create set of custom messages to load to Xpages form System.out .println("TestLoginJavaBean.java | ViewEntryCollection completed with error..." + MyEntries); // otherwise load the value needed to let user continue } else { // add value needed for pairing with session, and so on... MyEntries = entry.getDocument().getItemValueString( "UserID"); // DEBUG ONLY: // load friendly debug message to log // System.out // .println("TestLoginJavaBean.java | ViewEntryCollection completed with valid ID..." // + MyEntries); if (MyEntries.equalsIgnoreCase(UserName)) { //grab the session and make available in other pages //this should only happen if in fact NSF userID column has value searched via userName component UserName = (String) FacesContext.getCurrentInstance() .getExternalContext().getSessionMap().get("userName"); System.out.println("Session obtained from Bean... " + UserName); tmpentry = vec.getNextEntry(); entry.recycle(); entry = tmpentry; System.out .println("END DEBUG | TestLoginJavaBean.java - doLoginUser releasing access to controls... "); return "xsp-success"; // END DEBUG } } } catch (NotesException e) { System.out.println(e.id + " " + e.text); e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } // return UserName; return UserName; } } // ... // end of program