package com.diodesoftware.scb; import org.apache.log4j.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Iterator; import java.util.Map; import java.util.HashMap; import java.util.Enumeration; import java.sql.Connection; import com.diodesoftware.scb.clipboard.ClipType; import com.diodesoftware.scb.sysop.SysopSession; import com.diodesoftware.scb.tables.Clip; import com.diodesoftware.scb.tables.Owner; import com.diodesoftware.scb.tables.User; /** * Created by IntelliJ IDEA. * User: Rob * Date: Apr 30, 2006 * Time: 3:17:56 PM * To change this template use File | Settings | File Templates. */ public class ClipRequest { private HttpServletRequest request; private String uri; private String url; private String extention; private String referer; private Map parameters; private static Logger log = Logger.getLogger(ClipRequest.class); private Connection con; private String baseName; private boolean SSL = false; private Clip clip; private Owner owner; private User user; private boolean wap; private int viewMode; private ClipType clipType; private boolean stumbler = false; public ClipRequest(HttpServletRequest request, Connection con){ this.request = request; uri = request.getRequestURI(); url = request.getRequestURL().toString(); extention = parseExtention(request); wap = (extention.equals(".xml")); parameters = buildMap(request); referer = request.getHeader("referer"); if(referer!= null && referer.indexOf("stumbleupon.com") != -1){ stumbler = true; } this.con = con; if(request.getParameter(HtmlParam.JUMP) != null){ uri = "/" + request.getParameter(HtmlParam.JUMP); } } public HttpServletRequest getRequest() { return request; } public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } public void setAttribute(String key, Object value){ this.request.setAttribute(key, value); } public Object getAttribute(String key){ return this.request.getAttribute(key); } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public HttpSession getSession(){ return this.request.getSession(); } public String getExtention() { return extention; } public void setExtention(String extention) { this.extention = extention; } public String getParameter(String key){ return (String)parameters.get(key); } public void setParameter(String key, String value){ parameters.put(key, value); } public String getReferer() { return referer; } public void setReferer(String referer) { this.referer = referer; } private static String parseExtention(HttpServletRequest request) { String extention = ".html"; Boolean mobile = (Boolean)request.getAttribute(HtmlParam.MOBILE_ATTR); if(mobile!=null&&mobile.booleanValue()){ if(log.isDebugEnabled()) log.debug("Extention is xml"); extention = ".xml"; }else{ if(log.isDebugEnabled()){ log.debug("Extention is html"); } } return extention; } public void reInitParamererMap(){ parameters = buildMap(request); } private Map buildMap(HttpServletRequest request) { Map map = new HashMap(); if(log.isDebugEnabled()) log.debug("Building Parameter map"); Map parmMap = new HashMap(); try{ parmMap = request.getParameterMap(); }catch(Throwable e){ log.error("Error getting parameters from request:" + request.getRequestURL(),e); } if(log.isDebugEnabled()){ log.debug("Param map size [" + parmMap.size() + "]"); } Enumeration names = request.getParameterNames(); while (names.hasMoreElements()) { String name = (String) names.nextElement(); String value = request.getParameter(name); if(log.isDebugEnabled()){ log.debug("Adding Name [" + name + "] Value [" + value + "] To Parameter map"); } map.put(name, value); } return map; } public Connection getCon() { return con; } public String getBaseName() { return baseName; } public void setBaseName(String baseName) { this.baseName = baseName; } public static void setClipRequest(HttpServletRequest request, ClipRequest clipRequest){ request.setAttribute("clipRequest", clipRequest); } public static ClipRequest getClipRequest(HttpServletRequest request){ return (ClipRequest)request.getAttribute("clipRequest"); } public boolean isSSL() { return SSL; } public void setSSL(boolean SSL) { this.SSL = SSL; } public Clip getClip() { return clip; } public void setClip(Clip clip) { this.clip = clip; } public Owner getOwner() { return owner; } public void setOwner(Owner owner) { this.owner = owner; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public boolean isOwned(){ return this.owner != null; } public boolean isOwner(){ return (isOwned() && this.user != null && this.user.getNumber() == this.owner.getUserId()); } public boolean isSellable(){ return (!isOwned()); } public boolean showAds(){ if(!ClipConfig.CL1P_SITE)return false; return (!isOwned() && (user == null || !user.isPro() )); } public boolean showNonLoggedInAds(){ if(!ClipConfig.CL1P_SITE)return false; if(isOwned())return false; if(isLoggedIn())return false; return true; } public boolean isLoggedIn(){ return user != null; } public boolean isWap() { return wap; } public void setWap(boolean wap) { this.wap = wap; } public int getViewMode() { return viewMode; } public void setViewMode(int viewMode) { this.viewMode = viewMode; } public ClipType getCl1pType() { return clipType; } public void setClipType(ClipType clipType) { this.clipType = clipType; } public boolean isSslAllowed(){ return (isOwned() && owner.isSslAccess()); } public boolean isStumbler() { return stumbler; } public void setStumbler(boolean stumbler) { this.stumbler = stumbler; } public Iterator getParameterNames(){ return parameters.keySet().iterator(); } public boolean isRoot() { SysopSession sysopSession = SysopSession.getInstance(request); return sysopSession.isLoggedIn(); } public void setErrorMessage(String s) { request.setAttribute("errorMessage",s); } }