add texts for project description
[jSite2.git] / src / net / pterodactylus / jsite / core / RequestManager.java
index 4efd9d9..d2b1bde 100644 (file)
@@ -28,13 +28,17 @@ import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import net.pterodactylus.fcp.highlevel.GetRequestResult;
 import net.pterodactylus.fcp.highlevel.HighLevelCallback;
 import net.pterodactylus.fcp.highlevel.HighLevelCallbackListener;
 import net.pterodactylus.fcp.highlevel.HighLevelClient;
 import net.pterodactylus.fcp.highlevel.HighLevelProgress;
 import net.pterodactylus.fcp.highlevel.HighLevelProgressListener;
+import net.pterodactylus.fcp.highlevel.PutDirRequestResult;
+import net.pterodactylus.fcp.highlevel.PutRequestResult;
 import net.pterodactylus.fcp.highlevel.RequestListResult;
 import net.pterodactylus.fcp.highlevel.RequestResult;
+import net.pterodactylus.jsite.core.Request.Type;
 import net.pterodactylus.util.logging.Logging;
 
 /**
@@ -158,7 +162,7 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                        logger.log(Level.WARNING, "no client for node: " + node);
                        return;
                }
-               final Map<String, Request> identifierRequests = new HashMap<String, Request>();
+               final Map<String, Request> identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
                nodeRequests.put(node, identifierRequests);
                HighLevelCallback<RequestListResult> requestListCallback = highLevelClient.getRequests();
                requestListCallback.addHighLevelCallbackListener(new HighLevelCallbackListener<RequestListResult>() {
@@ -173,10 +177,26 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                                        return;
                                }
                                for (RequestResult requestResult: requestListResult) {
-                                       Request request = new Request(node, requestResult.getIdentifier());
-                                       identifierRequests.put(requestResult.getIdentifier(), request);
-                                       /* TODO - fill request */
-                                       fireRequestAdded(request);
+                                               String identifier = requestResult.getIdentifier();
+                                               logger.log(Level.FINER, "got identifier: " + identifier);
+                                               Request request = identifierRequests.get(identifier);
+                                               if (request == null) {
+                                                       request = new Request(node, identifier);
+                                               }
+                                               if (request.getType() == null) {
+                                                       if (requestResult instanceof GetRequestResult) {
+                                                               request.setType(Type.get);
+                                                       } else if (requestResult instanceof PutRequestResult) {
+                                                               request.setType(Type.put);
+                                                       } else if (requestResult instanceof PutDirRequestResult) {
+                                                               request.setType(Type.putDir);
+                                                       }
+                                               }
+                                               if (identifierRequests.containsKey(identifier)) {
+                                                       continue;
+                                               }
+                                               identifierRequests.put(requestResult.getIdentifier(), request);
+                                               fireRequestAdded(request);
                                }
                        }
                });
@@ -266,13 +286,16 @@ public class RequestManager implements NodeListener, HighLevelProgressListener {
                Map<String, Request> identifierRequests = nodeRequests.get(node);
                if (identifierRequests == null) {
                        logger.warning("got node without request map: " + node);
-                       return;
+                       identifierRequests = Collections.synchronizedMap(new HashMap<String, Request>());
+                       nodeRequests.put(node, identifierRequests);
                }
                Request request = identifierRequests.get(identifier);
-               if (request == null) {
-                       logger.warning("got progress for unknown request: " + identifier);
-                       return;
-               }
+                       if (request == null) {
+                               logger.warning("got progress for unknown request: " + identifier);
+                               request = new Request(node, identifier);
+                               identifierRequests.put(identifier, request);
+                               fireRequestAdded(request);
+                       }
                request.setTotalBlocks(highLevelProgress.getTotalBlocks());
                request.setRequiredBlocks(highLevelProgress.getRequiredBlocks());
                request.setSuccessfulBlocks(highLevelProgress.getSuccessfulBlocks());