Isis 3.0
Back | Home
ImportPdsTable.h
Go to the documentation of this file.
1 #ifndef ImportPdsTable_h
2 #define ImportPdsTable_h
3 
25 #include <QString>
26 #include <QList>
27 #include <QStringList>
28 
29 #include <fstream>
30 #include <vector>
31 #include <string>
32 
33 class QString;
34 
35 namespace Isis {
36  class Table;
37  class TableField;
38  class TableRecord;
39  class PvlObject;
115  public:
116  ImportPdsTable();
117  ImportPdsTable(const QString &pdsLabFile,
118  const QString &pdsTabFile="",
119  const QString &pdsTableName ="TABLE");
120  virtual ~ImportPdsTable();
121 
122  QString name() const;
123  void setName(const QString &name = "TABLE");
124 
125  int columns() const;
126  int rows() const;
127 
128  void load(const QString &pdsLabFile, const QString &pdsTabFile = "",
129  const QString &pdsTableName = "TABLE");
130 
131  bool hasColumn(const QString &colName) const;
132  QString getColumnName(const unsigned int &index = 0,
133  const bool &formatted = true) const;
134  QStringList getColumnNames(const bool &formatted = true) const;
135  QString getFormattedName(const QString &colname) const;
136 
137  QString getType(const QString &colName) const;
138  bool setType(const QString &colName, const QString &dataType);
139 
140  Table importTable(const QString &isisTableName);
141  Table importTable(const QString &colNames,
142  const QString &isisTableName);
143  Table importTable(const QStringList &colNames,
144  const QString &isisTableName);
145 
146 
147  protected:
148  struct ColumnDescr {
149  QString m_name;
150  int m_colnum;
151  QString m_dataType;
155  int m_items;
156  };
157 
158  // Internal types
162 
163  const ColumnDescr &getColumnDescriptor(const int &nth) const;
164  ColumnDescr *findColumn(const QString &colName);
165  const ColumnDescr *findColumn(const QString &colName) const;
166 
167 
168  QString getColumnValue(const QString &tline,
169  const ColumnDescr &cdesc,
170  const QString &delimiter = "") const;
171  QStringList getColumnFields(const QString &tline,
172  const ColumnDescr &cdesc,
173  const QString &delimiter = "") const;
174 
175 
176  QString getGenericType(const QString &ttype) const;
177 
178  virtual bool processRow(const int &row, const QString &rowdata);
179 
180 
181  private:
182  void init();
183 
184  void loadLabel(const QString &labfile, QString &tblfile,
185  const QString &tblname = "");
186  void loadTable(const QString &tabfile);
187 
188  ColumnDescr getColumnDescription(PvlObject &colobj, int nth) const;
189 
190  TableRecord makeRecord(const ColumnTypes &ctypes);
191  TableField makeField(const ColumnDescr &cdesc);
192  TableField makeFieldFromBinaryTable(const ColumnDescr &cdesc);
193  void setPdsByteOrder(QString byteOrder);
194 
195  TableField &extract(const Columns &columns, const ColumnDescr &cdesc,
196  TableField &field) const;
197  TableRecord &extract(const Columns &columns, const ColumnTypes &ctypes,
198  TableRecord &record) const;
199  TableRecord extractBinary(char *rowBuffer, TableRecord &record) const;
200 
201  void fillTable(Table &table, const ColumnTypes &columns,
202  TableRecord &record) const;
203 
204  //private instance variables
205  int m_trows;
206  ColumnTypes m_coldesc;
207  Rows m_rows;
208  QString m_pdsTableType;
209  int m_rowBytes;
210  int m_recordBytes;
211  QString m_tableName;
212  QString m_pdsTableFile;
213  int m_pdsTableStart;
214  QString m_byteOrder;
216  };
217 
218 }
219 #endif
220 
QStringList Columns
Definition: ImportPdsTable.h:160
int columns() const
Returns the number of columns in the table.
Definition: ImportPdsTable.cpp:1005
virtual bool processRow(const int &row, const QString &rowdata)
Process a freshly read PDS table line of data.
Definition: ImportPdsTable.cpp:1218
int m_colnum
Column number.
Definition: ImportPdsTable.h:150
QStringList getColumnFields(const QString &tline, const ColumnDescr &cdesc, const QString &delimiter="") const
Extracts column fields from a QString based upon a description.
Definition: ImportPdsTable.cpp:718
Table importTable(const QString &isisTableName)
Populate a Table object with the PDS table and return it.
Definition: ImportPdsTable.cpp:333
int m_itemBytes
Number bytes per item.
Definition: ImportPdsTable.h:154
QString getFormattedName(const QString &colname) const
Converts a column name to a camel-case after it has been cleansed.
Definition: ImportPdsTable.cpp:765
QString m_name
Name of column.
Definition: ImportPdsTable.h:149
Definition: ImportPdsTable.h:148
void load(const QString &pdsLabFile, const QString &pdsTabFile="", const QString &pdsTableName="TABLE")
Loads a PDS table label and (optional) data file.
Definition: ImportPdsTable.cpp:147
virtual ~ImportPdsTable()
Destructs the ImportPdsTable object.
Definition: ImportPdsTable.cpp:99
const ColumnDescr & getColumnDescriptor(const int &nth) const
Retrieve a column description by index.
Definition: ImportPdsTable.cpp:620
QStringList getColumnNames(const bool &formatted=true) const
Return the names of all the columns.
Definition: ImportPdsTable.cpp:257
QList< ColumnDescr > ColumnTypes
Definition: ImportPdsTable.h:159
QList< Columns > Rows
Definition: ImportPdsTable.h:161
void setName(const QString &name="TABLE")
Set the name of the PDS table object.
Definition: ImportPdsTable.cpp:113
QString name() const
Return the name of the PDS table.
Definition: ImportPdsTable.cpp:104
QString getColumnValue(const QString &tline, const ColumnDescr &cdesc, const QString &delimiter="") const
Extracts a column from a QString based upon a description.
Definition: ImportPdsTable.cpp:696
QString getColumnName(const unsigned int &index=0, const bool &formatted=true) const
Returns the name of the specifed column.
Definition: ImportPdsTable.cpp:226
int rows() const
Returns the number of rows in the table.
Definition: ImportPdsTable.cpp:1017
int m_items
Number of items in column.
Definition: ImportPdsTable.h:155
bool setType(const QString &colName, const QString &dataType)
Change the datatype for a column.
Definition: ImportPdsTable.cpp:310
Class for storing Table blobs information.
Definition: Table.h:74
QString getType(const QString &colName) const
Get the type associated with the specified column.
Definition: ImportPdsTable.cpp:283
int m_startByte
Starting byte of data.
Definition: ImportPdsTable.h:152
ImportPdsTable()
Default constructor.
Definition: ImportPdsTable.cpp:58
Class for storing an Isis::Table&#39;s field information.
Definition: TableField.h:63
int m_numBytes
Number bytes in column.
Definition: ImportPdsTable.h:153
Definition: TableRecord.h:54
QString m_dataType
PDS table DATA_TYPE of column.
Definition: ImportPdsTable.h:151
QString getGenericType(const QString &ttype) const
Determine generic data type of a column.
Definition: ImportPdsTable.cpp:804
Contains Pvl Groups and Pvl Objects.
Definition: PvlObject.h:74
Import a PDS table file with a label description.
Definition: ImportPdsTable.h:114
ColumnDescr * findColumn(const QString &colName)
Searches internal column descriptors for a named column.
Definition: ImportPdsTable.cpp:648
bool hasColumn(const QString &colName) const
This method determines whether the PDS table has a column with the given name.
Definition: ImportPdsTable.cpp:201

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:20:30