/*
- * jSite2 - Request.java -
- * Copyright © 2008 David Roden
+ * jSite-next - Request.java -
+ * Copyright © 2009 David Roden
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
package net.pterodactylus.jsite.core;
-import net.pterodactylus.util.beans.AbstractBean;
+import net.pterodactylus.jsite.util.IdGenerator;
+import net.pterodactylus.util.number.Hex;
/**
- * A request is an ongoing download or upload reported by the freenet node.
- *
- * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
+ * Wraps a request that is executed by the Freenet node.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
-public class Request extends AbstractBean {
-
- /**
- * The type of a request.
- *
- * @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
- */
- public enum Type {
-
- /** Type of request is unknown. */
- unknown,
-
- /** The request is a Get request. */
- get,
-
- /** The request is a Put request. */
- put,
-
- /** The request is a PutDir request. */
- putDir
-
- }
-
- /** Name of the “type” property. */
- public static final String PROPERTY_TYPE = "type";
-
- /** 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";
+public class Request {
- /** Name of the “total blocks” property. */
- public static final String PROPERTY_TOTAL_BLOCKS = "totalBlocks";
-
- /** Name of the “required blocks” property. */
- public static final String PROPERTY_REQUIRED_BLOCKS = "requiredBlocks";
-
- /** Name of the “successful blocks” property. */
- public static final String PROPERTY_SUCCESSFUL_BLOCKS = "successfulBlocks";
-
- /** Name of the “failed blocks” property. */
- public static final String PROPERTY_FAILED_BLOCKS = "failedBlocks";
-
- /** Name of the “fatally failed blocks” property. */
- public static final String PROPERTY_FATALLY_FAILED_BLOCKS = "fatallyFailedBlocks";
-
- /** Name of the “total finalized” property. */
- public static final String PROPERTY_TOTAL_FINALIZED = "totalFinalized";
-
- /** The node the request belongs to. */
- private final Node node;
-
- /** The identifier of the request. */
- private final String identifier;
-
- /** The type of the request. */
- private Type type;
+ /** The ID of the request. */
+ private final String id;
/** 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;
-
- /** The required number of blocks. */
- private int requiredBlocks;
-
- /** The number of successful blocks. */
- private int successfulBlocks;
-
- /** The number of failedBlocks. */
- private int failedBlocks;
-
- /** The number of fatally failed blocks. */
- private int fatallyFailedBlocks;
-
- /** Whether the total number has been finalized. */
- private boolean totalFinalized;
-
- /**
- * Creates a new request with the given identifier.
- *
- * @param node
- * The node the request belongs to
- * @param identifier
- * The identifier of the request
- */
- Request(Node node, String identifier) {
- this.node = node;
- this.identifier = identifier;
- }
-
- //
- // EVENT MANAGEMENT
- //
-
/**
- * Returns the node the request belongs to.
- *
- * @return The node the request belongs to
+ * Creates a new request with a random ID.
*/
- public Node getNode() {
- return node;
+ public Request() {
+ this(Hex.toHex(IdGenerator.generateId()));
}
/**
- * Returns the identifier of the request. It is unique per node.
- *
- * @return The identifier of the request
+ * Creates a new request.
+ *
+ * @param id
+ * The ID of the request
*/
- public String getIdentifier() {
- return identifier;
+ public Request(String id) {
+ this.id = id;
}
/**
- * Returns the type of the request.
- *
- * @return The type of the request
+ * Returns the ID of the request.
+ *
+ * @return The request’s ID
*/
-
- public Type getType() {
- return type;
- }
-
- /**
- * Sets the type of the request.
- *
- * @param type
- * The type of the request
- */
- void setType(Type type) {
- Type oldType = this.type;
- this.type = type;
- fireIfPropertyChanged(PROPERTY_TYPE, oldType, type);
+ public String getId() {
+ return id;
}
/**
* Returns the client token of the request.
- *
- * @return The client token of the request
+ *
+ * @return The request’s client token
*/
public String getClientToken() {
return clientToken;
}
/**
- * Sets the client token of the request.
- *
+ * Sets the client token of the request
+ *
* @param clientToken
- * The client token of the request
+ * The request’s new client token
*/
- void setClientToken(String clientToken) {
- String oldClientToken = this.clientToken;
+ public void setClientToken(String clientToken) {
this.clientToken = clientToken;
- fireIfPropertyChanged(PROPERTY_CLIENT_TOKEN, oldClientToken, clientToken);
- }
-
- /**
- * Returns whether the request has finished.
- *
- * @see #isSuccessful()
- * @return <code>true</code> if the request is finished,
- * <code>false</code> otherwise
- */
- public boolean isFinished() {
- return finished;
- }
-
- /**
- * Sets whether the request has finished.
- *
- * @param finished
- * <code>true</code> if the request has finished,
- * <code>false</code> 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 <code>true</code>.
- *
- * @return <code>true</code> if the request finished successfully,
- * <code>false</code> otherwise
- */
- public boolean isSuccessful() {
- return successful;
- }
-
- /**
- * Sets whether this request finished successfully.
- *
- * @param successful
- * <code>true</code> if the request finished successfully,
- * <code>false</code> 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 <code>true</code> if the data is already fetchable,
- * <code>false</code> 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
- * <code>true</code> if the data is already fetchable,
- * <code>false</code> 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 <code>true</code> this value may
- * change!
- *
- * @return The total number of blocks of a request
- */
- public int getTotalBlocks() {
- return totalBlocks;
- }
-
- /**
- * Sets the total number of blocks of a request.
- *
- * @param totalBlocks
- * The total number of blocks
- */
- void setTotalBlocks(int totalBlocks) {
- int oldTotalBlocks = this.totalBlocks;
- this.totalBlocks = totalBlocks;
- fireIfPropertyChanged(PROPERTY_TOTAL_BLOCKS, oldTotalBlocks, totalBlocks);
- }
-
- /**
- * @return the requiredBlocks
- */
- public int getRequiredBlocks() {
- return requiredBlocks;
- }
-
- /**
- * @param requiredBlocks
- * the requiredBlocks to set
- */
- void setRequiredBlocks(int requiredBlocks) {
- int oldRequiredBlocks = this.requiredBlocks;
- this.requiredBlocks = requiredBlocks;
- fireIfPropertyChanged(PROPERTY_REQUIRED_BLOCKS, oldRequiredBlocks, requiredBlocks);
- }
-
- /**
- * @return the successfulBlocks
- */
- public int getSuccessfulBlocks() {
- return successfulBlocks;
- }
-
- /**
- * @param successfulBlocks
- * the successfulBlocks to set
- */
- void setSuccessfulBlocks(int successfulBlocks) {
- int oldSuccessfulBlocks = this.successfulBlocks;
- this.successfulBlocks = successfulBlocks;
- fireIfPropertyChanged(PROPERTY_SUCCESSFUL_BLOCKS, oldSuccessfulBlocks, successfulBlocks);
- }
-
- /**
- * @return the failedBlocks
- */
- public int getFailedBlocks() {
- return failedBlocks;
- }
-
- /**
- * @param failedBlocks
- * the failedBlocks to set
- */
- void setFailedBlocks(int failedBlocks) {
- int oldFailedBlocks = this.failedBlocks;
- this.failedBlocks = failedBlocks;
- fireIfPropertyChanged(PROPERTY_FAILED_BLOCKS, oldFailedBlocks, failedBlocks);
- }
-
- /**
- * @return the fatallyFailedBlocks
- */
- public int getFatallyFailedBlocks() {
- return fatallyFailedBlocks;
- }
-
- /**
- * @param fatallyFailedBlocks
- * the fatallyFailedBlocks to set
- */
- void setFatallyFailedBlocks(int fatallyFailedBlocks) {
- int oldFatallyFailedBlocks = this.fatallyFailedBlocks;
- this.fatallyFailedBlocks = fatallyFailedBlocks;
- fireIfPropertyChanged(PROPERTY_FATALLY_FAILED_BLOCKS, oldFatallyFailedBlocks, fatallyFailedBlocks);
- }
-
- /**
- * @return the totalFinalized
- */
- public boolean isTotalFinalized() {
- return totalFinalized;
- }
-
- /**
- * @param totalFinalized
- * the totalFinalized to set
- */
- void setTotalFinalized(boolean totalFinalized) {
- boolean oldTotalFinalized = this.totalFinalized;
- this.totalFinalized = totalFinalized;
- fireIfPropertyChanged(PROPERTY_TOTAL_FINALIZED, oldTotalFinalized, totalFinalized);
}
}