package
org.projectapollo.demo;
import apollo.*;
import apollo.Template.*;
import apollo.Session.*;
import apollo.Log.*;
import apollo.Storable.*;
import apollo.Statistics.*;
import java.net.*;
import
org.projectapollo.demo.Home.*;
import
org.projectapollo.demo.Frame.*;
import
org.projectapollo.demo.SessionExpired.*;
import
org.projectapollo.demo.Jobs.*;
import
org.projectapollo.demo.Storable.*;
import
org.projectapollo.demo.Session.*;
import
org.projectapollo.demo.General.*;
import
org.projectapollo.demo.Logout.*;
import
MysqlAdmin.MAMainMenu.*;
import java.util.*;
/** The RootPage Broker for ApolloDemo web application
*/
public class
RootPageBroker extends
PageBroker {
private
Vector AS;
public
RootPageBroker(ManagerTracker MT, String fquid, PageBroker PB) throws
TemplatePageException {
super(MT,fquid,PB);
//Start global managers
here
//Register children
nodes
this.registerPageHandler("Home",new
HomeBroker(MT,"Home",
this));
this.registerPageHandler("SessionExpired",new
SessionExpiredBroker(MT,"SessionExpired",
this));
this.registerPageHandler("Frame",new
FrameBroker(MT,"Frame",
this));
this.registerPageHandler("Jobs",new
JobsBroker(MT,"Jobs",
this));
this.registerPageHandler("Statistics",
new
StatisticsHandler(MT,"Statistics",this));
this.registerPageHandler("CreateAccount",
new
CreateAccountHandler(MT,"CreateAccount",this));
this.registerPageHandler("Session",
new
SessionBroker(MT,"Session",this));
this.registerPageHandler("General",
new
GeneralBroker(MT,"General",this));
this.registerPageHandler("Logout",
new
LogoutBroker(MT,"Logout",this));
this.registerPageHandler("MAMainMenu",
new
MAMainMenuBroker(MT, "MAMainMenu",
this));
MT.getPM().registerTemplatePage("",
new
TemplatePage(MT, this,
"login.html"));
MT.getPM().registerTemplatePage("LeftBarJavascript",
new
TemplatePage(MT, this,
"leftbarjavascript.html"));
AS = new
Vector();
AcceptClause needLogin = new
AcceptClause("NeedLogin");
AcceptClause loginAttempt= new
AcceptClause("Login");
loginAttempt.addAcceptClause(AcceptClause.STRING, "UserName",
AcceptClause.REQUIRED);
loginAttempt.addAcceptClause(AcceptClause.STRING, "Password",
AcceptClause.REQUIRED);
AS.addElement(loginAttempt);
AS.addElement(needLogin);
}
public
HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession
thisSession) throws
ApolloException {
Hashtable RT = new
Hashtable();
RT.put("JSAlert",
new
Boolean(false));
EntryAssertionManager EAM = new
EntryAssertionManager(MT, AS);
EAM.evaluate(req);
if
(EAM.isAccept("Login"))
{
//Authenticate
User u = User.loadInstance(TT, new
Object[] {EAM.getString("UserName")});
if
(u==null)
{
//User does not exist
RT.put("JSAlert",
new
Boolean(true));
RT.put("JSMessage",
"Login incorrect");
return
MT.getPM().getPage("").render(RT,thisSession);
}
if
(!u.getPassword().equals(EAM.getString("Password")))
{
//Bad password!
RT.put("JSAlert",
new
Boolean(true));
RT.put("JSMessage",
"Login incorrect");
return
MT.getPM().getPage("").render(RT,thisSession);
}
 
//Issue Session
thisSession = MT.getSM().newSession(EAM.getString("UserName"));
WhereQuery wq = new
WhereQuery();
wq.insertWhereClause(WhereQuery.AND, "userID",
User.class,
u.getUserID());
Storable.addValueAtomic(TT, User.class,
"numLogins",
1,
wq);
//Populate session with
goodies
thisSession.setValue("User",
u);
req.setValue("Destination","Home");
//Use Frameset
return
this.handleRequest(TT,
"Frame",
req, thisSession);
}
return
MT.getPM().getPage("").render(RT,thisSession);
}
}