1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.bitrepository.access.getfile.conversation;
26
27 import java.util.Collection;
28 import java.util.HashSet;
29 import org.bitrepository.bitrepositorymessages.GetFileRequest;
30 import org.bitrepository.bitrepositorymessages.MessageResponse;
31 import org.bitrepository.client.conversation.ConversationContext;
32 import org.bitrepository.client.conversation.PerformingOperationState;
33 import org.bitrepository.client.conversation.selector.SelectedComponentInfo;
34 import org.bitrepository.client.eventhandler.ContributorCompleteEvent;
35 import org.bitrepository.common.exceptions.UnableToFinishException;
36
37
38
39
40
41
42
43
44 class GettingFile extends PerformingOperationState {
45 private final GetFileConversationContext context;
46 private final SelectedComponentInfo selectedPillar;
47
48
49
50
51
52 public GettingFile(GetFileConversationContext context, SelectedComponentInfo pillar) {
53 super(pillar.getID());
54 this.context = context;
55 this.selectedPillar = pillar;
56 Collection<String> contributors = new HashSet<String>();
57 contributors.add(pillar.getID());
58 }
59
60 @Override
61 protected void sendRequest() {
62 GetFileRequest msg = new GetFileRequest();
63 initializeMessage(msg);
64 msg.setFileAddress(context.getUrlForResult().toExternalForm());
65 msg.setFileID(context.getFileID());
66 msg.setFilePart(context.getFilePart());
67 msg.setPillarID(selectedPillar.getID());
68 msg.setDestination(selectedPillar.getDestination());
69 context.getMonitor().requestSent("Sending GetFileRequest to ", selectedPillar.toString());
70 context.getMessageSender().sendMessage(msg);
71 }
72
73 @Override
74 protected boolean handleFailureResponse(MessageResponse msg) throws UnableToFinishException {
75 getContext().getMonitor().contributorFailed(
76 msg.getResponseInfo().getResponseText(), msg.getFrom(), msg.getResponseInfo().getResponseCode());
77 throw new UnableToFinishException("Failed to get file from " + msg.getFrom() +
78 ", " + msg.getResponseInfo());
79 }
80
81 @Override
82 protected void generateContributorCompleteEvent(MessageResponse msg) {
83 getContext().getMonitor().contributorComplete(new ContributorCompleteEvent(msg.getFrom(), msg.getCollectionID()));
84 }
85
86 @Override
87 protected ConversationContext getContext() {
88 return context;
89 }
90
91 @Override
92 protected String getPrimitiveName() {
93 return "GetFile";
94 }
95 }