Add default constructor that creates a random ID.
[jSite2.git] / src / net / pterodactylus / jsite / core / Request.java
index 2c79856..15dae81 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * 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>
+ * 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 &lt;bombe@freenetproject.org&gt;
-        */
-       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);
        }
 
 }