X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fcore%2FRequest.java;h=a61bb94ef0a11f571890dcaac97e67c7e1d31d99;hb=c63257e8cc0ba1a5aca9364b22171abe7279d479;hp=4a65631cb9227350a878508d1ae18d3e776a0e6b;hpb=0e320607d8b5d526e0e40d8d369461161314c895;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/core/Request.java b/src/net/pterodactylus/jsite/core/Request.java index 4a65631..a61bb94 100644 --- a/src/net/pterodactylus/jsite/core/Request.java +++ b/src/net/pterodactylus/jsite/core/Request.java @@ -19,27 +19,19 @@ package net.pterodactylus.jsite.core; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import net.pterodactylus.util.beans.Comparer; +import net.pterodactylus.util.beans.AbstractBean; /** * A request is an ongoing download or upload reported by the freenet node. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ -public class Request { +public class Request extends AbstractBean { /** * The type of a request. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ public enum Type { @@ -63,6 +55,18 @@ public class Request { /** Name of the “client token” property. */ public static final String PROPERTY_CLIENT_TOKEN = "clientToken"; + /** Name of the “finished” property. */ + public static final String PROPERTY_FINISHED = "finished"; + + /** Name of the “successful” property. */ + public static final String PROPERTY_SUCCESSFUL = "successful"; + + /** Name of the “fetchable” property. */ + public static final String PROPERTY_FETCHABLE = "fetchable"; + + /** Name of the “URI” property. */ + public static final String PROPERTY_URI = "uri"; + /** Name of the “total blocks” property. */ public static final String PROPERTY_TOTAL_BLOCKS = "totalBlocks"; @@ -81,9 +85,6 @@ public class Request { /** Name of the “total finalized” property. */ public static final String PROPERTY_TOTAL_FINALIZED = "totalFinalized"; - /** Property change listeners. */ - private final List propertyChangeListeners = Collections.synchronizedList(new ArrayList()); - /** The node the request belongs to. */ private final Node node; @@ -96,6 +97,18 @@ public class Request { /** The client token of the request. */ private String clientToken; + /** Whether the request is finished. */ + private boolean finished; + + /** Whether the request was finished successfully. */ + private boolean successful; + + /** Whether the data is already fetchable (in case of put requests). */ + private boolean fetchable; + + /** The generated URI. */ + private String uri; + /** The total number of blocks. */ private int totalBlocks; @@ -116,7 +129,7 @@ public class Request { /** * Creates a new request with the given identifier. - * + * * @param node * The node the request belongs to * @param identifier @@ -132,49 +145,8 @@ public class Request { // /** - * Adds a property change listener. - * - * @param propertyChangeListener - * The property change listener to add - */ - public void addPropertyChangeListener(PropertyChangeListener propertyChangeListener) { - propertyChangeListeners.add(propertyChangeListener); - } - - /** - * Removes a property change listener. - * - * @param propertyChangeListener - * The property change listener to remove - */ - public void removePropertyChangeListener(PropertyChangeListener propertyChangeListener) { - propertyChangeListeners.remove(propertyChangeListener); - } - - /** - * Notifies all listeners that a property has changed. - * - * @param property - * The name of the property - * @param oldValue - * The old value of the property - * @param newValue - * The new value of the property - */ - private void firePropertyChange(String property, Object oldValue, Object newValue) { - PropertyChangeEvent propertyChangeEvent = new PropertyChangeEvent(this, property, oldValue, newValue); - for (PropertyChangeListener propertyChangeListener: propertyChangeListeners) { - propertyChangeListener.propertyChange(propertyChangeEvent); - } - } - - // - // ACCESSORS - // - - /** * Returns the node the request belongs to. - * + * * @return The node the request belongs to */ public Node getNode() { @@ -183,7 +155,7 @@ public class Request { /** * Returns the identifier of the request. It is unique per node. - * + * * @return The identifier of the request */ public String getIdentifier() { @@ -192,7 +164,7 @@ public class Request { /** * Returns the type of the request. - * + * * @return The type of the request */ @@ -202,22 +174,19 @@ public class Request { /** * Sets the type of the request. - * + * * @param type * The type of the request */ - - public void setType(Type type) { + void setType(Type type) { Type oldType = this.type; this.type = type; - if (!Comparer.equal(oldType, type)) { - firePropertyChange(PROPERTY_TYPE, oldType, type); - } + fireIfPropertyChanged(PROPERTY_TYPE, oldType, type); } /** * Returns the client token of the request. - * + * * @return The client token of the request */ public String getClientToken() { @@ -226,23 +195,113 @@ public class Request { /** * Sets the client token of the request. - * + * * @param clientToken * The client token of the request */ - public void setClientToken(String clientToken) { + void setClientToken(String clientToken) { String oldClientToken = this.clientToken; this.clientToken = clientToken; - if (!Comparer.equal(oldClientToken, clientToken)) { - firePropertyChange(PROPERTY_CLIENT_TOKEN, oldClientToken, clientToken); - } + fireIfPropertyChanged(PROPERTY_CLIENT_TOKEN, oldClientToken, clientToken); + } + + /** + * Returns whether the request has finished. + * + * @see #isSuccessful() + * @return true if the request is finished, + * false otherwise + */ + public boolean isFinished() { + return finished; + } + + /** + * Sets whether the request has finished. + * + * @param finished + * true if the request has finished, + * false otherwise + */ + void setFinished(boolean finished) { + boolean oldFinished = this.finished; + this.finished = finished; + firePropertyChange(PROPERTY_FINISHED, oldFinished, finished); + } + + /** + * Returns whether the request finished successfully. This value will only + * have meaning if {@link #isFinished()} returns true. + * + * @return true if the request finished successfully, + * false otherwise + */ + public boolean isSuccessful() { + return successful; + } + + /** + * Sets whether this request finished successfully. + * + * @param successful + * true if the request finished successfully, + * false otherwise + */ + void setSuccessful(boolean successful) { + boolean oldSuccessful = this.successful; + this.successful = successful; + firePropertyChange(PROPERTY_SUCCESSFUL, oldSuccessful, successful); + } + + /** + * Returns whether the data inserted by this {@link Type#put} or + * {@link Type#putDir} request is already fetchable by other clients. + * + * @return true if the data is already fetchable, + * false otherwise + */ + public boolean isFetchable() { + return fetchable; + } + + /** + * Sets whether the data inserted by this {@link Type#put} or + * {@link Type#putDir} request is already fetchable by other clients. + * + * @param fetchable + * true if the data is already fetchable, + * false otherwise + */ + void setFetchable(boolean fetchable) { + boolean oldFetchable = this.fetchable; + this.fetchable = fetchable; + firePropertyChange(PROPERTY_FETCHABLE, oldFetchable, fetchable); + } + + /** + * Returns the URI generated by this request. + * + * @return The generated URI + */ + public String getURI() { + return uri; + } + + /** + * Sets the URI generated by this request. + * + * @param uri + * The generated URI + */ + void setURI(String uri) { + this.uri = uri; } /** * Returns the total number of blocks of a request. Until * {@link #isTotalFinalized()} returns true this value may * change! - * + * * @return The total number of blocks of a request */ public int getTotalBlocks() { @@ -251,16 +310,14 @@ public class Request { /** * Sets the total number of blocks of a request. - * + * * @param totalBlocks * The total number of blocks */ - public void setTotalBlocks(int totalBlocks) { + void setTotalBlocks(int totalBlocks) { int oldTotalBlocks = this.totalBlocks; this.totalBlocks = totalBlocks; - if (oldTotalBlocks != totalBlocks) { - firePropertyChange(PROPERTY_TOTAL_BLOCKS, oldTotalBlocks, totalBlocks); - } + fireIfPropertyChanged(PROPERTY_TOTAL_BLOCKS, oldTotalBlocks, totalBlocks); } /** @@ -274,12 +331,10 @@ public class Request { * @param requiredBlocks * the requiredBlocks to set */ - public void setRequiredBlocks(int requiredBlocks) { + void setRequiredBlocks(int requiredBlocks) { int oldRequiredBlocks = this.requiredBlocks; this.requiredBlocks = requiredBlocks; - if (oldRequiredBlocks != requiredBlocks) { - firePropertyChange(PROPERTY_REQUIRED_BLOCKS, oldRequiredBlocks, requiredBlocks); - } + fireIfPropertyChanged(PROPERTY_REQUIRED_BLOCKS, oldRequiredBlocks, requiredBlocks); } /** @@ -293,12 +348,10 @@ public class Request { * @param successfulBlocks * the successfulBlocks to set */ - public void setSuccessfulBlocks(int successfulBlocks) { + void setSuccessfulBlocks(int successfulBlocks) { int oldSuccessfulBlocks = this.successfulBlocks; this.successfulBlocks = successfulBlocks; - if (oldSuccessfulBlocks != successfulBlocks) { - firePropertyChange(PROPERTY_SUCCESSFUL_BLOCKS, oldSuccessfulBlocks, successfulBlocks); - } + fireIfPropertyChanged(PROPERTY_SUCCESSFUL_BLOCKS, oldSuccessfulBlocks, successfulBlocks); } /** @@ -312,12 +365,10 @@ public class Request { * @param failedBlocks * the failedBlocks to set */ - public void setFailedBlocks(int failedBlocks) { + void setFailedBlocks(int failedBlocks) { int oldFailedBlocks = this.failedBlocks; this.failedBlocks = failedBlocks; - if (oldFailedBlocks != failedBlocks) { - firePropertyChange(PROPERTY_FAILED_BLOCKS, oldFailedBlocks, failedBlocks); - } + fireIfPropertyChanged(PROPERTY_FAILED_BLOCKS, oldFailedBlocks, failedBlocks); } /** @@ -331,12 +382,10 @@ public class Request { * @param fatallyFailedBlocks * the fatallyFailedBlocks to set */ - public void setFatallyFailedBlocks(int fatallyFailedBlocks) { + void setFatallyFailedBlocks(int fatallyFailedBlocks) { int oldFatallyFailedBlocks = this.fatallyFailedBlocks; this.fatallyFailedBlocks = fatallyFailedBlocks; - if (oldFatallyFailedBlocks != fatallyFailedBlocks) { - firePropertyChange(PROPERTY_FATALLY_FAILED_BLOCKS, oldFatallyFailedBlocks, fatallyFailedBlocks); - } + fireIfPropertyChanged(PROPERTY_FATALLY_FAILED_BLOCKS, oldFatallyFailedBlocks, fatallyFailedBlocks); } /** @@ -350,12 +399,10 @@ public class Request { * @param totalFinalized * the totalFinalized to set */ - public void setTotalFinalized(boolean totalFinalized) { + void setTotalFinalized(boolean totalFinalized) { boolean oldTotalFinalized = this.totalFinalized; this.totalFinalized = totalFinalized; - if (oldTotalFinalized != totalFinalized) { - firePropertyChange(PROPERTY_TOTAL_FINALIZED, oldTotalFinalized, totalFinalized); - } + fireIfPropertyChanged(PROPERTY_TOTAL_FINALIZED, oldTotalFinalized, totalFinalized); } }