Commit 3fd17f30 authored by Eric Cano's avatar Eric Cano
Browse files

Merge remote-tracking branch 'origin/master' into repack-dev

Conflicts:
	scheduler/OStoreDB/OStoreDB.hpp
	scheduler/OStoreDB/OStoreDBFactory.hpp
	scheduler/OStoreDB/QueueItor.cpp
	scheduler/Scheduler.cpp
parents 30667345 512f492d
......@@ -67,7 +67,7 @@ ArchiveFileItor &ArchiveFileItor::operator=(ArchiveFileItor &&rhs) {
//------------------------------------------------------------------------------
// hasMore
//------------------------------------------------------------------------------
bool ArchiveFileItor::hasMore() {
bool ArchiveFileItor::hasMore() const {
if(nullptr == m_impl) {
throw exception::Exception(std::string(__FUNCTION__) + " failed: "
"This iterator is invalid");
......
......@@ -84,7 +84,7 @@ public:
/**
* Returns true if a call to next would return another archive file.
*/
bool hasMore();
bool hasMore() const;
/**
* Returns the next archive or throws an exception if there isn't one.
......
......@@ -43,8 +43,9 @@ set (CATALOGUE_LIB_SRC_FILES
TapeFileWritten.cpp
TapeItemImplementation.cpp
TapePool.cpp
RdbmsArchiveFileItorImpl.cpp
RdbmsCatalogue.cpp
RdbmsCatalogueGetArchiveFilesForRepackItor.cpp
RdbmsCatalogueGetArchiveFilesItor.cpp
SchemaCreatingSqliteCatalogue.cpp
SqliteCatalogue.cpp
SqliteCatalogueFactory.cpp
......
......@@ -487,7 +487,7 @@ public:
* @param searchCriteria The search criteria.
* @return The archive files.
*/
virtual ArchiveFileItor getArchiveFiles(
virtual ArchiveFileItor getArchiveFilesItor(
const TapeFileSearchCriteria &searchCriteria = TapeFileSearchCriteria()) const = 0;
/**
......@@ -504,6 +504,20 @@ public:
const uint64_t startFSeq,
const uint64_t maxNbFiles) const = 0;
/**
* Returns all the tape copies (no matter their VIDs) of the archive files
* associated with the tape files on the specified tape in FSEQ order
* starting at the specified startFSeq.
*
* @param vid The volume identifier of the tape.
* @param startFSeq The file sequence number of the first file. Please note
* that there might not be a file with this exact file sequence number.
* @return The specified files in FSEQ order.
*/
virtual ArchiveFileItor getArchiveFilesForRepackItor(
const std::string &vid,
const uint64_t startFSeq) const = 0;
/**
* Returns a summary of the tape files that meet the specified search
* criteria.
......
......@@ -337,14 +337,18 @@ public:
return retryOnLostConnection(m_log, [&]{return m_catalogue->modifyMountPolicyComment(admin, name, comment);}, m_maxTriesToConnect);
}
ArchiveFileItor getArchiveFiles(const TapeFileSearchCriteria &searchCriteria = TapeFileSearchCriteria()) const override {
return retryOnLostConnection(m_log, [&]{return m_catalogue->getArchiveFiles(searchCriteria);}, m_maxTriesToConnect);
ArchiveFileItor getArchiveFilesItor(const TapeFileSearchCriteria &searchCriteria = TapeFileSearchCriteria()) const override {
return retryOnLostConnection(m_log, [&]{return m_catalogue->getArchiveFilesItor(searchCriteria);}, m_maxTriesToConnect);
}
std::list<common::dataStructures::ArchiveFile> getFilesForRepack(const std::string &vid, const uint64_t startFSeq, const uint64_t maxNbFiles) const override {
return retryOnLostConnection(m_log, [&]{return m_catalogue->getFilesForRepack(vid, startFSeq, maxNbFiles);}, m_maxTriesToConnect);
}
ArchiveFileItor getArchiveFilesForRepackItor(const std::string &vid, const uint64_t startFSeq) const override {
return retryOnLostConnection(m_log, [&]{return m_catalogue->getArchiveFilesForRepackItor(vid, startFSeq);}, m_maxTriesToConnect);
}
common::dataStructures::ArchiveFileSummary getTapeFileSummary(const TapeFileSearchCriteria &searchCriteria = TapeFileSearchCriteria()) const override {
return retryOnLostConnection(m_log, [&]{return m_catalogue->getTapeFileSummary(searchCriteria);}, m_maxTriesToConnect);
}
......
This diff is collapsed.
......@@ -56,8 +56,9 @@ public:
void filesWrittenToTape(const std::set<TapeItemWrittenPointer>& event) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
std::list<common::dataStructures::AdminUser> getAdminUsers() const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
common::dataStructures::ArchiveFile getArchiveFileById(const uint64_t id) override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
ArchiveFileItor getArchiveFiles(const TapeFileSearchCriteria& searchCriteria) const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
ArchiveFileItor getArchiveFilesItor(const TapeFileSearchCriteria& searchCriteria) const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
std::list<common::dataStructures::ArchiveFile> getFilesForRepack(const std::string &vid, const uint64_t startFSeq, const uint64_t maxNbFiles) const override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
ArchiveFileItor getArchiveFilesForRepackItor(const std::string &vid, const uint64_t startFSeq) const override { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
std::list<common::dataStructures::ArchiveRoute> getArchiveRoutes() const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
std::list<common::dataStructures::LogicalLibrary> getLogicalLibraries() const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
std::list<common::dataStructures::MountPolicy> getMountPolicies() const { throw exception::Exception(std::string("In ")+__PRETTY_FUNCTION__+": not implemented"); }
......
......@@ -17,8 +17,9 @@
*/
#include "catalogue/ArchiveFileRow.hpp"
#include "catalogue/RdbmsArchiveFileItorImpl.hpp"
#include "catalogue/RdbmsCatalogue.hpp"
#include "catalogue/RdbmsCatalogueGetArchiveFilesItor.hpp"
#include "catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.hpp"
#include "catalogue/retryOnLostConnection.hpp"
#include "catalogue/SqliteCatalogueSchema.hpp"
#include "catalogue/UserSpecifiedANonEmptyTape.hpp"
......@@ -4002,14 +4003,14 @@ void RdbmsCatalogue::checkTapeFileSearchCriteria(const TapeFileSearchCriteria &s
}
//------------------------------------------------------------------------------
// getArchiveFiles
// getArchiveFilesItor
//------------------------------------------------------------------------------
ArchiveFileItor RdbmsCatalogue::getArchiveFiles(const TapeFileSearchCriteria &searchCriteria) const {
ArchiveFileItor RdbmsCatalogue::getArchiveFilesItor(const TapeFileSearchCriteria &searchCriteria) const {
checkTapeFileSearchCriteria(searchCriteria);
try {
auto impl = new RdbmsArchiveFileItorImpl(m_log, m_archiveFileListingConnPool, searchCriteria);
auto impl = new RdbmsCatalogueGetArchiveFilesItor(m_log, m_archiveFileListingConnPool, searchCriteria);
return ArchiveFileItor(impl);
} catch(exception::UserError &) {
throw;
......@@ -4111,6 +4112,21 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getFilesForRepack
}
}
//------------------------------------------------------------------------------
// getArchiveFileItorForRepack
//------------------------------------------------------------------------------
ArchiveFileItor RdbmsCatalogue::getArchiveFilesForRepackItor(const std::string &vid, const uint64_t startFSeq) const {
try {
auto impl = new RdbmsCatalogueGetArchiveFilesForRepackItor(m_log, m_archiveFileListingConnPool, vid, startFSeq);
return ArchiveFileItor(impl);
} catch(exception::UserError &) {
throw;
} catch(exception::Exception &ex) {
ex.getMessage().str(std::string(__FUNCTION__) + ": " + ex.getMessage().str());
throw;
}
}
//------------------------------------------------------------------------------
// getTapeFileSummary
//------------------------------------------------------------------------------
......
......@@ -51,7 +51,7 @@ class ArchiveFileRow;
/**
* Forward declaration.
*/
class RdbmsArchiveFileItorImpl;
class RdbmsCatalogueGetArchiveFilesItor;
/**
* CTA catalogue implemented using a relational database backend.
......@@ -489,7 +489,7 @@ public:
* @param searchCriteria The search criteria.
* @return The archive files.
*/
ArchiveFileItor getArchiveFiles(const TapeFileSearchCriteria &searchCriteria) const override;
ArchiveFileItor getArchiveFilesItor(const TapeFileSearchCriteria &searchCriteria) const override;
/**
* Returns the specified files in tape file sequence order.
......@@ -505,6 +505,20 @@ public:
const uint64_t startFSeq,
const uint64_t maxNbFiles) const override;
/**
* Returns all the tape copies (no matter their VIDs) of the archive files
* associated with the tape files on the specified tape in FSEQ order
* starting at the specified startFSeq.
*
* @param vid The volume identifier of the tape.
* @param startFSeq The file sequence number of the first file. Please note
* that there might not be a file with this exact file sequence number.
* @return The specified files in FSEQ order.
*/
ArchiveFileItor getArchiveFilesForRepackItor(
const std::string &vid,
const uint64_t startFSeq) const override;
/**
* Returns a summary of the tape files that meet the specified search
* criteria.
......
/*
* The CERN Tape Archive (CTA) project
* Copyright (C) 2015 CERN
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "catalogue/ArchiveFileItor.hpp"
#include "catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.hpp"
#include "common/exception/Exception.hpp"
#include "common/exception/LostDatabaseConnection.hpp"
#include "common/exception/UserError.hpp"
namespace cta {
namespace catalogue {
namespace {
/**
* Populates an ArchiveFile object with the current column values of the
* specified result set.
*
* @param rset The result set to be used to populate the ArchiveFile object.
* @return The populated ArchiveFile object.
*/
static common::dataStructures::ArchiveFile populateArchiveFile(const rdbms::Rset &rset) {
rset.columnUint64("ARCHIVE_FILE_ID");
if(!rset.columnIsNull("VID")) {
rset.columnUint64("COPY_NB");
}
common::dataStructures::ArchiveFile archiveFile;
archiveFile.archiveFileID = rset.columnUint64("ARCHIVE_FILE_ID");
archiveFile.diskInstance = rset.columnString("DISK_INSTANCE_NAME");
archiveFile.diskFileId = rset.columnString("DISK_FILE_ID");
archiveFile.diskFileInfo.path = rset.columnString("DISK_FILE_PATH");
archiveFile.diskFileInfo.owner = rset.columnString("DISK_FILE_USER");
archiveFile.diskFileInfo.group = rset.columnString("DISK_FILE_GROUP");
archiveFile.diskFileInfo.recoveryBlob = rset.columnString("DISK_FILE_RECOVERY_BLOB");
archiveFile.fileSize = rset.columnUint64("SIZE_IN_BYTES");
archiveFile.checksumType = rset.columnString("CHECKSUM_TYPE");
archiveFile.checksumValue = rset.columnString("CHECKSUM_VALUE");
archiveFile.storageClass = rset.columnString("STORAGE_CLASS_NAME");
archiveFile.creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME");
archiveFile.reconciliationTime = rset.columnUint64("RECONCILIATION_TIME");
// If there is a tape file
if (!rset.columnIsNull("VID")) {
common::dataStructures::TapeFile tapeFile;
tapeFile.vid = rset.columnString("VID");
tapeFile.fSeq = rset.columnUint64("FSEQ");
tapeFile.blockId = rset.columnUint64("BLOCK_ID");
tapeFile.compressedSize = rset.columnUint64("COMPRESSED_SIZE_IN_BYTES");
tapeFile.copyNb = rset.columnUint64("COPY_NB");
tapeFile.creationTime = rset.columnUint64("TAPE_FILE_CREATION_TIME");
tapeFile.checksumType = archiveFile.checksumType; // Duplicated for convenience
tapeFile.checksumValue = archiveFile.checksumValue; // Duplicated for convenience
archiveFile.tapeFiles[rset.columnUint64("COPY_NB")] = tapeFile;
}
return archiveFile;
}
} // anonymous namespace
//------------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------------
RdbmsCatalogueGetArchiveFilesForRepackItor::RdbmsCatalogueGetArchiveFilesForRepackItor(
log::Logger &log,
rdbms::ConnPool &connPool,
const std::string &vid,
const uint64_t startFSeq):
m_log(log),
m_connPool(connPool),
m_rsetIsEmpty(true),
m_hasMoreHasBeenCalled(false),
m_archiveFileBuilder(log) {
try {
std::string sql =
"SELECT "
"ARCHIVE_FILE.ARCHIVE_FILE_ID AS ARCHIVE_FILE_ID,"
"ARCHIVE_FILE.DISK_INSTANCE_NAME AS DISK_INSTANCE_NAME,"
"ARCHIVE_FILE.DISK_FILE_ID AS DISK_FILE_ID,"
"ARCHIVE_FILE.DISK_FILE_PATH AS DISK_FILE_PATH,"
"ARCHIVE_FILE.DISK_FILE_USER AS DISK_FILE_USER,"
"ARCHIVE_FILE.DISK_FILE_GROUP AS DISK_FILE_GROUP,"
"ARCHIVE_FILE.DISK_FILE_RECOVERY_BLOB AS DISK_FILE_RECOVERY_BLOB,"
"ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES,"
"ARCHIVE_FILE.CHECKSUM_TYPE AS CHECKSUM_TYPE,"
"ARCHIVE_FILE.CHECKSUM_VALUE AS CHECKSUM_VALUE,"
"STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME,"
"ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME,"
"ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME,"
"TAPE_COPY.VID AS VID,"
"TAPE_COPY.FSEQ AS FSEQ,"
"TAPE_COPY.BLOCK_ID AS BLOCK_ID,"
"TAPE_COPY.COMPRESSED_SIZE_IN_BYTES AS COMPRESSED_SIZE_IN_BYTES,"
"TAPE_COPY.COPY_NB AS COPY_NB,"
"TAPE_COPY.CREATION_TIME AS TAPE_FILE_CREATION_TIME, "
"TAPE.TAPE_POOL_NAME AS TAPE_POOL_NAME "
"FROM "
"TAPE_FILE REPACK_TAPE "
"INNER JOIN TAPE_FILE TAPE_COPY ON "
"REPACK_TAPE.ARCHIVE_FILE_ID = TAPE_COPY.ARCHIVE_FILE_ID "
"INNER JOIN ARCHIVE_FILE ON "
"REPACK_TAPE.ARCHIVE_FILE_ID = ARCHIVE_FILE.ARCHIVE_FILE_ID "
"INNER JOIN STORAGE_CLASS ON "
"ARCHIVE_FILE.STORAGE_CLASS_ID = STORAGE_CLASS.STORAGE_CLASS_ID "
"INNER JOIN TAPE ON "
"TAPE_COPY.VID = TAPE.VID "
"WHERE "
"REPACK_TAPE.VID = :VID "
"AND "
"REPACK_TAPE.FSEQ >= :START_FSEQ "
"ORDER BY REPACK_TAPE.FSEQ";
m_conn = connPool.getConn();
m_stmt = m_conn.createStmt(sql);
m_stmt.bindString(":VID", vid);
m_stmt.bindUint64(":START_FSEQ", startFSeq);
m_rset = m_stmt.executeQuery();
m_rsetIsEmpty = !m_rset.next();
} catch(exception::UserError &) {
throw;
} catch(exception::Exception &ex) {
ex.getMessage().str(std::string(__FUNCTION__) + ": " + ex.getMessage().str());
throw;
}
}
//------------------------------------------------------------------------------
// destructor
//------------------------------------------------------------------------------
RdbmsCatalogueGetArchiveFilesForRepackItor::~RdbmsCatalogueGetArchiveFilesForRepackItor() {
}
//------------------------------------------------------------------------------
// hasMore
//------------------------------------------------------------------------------
bool RdbmsCatalogueGetArchiveFilesForRepackItor::hasMore() {
m_hasMoreHasBeenCalled = true;
if(m_rsetIsEmpty) {
// If there is an ArchiveFile object under construction
if(nullptr != m_archiveFileBuilder.getArchiveFile()) {
return true;
} else {
return false;
}
} else {
return true;
}
}
//------------------------------------------------------------------------------
// next
//------------------------------------------------------------------------------
common::dataStructures::ArchiveFile RdbmsCatalogueGetArchiveFilesForRepackItor::next() {
try {
if(!m_hasMoreHasBeenCalled) {
throw exception::Exception("hasMore() must be called before next()");
}
m_hasMoreHasBeenCalled = false;
// If there are no more rows in the result set
if(m_rsetIsEmpty) {
// There must be an ArchiveFile object currently under construction
if(nullptr == m_archiveFileBuilder.getArchiveFile()) {
throw exception::Exception("next() was called with no more rows in the result set and no ArchiveFile object"
" under construction");
}
// Return the ArchiveFile object that must now be complete and clear the
// ArchiveFile builder
auto tmp = *m_archiveFileBuilder.getArchiveFile();
m_archiveFileBuilder.clear();
return tmp;
}
while(true) {
auto archiveFile = populateArchiveFile(m_rset);
auto completeArchiveFile = m_archiveFileBuilder.append(archiveFile);
m_rsetIsEmpty = !m_rset.next();
// If the ArchiveFile object under construction is complete
if (nullptr != completeArchiveFile.get()) {
return *completeArchiveFile;
// The ArchiveFile object under construction is not complete
} else {
if(m_rsetIsEmpty) {
// There must be an ArchiveFile object currently under construction
if (nullptr == m_archiveFileBuilder.getArchiveFile()) {
throw exception::Exception("next() was called with no more rows in the result set and no ArchiveFile object"
" under construction");
}
// Return the ArchiveFile object that must now be complete and clear the
// ArchiveFile builder
auto tmp = *m_archiveFileBuilder.getArchiveFile();
m_archiveFileBuilder.clear();
return tmp;
}
}
}
} catch(exception::UserError &) {
throw;
} catch(exception::Exception &ex) {
ex.getMessage().str(std::string(__FUNCTION__) + ": " + ex.getMessage().str());
throw;
}
}
} // namespace catalogue
} // namespace cta
/*
* The CERN Tape Archive (CTA) project
* Copyright (C) 2015 CERN
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "catalogue/ArchiveFileBuilder.hpp"
#include "catalogue/ArchiveFileItorImpl.hpp"
#include "catalogue/TapeFileSearchCriteria.hpp"
#include "common/log/Logger.hpp"
#include "rdbms/ConnPool.hpp"
#include "rdbms/Stmt.hpp"
#include "rdbms/Rset.hpp"
namespace cta {
namespace catalogue {
/**
* RdbmsCatalogue::getArchiveFilesForRepack() implementation of
* ArchiveFileItorImpl.
*/
class RdbmsCatalogueGetArchiveFilesForRepackItor: public ArchiveFileItorImpl {
public:
/**
* Constructor.
*
* @param log Object representing the API to the CTA logging system.
* @param connPool The database connection pool.
* @param vid The volume identifier of the tape.
* @param startFSeq The file sequence number of the first file. Please note
* that there might not be a file with this exact file sequence number.
* @return The specified files in tape file sequence order.
*/
RdbmsCatalogueGetArchiveFilesForRepackItor(
log::Logger &log,
rdbms::ConnPool &connPool,
const std::string &vid,
const uint64_t startFSeq);
/**
* Destructor.
*/
~RdbmsCatalogueGetArchiveFilesForRepackItor() override;
/**
* Returns true if a call to next would return another archive file.
*/
bool hasMore() override;
/**
* Returns the next archive or throws an exception if there isn't one.
*/
common::dataStructures::ArchiveFile next() override;
private:
/**
* Object representing the API to the CTA logging system.
*/
log::Logger &m_log;
/**
* The database connection pool.
*/
rdbms::ConnPool &m_connPool;
/**
* True if the result set is empty.
*/
bool m_rsetIsEmpty;
/**
* True if hasMore() has been called and the corresponding call to next() has
* not.
*
* This member-variable is used to prevent next() being called before
* hasMore().
*/
bool m_hasMoreHasBeenCalled;
/**
* The database connection.
*/
rdbms::Conn m_conn;
/**
* The database statement.
*/
rdbms::Stmt m_stmt;
/**
* The result set of archive files that is to be iterated over.
*/
rdbms::Rset m_rset;
/**
* Builds ArchiveFile objects from a stream of tape files ordered by archive
* ID and then copy number.
*/
ArchiveFileBuilder m_archiveFileBuilder;
}; // class RdbmsCatalogueGetArchiveFilesForRepackItor
} // namespace catalogue
} // namespace cta
......@@ -17,7 +17,7 @@
*/
#include "catalogue/ArchiveFileItor.hpp"
#include "catalogue/RdbmsArchiveFileItorImpl.hpp"
#include "catalogue/RdbmsCatalogueGetArchiveFilesItor.hpp"
#include "common/exception/Exception.hpp"
#include "common/exception/LostDatabaseConnection.hpp"
#include "common/exception/UserError.hpp"
......@@ -76,7 +76,7 @@ namespace {
//------------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------------
RdbmsArchiveFileItorImpl::RdbmsArchiveFileItorImpl(
RdbmsCatalogueGetArchiveFilesItor::RdbmsCatalogueGetArchiveFilesItor(
log::Logger &log,
rdbms::ConnPool &connPool,
const TapeFileSearchCriteria &searchCriteria):
......@@ -239,13 +239,13 @@ RdbmsArchiveFileItorImpl::RdbmsArchiveFileItorImpl(
//------------------------------------------------------------------------------
// destructor
//------------------------------------------------------------------------------
RdbmsArchiveFileItorImpl::~RdbmsArchiveFileItorImpl() {
RdbmsCatalogueGetArchiveFilesItor::~RdbmsCatalogueGetArchiveFilesItor() {
}
//------------------------------------------------------------------------------
// hasMore
//------------------------------------------------------------------------------
bool RdbmsArchiveFileItorImpl::hasMore() {
bool RdbmsCatalogueGetArchiveFilesItor::hasMore() {
m_hasMoreHasBeenCalled = true;
if(m_rsetIsEmpty) {
......@@ -263,7 +263,7 @@ bool RdbmsArchiveFileItorImpl::hasMore() {
//------------------------------------------------------------------------------
// next
//------------------------------------------------------------------------------
common::dataStructures::ArchiveFile RdbmsArchiveFileItorImpl::next() {
common::dataStructures::ArchiveFile RdbmsCatalogueGetArchiveFilesItor::next() {
try {
if(!m_hasMoreHasBeenCalled) {
throw exception::Exception("hasMore() must be called before next()");
......
......@@ -30,9 +30,9 @@ namespace cta {
namespace catalogue {
/**
* Rdbms implementation of ArchiveFileItorImpl.
* RdbmsCatalogue::getArchiveFiles() implementation of ArchiveFileItorImpl.
*/
class RdbmsArchiveFileItorImpl: public ArchiveFileItorImpl {
class RdbmsCatalogueGetArchiveFilesItor: public ArchiveFileItorImpl {
public:
/**
......@@ -43,7 +43,7 @@ public:
* @param searchCriteria The search criteria to be used when listing archive
* files.
*/