package com.diodesoftware.scb.tables; import java.net.URL; import java.util.Calendar; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import com.diodesoftware.dbmapper.DatabaseColumn; import com.diodesoftware.dbmapper.DatabaseColumnType; import com.diodesoftware.dbmapper.DatabaseEntry; import com.diodesoftware.scb.ClipRequest; import com.diodesoftware.scb.ClipSession; public class UserVisit implements DatabaseEntry { private Calendar visitStart = Calendar.getInstance(); private int userId; private int clipId; private String userAgent; private String sessionId; private String ip; private String ref; private String enterUri; private String host; private int number; private int hitCount; private Calendar visitEnd = Calendar.getInstance(); private static Logger log = Logger.getLogger(UserVisit.class); private DatabaseColumn[] columns = new DatabaseColumn[]{ new DatabaseColumn("VisitStart", DatabaseColumnType.DATE12), new DatabaseColumn("UserId", DatabaseColumnType.DECIMAL), new DatabaseColumn("UserAgent", DatabaseColumnType.TINY_TEXT), new DatabaseColumn("SessionId", DatabaseColumnType.TINY_TEXT), new DatabaseColumn("Ip", DatabaseColumnType.CHAR_100), new DatabaseColumn("Ref", DatabaseColumnType.TEXT), new DatabaseColumn("EnterUri", DatabaseColumnType.TEXT), new DatabaseColumn("Host", DatabaseColumnType.CHAR_20), new DatabaseColumn("VisitEnd", DatabaseColumnType.DATE12), new DatabaseColumn("HitCount", DatabaseColumnType.DECIMAL), new DatabaseColumn("ClipId", DatabaseColumnType.DECIMAL) }; public UserVisit(){} public UserVisit(HttpServletRequest request){ HttpSession httpSession = request.getSession(); sessionId = httpSession.getId(); ip = request.getRemoteAddr(); userAgent = request.getHeader("User-Agent"); ClipRequest clipRequest = ClipRequest.getClipRequest(request); if(clipRequest != null){ Clip clip = clipRequest.getClip(); if(clip != null){ clipId = clip.getNumber(); } } ref = request.getHeader("referer"); if(ref == null){ ref = request.getHeader("referrer"); } try{ URL url = new URL(request.getRequestURL().toString()); host = url.getHost(); }catch(Exception e){ log.error("Error creating URL",e); } enterUri = request.getRequestURI(); ClipSession clipSession = ClipSession.getSession(request); if(clipSession != null){ if(clipSession.isLoggedIn()){ userId = clipSession.getUser().getNumber(); } } } public DatabaseColumn[] columns() { return columns; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public String getEnterUri() { return enterUri; } public void setEnterUri(String enterUri) { this.enterUri = enterUri; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getRef() { return ref; } public void setRef(String ref) { this.ref = ref; } public String getSessionId() { return sessionId; } public void setSessionId(String sessionId) { this.sessionId = sessionId; } public String getUserAgent() { return userAgent; } public void setUserAgent(String userAgent) { this.userAgent = userAgent; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public int getHitCount() { return hitCount; } public void setHitCount(int hitCount) { this.hitCount = hitCount; } public Calendar getVisitEnd() { return visitEnd; } public void setVisitEnd(Calendar visitEnd) { this.visitEnd = visitEnd; } public Calendar getVisitStart() { return visitStart; } public void setVisitStart(Calendar visitStart) { this.visitStart = visitStart; } public int getClipId() { return clipId; } public void setClipId(int cl1pId) { this.clipId = cl1pId; } public void addHit(){ hitCount++; } }