public class MemberFilter extends DispatchAction implements Filter {
FilterConfig config;
// Create Log4j category instance for logging
// static private org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(MemberFilter.class.getName());
/**
* Simple Filter init that can be used to initialize the filter the first time
* it is loaded.
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig config) throws ServletException{
this.config = config;
}
/**
* Checks to see if the user is logged in (they have a member object in the session.)
*
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.Fi
* lterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpSession session = servletRequest.getSession();
//SECTION FOR J2ME AUTHENTICATION
String cookieSession = servletRequest.getHeader("Set-Cookie");
String sessionID = servletRequest.getHeader("session-id");
System.out.println("*** COOKIE SESSION ***: " + sessionID);
System.out.println("*** session id ***: " + servletRequest.getHeader("session-id"));
/************************** BEGIN TESTING ***************************************/
String ss = servletRequest.getQueryString();
String sr = servletRequest.getRequestURI();
String gm = servletRequest.getMethod();
System.out.println("query string: " + ss + " " + servletRequest.getMethod() + " " + sr);
int counter = 0;
//GET THE INCOMING DATA FROM THE SENSORS //FIX, MAKE BETTER
try {
if(ss.equals("dispatch=perfAbsorb")) {
System.out.println("VALUES UNDER QUARANTINE :: COUNTER: " + counter);
counter++;
chain.doFilter(request, response);
}
} catch(NullPointerException npe) {}
/*************************************************** END TESTING ******************************************/
System.out.println("COUNTER: " + counter);
if(sessionID != null) { //used for updating data on the server j2me
if(!sessionID.equals("")) {
chain.doFilter(request, response);
}
}
else if(cookieSession != null) { //used for getting data from the server j2me
if(!cookieSession.equals("")) {
chain.doFilter(request, response);
}
}
else { // WEB APP AUTHENTICATION
System.out.println("COUNTER: " + counter);
counter ++;
LoginVO lVO = (LoginVO) session.getAttribute("User-Information");
System.out.println("inside the else part one");
if(lVO == null) {
System.out.println("lVO is null");
if(request.getParameter("goLogin") != null) {
System.out.println("USER IS ON THE LOG IN PAGETRYING TO GET IN");
chain.doFilter(request, response); //userLogin?dispatch=userLogin //time tested and true
} else {
System.out.println("FORWARDING TO THE LOG IN PAGE AS THERE'S NO SESSION VARIABLE");
setLoginPic(lVO, request);
RequestDispatcher rd = servletRequest.getRequestDispatcher("/");
rd.forward(request, response);
}
} else { //user is already logged in, business as usual
System.out.println("user already logged in, business as usual v:" + lVO.getViewUsers() + " e" + lVO.getEditUsers());
request.setAttribute("lVO", lVO); //put the userinfo in the session for application permissions
chain.doFilter(request, response);
}
}
}
private void setLoginPic(LoginVO lVO, ServletRequest request ) {
/*
if (AAUtils.isAjaxRequest(request)){
System.out.println("AJAX REQUEST MEMBER FILTERzzzzzz");
AAUtils.addZonesToRefresh(request,"userPicZone");
LoginService service = LoginService.getInstance();
lVO = new LoginVO();
String userName = request.getParameter("username");
lVO.setUsername(userName);
try {
lVO = (LoginVO) service.getUserPic(lVO);
} catch (DaoException ex) {
ex.printStackTrace();
}
if(lVO != null) {
request.setAttribute("userName",lVO.getUserPic());
}
}
*/
}
/**
* Not implemented.
* @see javax.servlet.Filter#destroy()
*/
public void destroy(){}
private Object lookupUser(String id) {
// Most likely we would use JDBC[tm] to connect to a database,
// perform a query, package the results up as an object,
// and return that object. Most likely it would be a
// specific type, perhaps User, UserInformation,
// or UserPreferences.
return null;
}
}