-/* $Id: filter_virt_db.cpp,v 1.47 2006-11-29 13:00:54 marc Exp $
- Copyright (c) 2005-2006, Index Data.
+/* $Id: filter_virt_db.cpp,v 1.53 2007-11-26 21:45:08 adam Exp $
+ Copyright (c) 2005-2007, Index Data.
+
+This file is part of Metaproxy.
+
+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 Metaproxy; see the file LICENSE. If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+ */
+/* $Id: filter_virt_db.cpp,v 1.53 2007-11-26 21:45:08 adam Exp $
+ Copyright (c) 2005-2007, Index Data.
See the LICENSE file for details
*/
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;