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.getfileids;
26
27 import org.bitrepository.access.ContributorQuery;
28 import org.bitrepository.access.ContributorQueryUtils;
29 import org.bitrepository.access.getfileids.conversation.GetFileIDsConversationContext;
30 import org.bitrepository.access.getfileids.conversation.IdentifyPillarsForGetFileIDs;
31 import org.bitrepository.client.AbstractClient;
32 import org.bitrepository.client.conversation.mediator.ConversationMediator;
33 import org.bitrepository.client.eventhandler.EventHandler;
34 import org.bitrepository.common.ArgumentValidator;
35 import org.bitrepository.common.settings.Settings;
36 import org.bitrepository.common.utils.SettingsUtils;
37 import org.bitrepository.protocol.messagebus.MessageBus;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41 import java.net.URL;
42 import java.util.Arrays;
43
44
45
46
47
48
49
50
51 public class ConversationBasedGetFileIDsClient extends AbstractClient implements GetFileIDsClient {
52 private final Logger log = LoggerFactory.getLogger(getClass());
53
54
55
56
57 public ConversationBasedGetFileIDsClient(MessageBus messageBus, ConversationMediator conversationMediator,
58 Settings settings, String clientID) {
59 super(settings, conversationMediator, messageBus, clientID);
60 }
61
62 @Override
63 public void getFileIDs(
64 String collectionID,
65 ContributorQuery[] contributorQueries,
66 String fileID,
67 URL addressForResult,
68 EventHandler eventHandler) {
69 ArgumentValidator.checkNotNullOrEmpty(collectionID, "collectionID");
70 validateFileID(fileID);
71 if (contributorQueries == null) {
72 contributorQueries = ContributorQueryUtils.createFullContributorQuery(
73 SettingsUtils.getPillarIDsForCollection(collectionID));
74 }
75
76 log.info("Requesting the fileIDs for file '" + fileID + "' with query "+
77 Arrays.asList(contributorQueries) + ". " +
78 (addressForResult != null ? "The result should be uploaded to '" + addressForResult + "'." : ""));
79
80 GetFileIDsConversationContext context = new GetFileIDsConversationContext(
81 collectionID, contributorQueries, fileID, addressForResult, settings, messageBus, clientID,
82 ContributorQueryUtils.getContributors(contributorQueries), eventHandler);
83
84 startConversation(context, new IdentifyPillarsForGetFileIDs(context));
85 }
86 }