package com.diodesoftware.scb.tables; import com.diodesoftware.dbmapper.DatabaseEntry; import com.diodesoftware.dbmapper.DatabaseColumn; import com.diodesoftware.dbmapper.DatabaseColumnType; import com.diodesoftware.scb.ClipUtil; import java.util.Calendar; import java.sql.Connection; import java.sql.SQLException; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.apache.log4j.Logger; import javax.servlet.http.HttpServletRequest; public class UrlCredit implements DatabaseEntry { private static Logger log = Logger.getLogger(UrlCredit.class); private int number; private int userId; private Calendar created = Calendar.getInstance(); private String transactionId; private int ownerId; private boolean used; private String token; private String uri; private String email; private int years; private boolean sslAccess; public DatabaseColumn[] columns = new DatabaseColumn[]{ new DatabaseColumn("UserId", DatabaseColumnType.DECIMAL), new DatabaseColumn("Created", DatabaseColumnType.DATE12), new DatabaseColumn("TransactionId", DatabaseColumnType.TINY_TEXT), new DatabaseColumn("OwnerId", DatabaseColumnType.DECIMAL), new DatabaseColumn("Used", DatabaseColumnType.BOOLEAN), new DatabaseColumn("Token", DatabaseColumnType.CHAR_200), new DatabaseColumn("Uri", DatabaseColumnType.TEXT), new DatabaseColumn("Email", DatabaseColumnType.TEXT), new DatabaseColumn("Years", DatabaseColumnType.DECIMAL), new DatabaseColumn("SslAccess", DatabaseColumnType.BOOLEAN) }; public DatabaseColumn[] columns(){ return columns; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public Calendar getCreated() { return created; } public void setCreated(Calendar created) { this.created = created; } public String getTransactionId() { return transactionId; } public void setTransactionId(String transactionId) { this.transactionId = transactionId; } public int getOwnerId() { return ownerId; } public void setOwnerId(int ownerId) { this.ownerId = ownerId; } public boolean getUsed(){ return isUsed(); } public boolean isUsed() { return used; } public void setUsed(boolean used) { this.used = used; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getYears() { return years; } public void setYears(int years) { this.years = years; } public boolean getSslAccess(){ return isSslAccess(); } public boolean isSslAccess(){ return sslAccess; } public void setSslAccess(boolean s){ sslAccess = s; } public static String generateToken(Connection con){ String sql = "Select * from UrlCredit where Token = ?"; String token = null; try{ PreparedStatement prepStmt = con.prepareStatement(sql); boolean unique = false; while(!unique){ token = ClipUtil.genString(150); prepStmt.setString(1, sql); ResultSet rs = prepStmt.executeQuery(); if(!rs.next()){ unique = true; } rs.close(); } prepStmt.close(); }catch(SQLException e){ log.error("Error running SQL [" + sql + "]"); } return token; } private static final String CREDIT_KEY = "cl1p-url-credit"; public static void setCredit(HttpServletRequest request, UrlCredit credit){ request.getSession().setAttribute(CREDIT_KEY, credit); } public static UrlCredit getCredit(HttpServletRequest request){ UrlCredit credit = (UrlCredit)request.getSession().getAttribute(CREDIT_KEY); return credit; } }