Alexandria 2.31.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
CatalogFromTable.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012-2022 Euclid Science Ground Segment
3 *
4 * This library is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU Lesser General Public License as published by the Free
6 * Software Foundation; either version 3.0 of the License, or (at your option)
7 * any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 * details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
29#include "Table/CastVisitor.h"
30#include "Table/ColumnInfo.h"
31#include <vector>
32
33namespace Euclid {
34namespace SourceCatalog {
35
48
50
52
54
55 // Figure out the type of the first row, and then assume all following
56 // must be of the same
58
59 for (const auto& row : input_table) {
60
61 auto source_id = boost::apply_visitor(castVisitor, row[m_source_id_index]);
62
64 try {
67 [&row](const std::shared_ptr<AttributeFromRow>& attr) { return attr->createAttribute(row); });
69 throw Elements::Exception() << "Parsing error while parsing the source with Id = " << source_id << " : "
70 << parsing_exception.what();
71 } catch (const std::exception& e) {
72 throw Elements::Exception() << "Error while parsing the source with Id = " << source_id << " : " << e.what();
73 } catch (...) {
74 throw Elements::Exception() << "Error while parsing the source with Id = " << source_id;
75 }
76
78 }
79
80 return Catalog{source_vector};
81}
82
83} // namespace SourceCatalog
84} // end of namespace Euclid
This type can be used together with boost::apply_visitor to cast boost::variant with an unknown under...
Definition Source.h:105
std::vector< std::shared_ptr< AttributeFromRow > > m_attribute_from_row_ptr_vector
CatalogFromTable(std::shared_ptr< Euclid::Table::ColumnInfo > column_info_ptr, const std::string &source_id_column_name, std::vector< std::shared_ptr< AttributeFromRow > > attribute_from_row_ptr_vector)
Euclid::SourceCatalog::Catalog createCatalog(const Euclid::Table::Table &input_table)
Catalog contains a container of sources.
Definition Catalog.h:47
Store the Right Ascension (Ra) and Delination (Dec) of a source in decimal degrees,...
Definition Coordinates.h:41
Represents a table.
Definition Table.h:49
T move(T... args)
T transform(T... args)