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.modify.replacefile.conversation;
26
27 import org.bitrepository.bitrepositorymessages.IdentifyPillarsForReplaceFileRequest;
28 import org.bitrepository.bitrepositorymessages.IdentifyPillarsForReplaceFileResponse;
29 import org.bitrepository.bitrepositorymessages.MessageResponse;
30 import org.bitrepository.client.conversation.ConversationContext;
31 import org.bitrepository.client.conversation.GeneralConversationState;
32 import org.bitrepository.client.conversation.IdentifyingState;
33 import org.bitrepository.common.exceptions.UnableToFinishException;
34
35
36
37
38 public class IdentifyPillarsForReplaceFile extends IdentifyingState {
39 private final ReplaceFileConversationContext context;
40
41
42
43
44 public IdentifyPillarsForReplaceFile(ReplaceFileConversationContext context) {
45 super(context.getContributors());
46 this.context = context;
47 }
48
49
50
51
52
53
54
55
56 @Override
57 protected void handleFailureResponse(MessageResponse msg) throws UnableToFinishException {
58
59 IdentifyPillarsForReplaceFileResponse response = (IdentifyPillarsForReplaceFileResponse) msg;
60 getContext().getMonitor().contributorFailed(
61 msg.getResponseInfo().getResponseText(), msg.getFrom(), msg.getResponseInfo().getResponseCode());
62 throw new UnableToFinishException("Can not continue with replace operation, as " + msg.getFrom() +
63 " is unable to perform the deletion.");
64 }
65
66 @Override
67 public GeneralConversationState getOperationState() {
68 return new ReplacingFile(context, getSelector().getSelectedComponents());
69 }
70
71 @Override
72 protected void sendRequest() {
73 IdentifyPillarsForReplaceFileRequest msg = new IdentifyPillarsForReplaceFileRequest();
74 initializeMessage(msg);
75 msg.setFileID(context.getFileID());
76 msg.setDestination(context.getSettings().getCollectionDestination());
77 context.getMessageSender().sendMessage(msg);
78 context.getMonitor().identifyRequestSent("Identifying pillars for replace file");
79 }
80
81 @Override
82 protected ConversationContext getContext() {
83 return context;
84 }
85
86 @Override
87 protected String getPrimitiveName() {
88 return "IdentifyPillarsForReplaceFile";
89 }
90
91 @Override
92 protected boolean canFinish() {
93 return (getOutstandingComponents().isEmpty());
94 }
95
96 @Override
97 protected void checkForChecksumPillar(MessageResponse msg) {
98 IdentifyPillarsForReplaceFileResponse response = (IdentifyPillarsForReplaceFileResponse) msg;
99 if (response.getPillarChecksumSpec() != null) {
100 context.addChecksumPillar(response.getPillarID());
101 }
102 }
103 }