View Javadoc

1   /*
2    * #%L
3    * Bitrepository Integrity 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  package org.bitrepository.integrityservice.collector;
26  
27  import org.bitrepository.access.ContributorQuery;
28  import org.bitrepository.access.getchecksums.GetChecksumsClient;
29  import org.bitrepository.access.getfileids.GetFileIDsClient;
30  import org.bitrepository.bitrepositoryelements.ChecksumSpecTYPE;
31  import org.bitrepository.client.eventhandler.EventHandler;
32  import org.slf4j.Logger;
33  import org.slf4j.LoggerFactory;
34  
35  import java.util.Collection;
36  
37  /**
38   * Integrity information collector that delegates collecting information to the clients.
39   * TODO split into two different collectors. One for collecting the file ids and one for the checksums.
40   */
41  public class DelegatingIntegrityInformationCollector implements IntegrityInformationCollector {
42      /** The log.*/
43      private Logger log = LoggerFactory.getLogger(getClass());
44  
45      /** The client for retrieving file IDs. */
46      private final GetFileIDsClient getFileIDsClient;
47      /** The client for retrieving checksums. */
48      private final GetChecksumsClient getChecksumsClient;
49      /** The audit trail manager.*/
50      
51      /**
52       * @param getFileIDsClient The client for retrieving file IDs
53       * @param getChecksumsClient The client for retrieving checksums.
54       */
55      public DelegatingIntegrityInformationCollector(
56              GetFileIDsClient getFileIDsClient,
57              GetChecksumsClient getChecksumsClient) {
58          this.getFileIDsClient = getFileIDsClient;
59          this.getChecksumsClient = getChecksumsClient;
60      }
61  
62      @Override
63      public synchronized void getFileIDs(String collectionID, Collection<String> pillarIDs, String auditTrailInformation, 
64              ContributorQuery[] queries, EventHandler eventHandler) {
65          try {
66              getFileIDsClient.getFileIDs(collectionID, queries, null, null, eventHandler);
67          } catch (Exception e) {
68              // Barrier
69              log.error("Unexpected failure!", e);
70          }
71      }
72  
73      @Override
74      public synchronized void getChecksums(String collectionID, Collection<String> pillarIDs, ChecksumSpecTYPE checksumType, 
75              String auditTrailInformation, ContributorQuery[] queries, EventHandler eventHandler) {
76          try {
77              getChecksumsClient.getChecksums(collectionID, queries, null, checksumType, null, eventHandler,
78                      auditTrailInformation);
79          } catch (Exception e) {
80              log.error("Unexpected failure!", e);
81          }
82      }
83  }