blob: db76ed34a051f8e68fd545993975a9dfc3fb5373 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.weblogger.pojos;
import java.io.Serializable;
import java.sql.Timestamp;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.roller.util.UUIDGenerator;
/**
* Ping queue entry. Each instance of this class represents an entry on the ping queue. The entry indicates when it was
* added to the queue, which configuration to apply for the ping, and the number of ping attempts that have been made
* for this entry so far.
*
* @author <a href="mailto:anil@busybuddha.org">Anil Gangolli</a>
*/
public class PingQueueEntry implements Serializable {
private String id = UUIDGenerator.generateUUID();
private Timestamp entryTime = null;
private PingTarget pingTarget = null;
private Weblog website = null;
private int attempts = 0;
public static final long serialVersionUID = -1468021030819538243L;
/**
* Default constructor. Leaves all fields at Java-specified default values.
*/
public PingQueueEntry() {
}
/**
* Construct with all members
*
* @param id unique id of this entry
* @param entryTime timestamp of first entry onto queue
* @param pingTarget target site to ping
* @param website website originating the ping
* @param attempts number of prior ping attempts
*/
public PingQueueEntry(String id, Timestamp entryTime, PingTarget pingTarget, Weblog website, int attempts) {
//this.id = id;
this.entryTime = entryTime;
this.pingTarget = pingTarget;
this.website = website;
this.attempts = attempts;
}
/**
* Get the unique id (primary key) of this object.
*
* @return the unique id of this object.
*/
public String getId() {
return id;
}
/**
* Set the unique id (primary key) of this object.
*
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* Get the entry time. Get the time this entry was first added to the queue.
*
* @return the time the entry was first added to the queue.
*/
public Timestamp getEntryTime() {
return entryTime;
}
/**
* Set the entry time.
*
* @param entryTime the time the entry was first added to the queue.
*/
public void setEntryTime(Timestamp entryTime) {
this.entryTime = entryTime;
}
/**
* Get the ping target. Get the target to ping.
*
* @return the ping target to ping.
*/
public PingTarget getPingTarget() {
return pingTarget;
}
/**
* Set the ping target.
*
* @param pingTarget target to ping.
*/
public void setPingTarget(PingTarget pingTarget) {
this.pingTarget = pingTarget;
}
/**
* Get the website originating the ping.
*
* @return the website originating the ping.
*/
public Weblog getWebsite() {
return website;
}
/**
* Set the website originating the ping.
*
* @param website the website originating the ping.
*/
public void setWebsite(Weblog website) {
this.website = website;
}
/**
* Get the number of ping attempts that have been made for this queue entry.
*
* @return the number of ping attempts that have been made for this queue entry.
*/
public int getAttempts() {
return attempts;
}
/**
* Set the number of failures that have occurred for this queue entry.
*
* @param attempts
*/
public void setAttempts(int attempts) {
this.attempts = attempts;
}
/**
* Increment the number of failures for this queue entry.
*
* @return the new value.
*/
public int incrementAttempts() {
int newAttempts = getAttempts() + 1;
setAttempts(newAttempts);
return newAttempts;
}
//------------------------------------------------------- Good citizenship
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("{");
buf.append(getId());
buf.append(", ").append(getEntryTime());
buf.append(", ").append(getAttempts());
buf.append("}");
return buf.toString();
}
public boolean equals(Object other) {
if (other == this) {
return true;
}
if (!(other instanceof PingQueueEntry)) {
return false;
}
PingQueueEntry o = (PingQueueEntry)other;
return new EqualsBuilder()
.append(getEntryTime(), o.getEntryTime())
.append(getWebsite(), o.getWebsite())
.isEquals();
}
public int hashCode() {
return new HashCodeBuilder()
.append(getEntryTime())
.append(getWebsite())
.toHashCode();
}
}