// Path: src/main/java/org/owasp/oneliner/oneLiner/DbSize.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlRootElement
// public class DbSize {
//     private int size;
//     private Date timeStamp;
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public void setSize(int size) {
//         this.size = size;
//     }
// 
//     public Date getTimeStamp() {
//         return timeStamp;
//     }
// 
//     public void setTimeStamp(Date timeStamp) {
//         this.timeStamp = timeStamp;
//     }
// 
//     @Override
//     public String toString() {
//         return "DbSize{" +
//                 "size=" + size +
//                 ", timeStamp=" + timeStamp +
//                 '}';
//     }
// 
//     public DbSize(int size) {
//         this.size = size;
//         this.timeStamp = new Date();
//     }
// 
//     public DbSize() {};  // Here for JAXB
// }
// 
// Path: src/main/java/org/owasp/oneliner/oneLiner/OneLiner.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlRootElement
// public class OneLiner {
//     protected int id;
//     protected String nickName;
//     protected String oneLiner;
//     protected Date timestamp;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// 
//     public String getNickName() {
//         return nickName;
//     }
// 
//     public void setNickName(String nickName) {
//         this.nickName = nickName;
//     }
// 
//     public String getOneLiner() {
//         return oneLiner;
//     }
// 
//     public void setOneLiner(String oneLiner) {
//         this.oneLiner = oneLiner;
//     }
// 
//     public Date getTimestamp() {
//         return timestamp;
//     }
// 
//     public void setTimestamp(Date timestamp) {
//         this.timestamp = timestamp;
//     }
// 
//     OneLiner(int id, String nickName, String oneLiner, Date timestamp) throws IllegalArgumentException {
//         if (nickOK(nickName) && oneLinerOK(oneLiner)) {
//             this.id = id;
//             this.nickName = nickName;
//             this.oneLiner = oneLiner;
//             this.timestamp = timestamp;
//         } else {
//             throw new IllegalArgumentException();
//         }
//     }
// 
//     public OneLiner() { } // Here for JAX-B
// 
//     private boolean nickOK(String nickName) {
//         final int MAX_NICK_NAME_SIZE = 32;
//         return (nickName != null && !"".equals(nickName) && nickName.length() <= MAX_NICK_NAME_SIZE);
//     }
// 
//     private boolean oneLinerOK(String oneLiner) {
//         final int MAX_ONE_LINER_SIZE = 160;
//         return (oneLiner != null && !"".equals(oneLiner) && oneLiner.length() <= MAX_ONE_LINER_SIZE);
//     }
// 
//     @Override
//     public boolean equals(Object other) {
//         if (other instanceof OneLiner) {
//             OneLiner otherOneLiner = (OneLiner)other;
//             return id == otherOneLiner.id &&
//                     nickName != null && nickName.equals(otherOneLiner.nickName) &&
//                     oneLiner != null && oneLiner.equals(otherOneLiner.oneLiner);
//         } else {
//             return false;
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return "{" + id + " " + nickName + ":" + oneLiner + ":" + timestamp + "}";
//     }
// }


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.owasp.oneliner.oneLiner.DbSize;
import org.owasp.oneliner.oneLiner.OneLiner;
import java.util.ArrayList;
import java.util.List;
package org.owasp.oneliner.persistence;



/**
 * Author: @johnwilander
 * Date: 2010-12-12
 */
public class OneLinerDb {
    private static final Log logger = LogFactory.getLog(OneLinerDb.class);
    private List<OneLiner> initialList;
    private List<OneLiner> oneLiners;

    public List<OneLiner> getLatestOneLiners(int maxNumber) {
        if (logger.isDebugEnabled()) { logger.debug("Getting latest one liners. DB size = " + oneLiners.size()); }
        if (maxNumber >= oneLiners.size()) {
            return oneLiners;
        } else {
            int endIndex = oneLiners.size() - 1;
            return oneLiners.subList(endIndex - maxNumber, endIndex);
        }
    }

// Path: src/main/java/org/owasp/oneliner/oneLiner/DbSize.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlRootElement
// public class DbSize {
//     private int size;
//     private Date timeStamp;
// 
//     public int getSize() {
//         return size;
//     }
// 
//     public void setSize(int size) {
//         this.size = size;
//     }
// 
//     public Date getTimeStamp() {
//         return timeStamp;
//     }
// 
//     public void setTimeStamp(Date timeStamp) {
//         this.timeStamp = timeStamp;
//     }
// 
//     @Override
//     public String toString() {
//         return "DbSize{" +
//                 "size=" + size +
//                 ", timeStamp=" + timeStamp +
//                 '}';
//     }
// 
//     public DbSize(int size) {
//         this.size = size;
//         this.timeStamp = new Date();
//     }
// 
//     public DbSize() {};  // Here for JAXB
// }
// 
// Path: src/main/java/org/owasp/oneliner/oneLiner/OneLiner.java
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlRootElement
// public class OneLiner {
//     protected int id;
//     protected String nickName;
//     protected String oneLiner;
//     protected Date timestamp;
// 
//     public int getId() {
//         return id;
//     }
// 
//     public void setId(int id) {
//         this.id = id;
//     }
// 
//     public String getNickName() {
//         return nickName;
//     }
// 
//     public void setNickName(String nickName) {
//         this.nickName = nickName;
//     }
// 
//     public String getOneLiner() {
//         return oneLiner;
//     }
// 
//     public void setOneLiner(String oneLiner) {
//         this.oneLiner = oneLiner;
//     }
// 
//     public Date getTimestamp() {
//         return timestamp;
//     }
// 
//     public void setTimestamp(Date timestamp) {
//         this.timestamp = timestamp;
//     }
// 
//     OneLiner(int id, String nickName, String oneLiner, Date timestamp) throws IllegalArgumentException {
//         if (nickOK(nickName) && oneLinerOK(oneLiner)) {
//             this.id = id;
//             this.nickName = nickName;
//             this.oneLiner = oneLiner;
//             this.timestamp = timestamp;
//         } else {
//             throw new IllegalArgumentException();
//         }
//     }
// 
//     public OneLiner() { } // Here for JAX-B
// 
//     private boolean nickOK(String nickName) {
//         final int MAX_NICK_NAME_SIZE = 32;
//         return (nickName != null && !"".equals(nickName) && nickName.length() <= MAX_NICK_NAME_SIZE);
//     }
// 
//     private boolean oneLinerOK(String oneLiner) {
//         final int MAX_ONE_LINER_SIZE = 160;
//         return (oneLiner != null && !"".equals(oneLiner) && oneLiner.length() <= MAX_ONE_LINER_SIZE);
//     }
// 
//     @Override
//     public boolean equals(Object other) {
//         if (other instanceof OneLiner) {
//             OneLiner otherOneLiner = (OneLiner)other;
//             return id == otherOneLiner.id &&
//                     nickName != null && nickName.equals(otherOneLiner.nickName) &&
//                     oneLiner != null && oneLiner.equals(otherOneLiner.oneLiner);
//         } else {
//             return false;
//         }
//     }
// 
//     @Override
//     public String toString() {
//         return "{" + id + " " + nickName + ":" + oneLiner + ":" + timestamp + "}";
//     }
// }


// Path: src/main/java/org/owasp/oneliner/persistence/OneLinerDb.java
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.owasp.oneliner.oneLiner.DbSize;
import org.owasp.oneliner.oneLiner.OneLiner;
import java.util.ArrayList;
import java.util.List;

package org.owasp.oneliner.persistence;



/**
 * Author: @johnwilander
 * Date: 2010-12-12
 */
public class OneLinerDb {
    private static final Log logger = LogFactory.getLog(OneLinerDb.class);
    private List<OneLiner> initialList;
    private List<OneLiner> oneLiners;

    public List<OneLiner> getLatestOneLiners(int maxNumber) {
        if (logger.isDebugEnabled()) { logger.debug("Getting latest one liners. DB size = " + oneLiners.size()); }
        if (maxNumber >= oneLiners.size()) {
            return oneLiners;
        } else {
            int endIndex = oneLiners.size() - 1;
            return oneLiners.subList(endIndex - maxNumber, endIndex);
        }
    }

    public DbSize getNumberOfOneliners() {