Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/projectapollo/demo/RootPageBroker.java


1   package org.projectapollo.demo;
2   
3   import apollo.*;
4   import apollo.Template.*;
5   import apollo.Session.*;
6   import apollo.Log.*;
7   import apollo.Storable.*;
8   import apollo.Statistics.*;
9   
10  import java.net.*;
11  
12  import org.projectapollo.demo.Home.*;
13  import org.projectapollo.demo.Frame.*;
14  import org.projectapollo.demo.SessionExpired.*;
15  import org.projectapollo.demo.Jobs.*;
16  import org.projectapollo.demo.Storable.*;
17  import org.projectapollo.demo.Session.*;
18  import org.projectapollo.demo.General.*;
19  import org.projectapollo.demo.Logout.*;
20  
21  import org.projectapollo.mysqladmin.MAMainMenu.*;
22  
23  import java.util.*;
24  /** The RootPage Broker for ApolloDemo web application
25  */
26  
27  public class RootPageBroker extends PageBroker {
28    private Vector AS;
29    public RootPageBroker(ManagerTracker MT, String fquid, PageBroker PB) throws TemplatePageException {
30      super(MT,fquid,PB);
31  
32    //Start global managers here
33  
34    //Register children nodes
35  
36      this.registerPageHandler("Home",new HomeBroker(MT,"Home", this));
37      this.registerPageHandler("SessionExpired",new SessionExpiredBroker(MT,"SessionExpired", this));
38      this.registerPageHandler("Frame",new FrameBroker(MT,"Frame", this));
39      this.registerPageHandler("Jobs",new JobsBroker(MT,"Jobs", this));
40      this.registerPageHandler("Statistics", new StatisticsHandler(MT,"Statistics",this));
41      this.registerPageHandler("CreateAccount", new CreateAccountHandler(MT,"CreateAccount",this));
42      this.registerPageHandler("Session", new SessionBroker(MT,"Session",this));
43      this.registerPageHandler("General", new GeneralBroker(MT,"General",this));
44      this.registerPageHandler("Logout", new LogoutBroker(MT,"Logout",this));
45      this.registerPageHandler("MAMainMenu", new MAMainMenuBroker(MT, "MAMainMenu", this));
46  
47      MT.getPM().registerTemplatePage("", new TemplatePage(MT, this, "login.html"));
48      MT.getPM().registerTemplatePage("LeftBarJavascript", new TemplatePage(MT, this, "leftbarjavascript.html"));
49  
50      AS = new Vector();
51      AcceptClause needLogin = new AcceptClause("NeedLogin");
52      AcceptClause loginAttempt= new AcceptClause("Login");
53      loginAttempt.addAcceptClause(AcceptClause.STRING, "UserName", AcceptClause.REQUIRED);
54      loginAttempt.addAcceptClause(AcceptClause.STRING, "Password", AcceptClause.REQUIRED);
55  
56      AS.addElement(loginAttempt);
57      AS.addElement(needLogin);
58    }
59    public HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession thisSession) throws ApolloException {
60      Hashtable RT = new Hashtable();
61  
62      //Until we have a session carrying around the path, we need to insert it manually
63  
64      RT.put("ServletPath", req.getServletPath());
65  
66      RT.put("JSAlert", new Boolean(false));
67      EntryAssertionManager EAM = new EntryAssertionManager(MT, AS);
68      EAM.evaluate(req);
69  
70      if (EAM.isAccept("Login")) {
71        //Authenticate
72        User u = User.loadInstance(TT, new Object[] {EAM.getString("UserName")});
73        if (u==null) {
74          //User does not exist
75          RT.put("JSAlert", new Boolean(true));
76          RT.put("JSMessage", "Login incorrect");
77          return MT.getPM().getPage("").render(RT,thisSession);
78        }
79        if (!u.getPassword().equals(EAM.getString("Password"))) {
80          //Bad password!
81          RT.put("JSAlert", new Boolean(true));
82          RT.put("JSMessage", "Login incorrect");
83          return MT.getPM().getPage("").render(RT,thisSession);
84        }
85  
86        //Issue Session
87        thisSession = MT.getSM().newSession(EAM.getString("UserName"));
88        thisSession.setServletPath(req.getServletPath());
89  
90        WhereQuery wq = new WhereQuery();
91        wq.insertWhereClause(WhereQuery.AND, "userID", User.class, u.getUserID());
92        Storable.addValueAtomic(TT, User.class, "numLogins", 1, wq);
93  
94        //Populate session with goodies
95        thisSession.setValue("User", u);
96  
97        req.setValue("Destination","Home");
98  
99        //Use Frameset
100       return this.handleRequest(TT, "Frame", req, thisSession);
101     }
102     return MT.getPM().getPage("").render(RT,thisSession);
103   }
104 }