View Javadoc

1   /*
2    * #%L
3    * Bitmagasin modify client
4    * 
5    * $Id$
6    * $HeadURL$
7    * %%
8    * Copyright (C) 2010 - 2011 The State and University Library, The Royal Library and The State Archives, Denmark
9    * %%
10   * This program is free software: you can redistribute it and/or modify
11   * it under the terms of the GNU Lesser General Public License as 
12   * published by the Free Software Foundation, either version 2.1 of the 
13   * License, or (at your option) any later version.
14   * 
15   * This program is distributed in the hope that it will be useful,
16   * but WITHOUT ANY WARRANTY; without even the implied warranty of
17   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   * GNU General Lesser Public License for more details.
19   * 
20   * You should have received a copy of the GNU General Lesser Public 
21   * License along with this program.  If not, see
22   * <http://www.gnu.org/licenses/lgpl-2.1.html>.
23   * #L%
24   */
25  
26  package org.bitrepository.modify;
27  
28  import org.bitrepository.client.conversation.mediator.ConversationMediatorManager;
29  import org.bitrepository.common.settings.Settings;
30  import org.bitrepository.modify.deletefile.ConversationBasedDeleteFileClient;
31  import org.bitrepository.modify.deletefile.DeleteFileClient;
32  import org.bitrepository.modify.putfile.ConversationBasedPutFileClient;
33  import org.bitrepository.modify.putfile.PutFileClient;
34  import org.bitrepository.modify.replacefile.ConversationBasedReplaceFileClient;
35  import org.bitrepository.modify.replacefile.ReplaceFileClient;
36  import org.bitrepository.protocol.ProtocolComponentFactory;
37  import org.bitrepository.protocol.security.SecurityManager;
38  
39  /**
40   * Factory class for the access module. 
41   * Instantiates the instances of the interfaces within this module.
42   */
43  public final class ModifyComponentFactory {
44      /** The singleton instance. */
45      private static ModifyComponentFactory instance;
46  
47      /**
48       * Instantiation of this singleton.
49       * 
50       * @return The singleton instance of this factory class.
51       */
52      public static synchronized ModifyComponentFactory getInstance() {
53          if(instance == null) {
54              instance = new ModifyComponentFactory();
55          }
56          return instance;
57      }
58  
59      /**
60       * Private constructor for initialisation of the singleton.
61       */
62      private ModifyComponentFactory() {}
63  
64      /**
65       * Method for initialising the PutClient.
66       * @return The configured PutClient.
67       */
68      public PutFileClient retrievePutClient(Settings settings, SecurityManager securityManager, String clientID) {
69          return new ConversationBasedPutFileClient(
70                  ProtocolComponentFactory.getInstance().getMessageBus(settings, securityManager), 
71                  ConversationMediatorManager.getConversationMediator(settings, securityManager), 
72                  settings, clientID);
73      }
74      
75      /**
76       * @param settings The settings for the DeleteFileClient.
77       * @return The requested DeleteClient.
78       */
79      public DeleteFileClient retrieveDeleteFileClient(Settings settings, SecurityManager securityManager, String clientID) {
80          return new ConversationBasedDeleteFileClient(
81                  ProtocolComponentFactory.getInstance().getMessageBus(settings, securityManager), 
82                  ConversationMediatorManager.getConversationMediator(settings, securityManager), 
83                  settings, clientID);
84      }
85          
86      /**
87       * @param settings The settings for the DeleteFileClient.
88       * @return The requested DeleteClient.
89       */
90      public ReplaceFileClient retrieveReplaceFileClient(Settings settings, SecurityManager securityManager, String clientID) {
91          return new ConversationBasedReplaceFileClient(
92                  ProtocolComponentFactory.getInstance().getMessageBus(settings, securityManager), 
93                  ConversationMediatorManager.getConversationMediator(settings, securityManager), 
94                  settings, clientID);
95      }
96  }