-/* $Id: filter_virt_db.cpp,v 1.47 2006-11-29 13:00:54 marc Exp $
- Copyright (c) 2005-2006, Index Data.
+/* This file is part of Metaproxy.
+ Copyright (C) 2005-2008 Index Data
- See the LICENSE file for details
- */
+Metaproxy 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 2, or (at your option) any later
+version.
+
+Metaproxy 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, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
#include "config.hpp"
map_it = m_p->m_maps.find(mp::util::database_name_normalize(*db_it));
if (map_it == m_p->m_maps.end()) // database not found
{
- error_code = YAZ_BIB1_DATABASE_UNAVAILABLE;
+ error_code = YAZ_BIB1_DATABASE_DOES_NOT_EXIST;
addinfo = *db_it;
BackendPtr ptr;
return ptr;
}
std::list<std::string>::const_iterator t_it =
map_it->second.m_targets.begin();
- for (; t_it != map_it->second.m_targets.end(); t_it++)
- targets_dedup[*t_it] = true;
+ for (; t_it != map_it->second.m_targets.end(); t_it++) {
+ if (!targets_dedup[*t_it])
+ {
+ targets_dedup[*t_it] = true;
+ b->m_targets.push_back(*t_it);
+ }
+ }
// see if we have a route conflict.
if (!first_route && b->m_route != map_it->second.m_route)
b->m_route = map_it->second.m_route;
first_route = false;
}
- std::map<std::string,bool>::const_iterator tm_it = targets_dedup.begin();
- for (; tm_it != targets_dedup.end(); tm_it++)
- b->m_targets.push_back(tm_it->first);
-
return b;
}
}
if (!*res->result)
{
+ error_code = YAZ_BIB1_DATABASE_UNAVAILABLE;
mp::util::get_init_diagnostics(res, error_code, addinfo);
BackendPtr null;
return null;
{
// see which target it corresponds to.. (if any)
std::map<std::string,VirtualDB::Map>::const_iterator map_it;
- map_it = m_p->m_maps.find(*db_it);
+
+ map_it = m_p->m_maps.find(mp::util::database_name_normalize(*db_it));
if (map_it != m_p->m_maps.end())
{
VirtualDB::Map m = map_it->second;
}
-void mp::filter::VirtualDB::configure(const xmlNode * ptr)
+void mp::filter::VirtualDB::configure(const xmlNode * ptr, bool test_only)
{
for (ptr = ptr->children; ptr; ptr = ptr->next)
{