DP3
ParmDBCasa.h
Go to the documentation of this file.
1 // ParmDBCasa.h: Class to hold parameters in a Casa table
2 //
3 // Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
4 // SPDX-License-Identifier: GPL-3.0-or-later
5 
9 
10 #ifndef LOFAR_PARMDB_PARMDBCASA_H
11 #define LOFAR_PARMDB_PARMDBCASA_H
12 
13 #include "ParmDB.h"
14 
15 #include <casacore/casa/Arrays/Array.h>
16 #include <casacore/tables/Tables/Table.h>
17 #include <casacore/tables/Tables/ArrayColumn.h>
18 
19 #include "common/Types.h"
20 
21 namespace dp3 {
22 namespace parmdb {
23 
26 
28 class ParmDBCasa : public ParmDBRep {
29  public:
30  explicit ParmDBCasa(const std::string& tableName, bool forceNew = false);
31 
32  ~ParmDBCasa() override;
33 
35  void flush(bool fsync) override;
36 
41  void lock(bool lockForWrite) override;
42  void unlock() override;
44 
49  Box getRange(const std::string& parmNamePattern) const override;
50  Box getRange(const std::vector<std::string>& parmNames) const override;
52 
54  void setDefaultSteps(const std::vector<double>&) override;
55 
58  void getValues(std::vector<ParmValueSet>& values,
59  const std::vector<unsigned int>& nameIds,
60  const std::vector<ParmId>& parmIds,
61  const Box& domain) override;
62 
66  void putValues(const std::string& parmName, int& nameId,
67  ParmValueSet& values) override;
68 
70  void deleteValues(const std::string& parmNamePattern,
71  const Box& domain) override;
72 
75  void getDefValues(ParmMap& result,
76  const std::string& parmNamePattern) override;
77 
79  void putDefValue(const std::string& name, const ParmValueSet& value,
80  bool check = true) override;
81 
83  void deleteDefValues(const std::string& parmNamePattern) override;
84 
86  std::vector<std::string> getNames(const std::string& pattern) override;
87 
90  int getNameId(const std::string& parmName) override;
91 
93  void clearTables() override;
94 
95  private:
97  void fillDefMap(ParmMap& defMap) override;
98 
100  void createTables(const std::string& tableName);
101 
104  void putDefDomain(const Box& domain, casacore::Table& tab,
105  unsigned int rownr);
106 
108  Box getDefDomain(const casacore::Table& tab, unsigned int row);
109 
112  casacore::Table getNameSel(const std::string& parmNamePattern) const;
113  casacore::Vector<common::rownr_t> getNameIds(
114  const std::string& parmNamePattern) const;
115  casacore::Vector<common::rownr_t> getNameIds(
116  const std::vector<std::string>& parmNames) const;
118 
120  Box findRange(const casacore::Table& table) const;
121 
124  // void extractValues (ParmMap& result, const casacore::Table& table);
125  std::pair<string, ParmValueSet> extractDefValue(const casacore::Table& sel,
126  int row);
128 
130  void doPutValue(const std::string& parmName, int& nameId,
131  ParmValueSet& parmSet);
132 
134  void putOldValue(const ParmValue& parmValue, ParmValue::FunkletType type);
135 
137  void putNewValue(const std::string& name, int& nameId, ParmValueSet& parmSet,
138  ParmValue& parmValue, const Box& domain);
139 
141  int putName(const std::string& name, const ParmValueSet& pset);
142 
144  void putNewDefValue(const std::string& parmName, const ParmValueSet& value);
145 
147  void putInterval(const Axis& axis, casacore::ArrayColumn<double>& col,
148  unsigned int rownr);
149 
152  Axis::ShPtr getInterval(casacore::ROArrayColumn<double>& col,
153  unsigned int rownr, double st, double end,
154  unsigned int n);
155 
158  casacore::Table find(const std::string& parmName, const Box& domain);
159 
161  casacore::TableExprNode makeExpr(const casacore::Table& table,
162  const Box& domain) const;
163 
165  void andExpr(casacore::TableExprNode& expr,
166  const casacore::TableExprNode& right) const;
167 
168  casacore::Table itsTables[3];
169 };
170 
172 
173 } // namespace parmdb
174 } // namespace dp3
175 
176 #endif
Base class for a table holding parameters.
Define common types.
Classes representing a regular or irregular axis.
Definition: Axis.h:29
std::shared_ptr< Axis > ShPtr
Define a shared_ptr for this class.
Definition: Axis.h:32
Class representing a 2-dim box.
Definition: Box.h:36
Class to hold parameters in a Casa table.
Definition: ParmDBCasa.h:28
void deleteDefValues(const std::string &parmNamePattern) override
Delete the default value records for the given parameters.
int getNameId(const std::string &parmName) override
void deleteValues(const std::string &parmNamePattern, const Box &domain) override
Delete the value records for the given parameters and domain.
void unlock() override
void clearTables() override
Clear database or table.
void lock(bool lockForWrite) override
Box getRange(const std::string &parmNamePattern) const override
void getValues(std::vector< ParmValueSet > &values, const std::vector< unsigned int > &nameIds, const std::vector< ParmId > &parmIds, const Box &domain) override
std::vector< std::string > getNames(const std::string &pattern) override
Get the names of all parms matching the given (filename like) pattern.
ParmDBCasa(const std::string &tableName, bool forceNew=false)
void getDefValues(ParmMap &result, const std::string &parmNamePattern) override
void putValues(const std::string &parmName, int &nameId, ParmValueSet &values) override
void putDefValue(const std::string &name, const ParmValueSet &value, bool check=true) override
Put the default value.
void setDefaultSteps(const std::vector< double > &) override
Set the default step values.
Box getRange(const std::vector< std::string > &parmNames) const override
void flush(bool fsync) override
Flush possible changes to disk.
Abstract base class for a table holding parameters.
Definition: ParmDB.h:27
A map of parameter name to value set.
Definition: ParmMap.h:30
A class holding information of multiple domains of a parameter. ParmValueSet holds the information of...
Definition: ParmValue.h:146
A class containing the values of a parameter.
Definition: ParmValue.h:39
FunkletType
Define the possible funklet types.
Definition: ParmValue.h:45
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53