SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
featuretypes.h
Go to the documentation of this file.
1
18#ifndef FEATURETYPES_H
19#define FEATURETYPES_H
20
22
23#include <QJsonObject>
24#include <QString>
25#include <QStringList>
26#include <QVariant>
27#include <QVariantMap>
28#include <QVector>
29
30namespace openswmmvis::feature {
31
33using FeatureId = qint64;
34inline constexpr FeatureId kInvalidFeatureId = -1;
35
44enum class FieldType
45{
46 Text = 0,
47 Integer,
48 Real,
50};
51
52[[nodiscard]] QString fieldTypeLabel(FieldType t);
53[[nodiscard]] QString fieldTypeToken(FieldType t);
54[[nodiscard]] FieldType fieldTypeFromToken(const QString &token);
57[[nodiscard]] int ogrFieldTypeFor(FieldType t);
60[[nodiscard]] QVariant coerceToFieldType(const QVariant &v, FieldType t);
61
67{
68 QString name;
70 QVariant defaultValue;
71 QString description;
72
73 [[nodiscard]] bool isValid() const { return !name.isEmpty(); }
74 [[nodiscard]] QJsonObject toJson() const;
75 [[nodiscard]] static FieldDef fromJson(const QJsonObject &o);
76
77 [[nodiscard]] bool operator==(const FieldDef &o) const;
78 [[nodiscard]] bool operator!=(const FieldDef &o) const { return !(*this == o); }
79};
80
87[[nodiscard]] QString sanitizeFieldName(const QString &raw);
88
94[[nodiscard]] QString sanitizeTableName(const QString &raw);
95
104{
105public:
106 Schema() = default;
107
108 [[nodiscard]] int count() const { return m_fields.size(); }
109 [[nodiscard]] bool isEmpty() const { return m_fields.isEmpty(); }
110 [[nodiscard]] const QVector<FieldDef> &fields() const { return m_fields; }
111
112 [[nodiscard]] int indexOf(const QString &name) const;
113 [[nodiscard]] bool contains(const QString &name) const { return indexOf(name) >= 0; }
114 [[nodiscard]] const FieldDef *field(const QString &name) const;
115 [[nodiscard]] FieldDef at(int i) const;
116 [[nodiscard]] QStringList names() const;
117
121 bool append(const FieldDef &f);
122 bool remove(const QString &name);
123 bool replace(const QString &name, const FieldDef &f);
124 void clear() { m_fields.clear(); }
125
128 [[nodiscard]] QVariantMap defaultAttributes() const;
129
133 [[nodiscard]] QVariantMap conform(const QVariantMap &attrs) const;
134
135 [[nodiscard]] QJsonObject toJson() const;
136 [[nodiscard]] static Schema fromJson(const QJsonObject &o);
137
138 [[nodiscard]] bool operator==(const Schema &o) const { return m_fields == o.m_fields; }
139 [[nodiscard]] bool operator!=(const Schema &o) const { return !(*this == o); }
140
141private:
142 QVector<FieldDef> m_fields;
143};
144
150{
153 QVariantMap attributes;
154
155 [[nodiscard]] bool isValid() const { return geometry.isValid(); }
156 [[nodiscard]] bool isStored() const { return id != kInvalidFeatureId; }
157};
158
159} // namespace openswmmvis::feature
160
161Q_DECLARE_METATYPE(openswmmvis::feature::FieldType)
162
163#endif // FEATURETYPES_H
A complete feature geometry: a type plus zero or more parts.
Definition featuregeometry.h:205
bool isValid() const
Definition featuregeometry.h:214
An ordered list of FieldDef, with name lookup.
Definition featuretypes.h:104
bool operator!=(const Schema &o) const
Definition featuretypes.h:139
static Schema fromJson(const QJsonObject &o)
Definition featuretypes.cpp:267
const FieldDef * field(const QString &name) const
Definition featuretypes.cpp:193
bool operator==(const Schema &o) const
Definition featuretypes.h:138
const QVector< FieldDef > & fields() const
Definition featuretypes.h:110
bool append(const FieldDef &f)
Definition featuretypes.cpp:212
QStringList names() const
Definition featuretypes.cpp:204
QVariantMap defaultAttributes() const
Definition featuretypes.cpp:238
bool remove(const QString &name)
Definition featuretypes.cpp:219
bool replace(const QString &name, const FieldDef &f)
Definition featuretypes.cpp:227
FieldDef at(int i) const
Definition featuretypes.cpp:199
QJsonObject toJson() const
Definition featuretypes.cpp:258
void clear()
Definition featuretypes.h:124
QVariantMap conform(const QVariantMap &attrs) const
Definition featuretypes.cpp:246
bool isEmpty() const
Definition featuretypes.h:109
int indexOf(const QString &name) const
Definition featuretypes.cpp:185
int count() const
Definition featuretypes.h:108
bool contains(const QString &name) const
Definition featuretypes.h:113
size_t i
Definition contourjob.cpp:27
const char * token
Definition diagramspec.cpp:20
DiagramType t
Definition diagramspec.cpp:20
Definition featuregeometry.h:40
int ogrFieldTypeFor(FieldType t)
Definition featuretypes.cpp:91
FieldType fieldTypeFromToken(const QString &token)
Definition featuretypes.cpp:82
QString fieldTypeToken(FieldType t)
Definition featuretypes.cpp:71
QVariant coerceToFieldType(const QVariant &v, FieldType t)
Definition featuretypes.cpp:104
QString fieldTypeLabel(FieldType t)
Definition featuretypes.cpp:60
FieldType
The attribute types an authored schema may declare.
Definition featuretypes.h:45
QString sanitizeTableName(const QString &raw)
Make raw safe as a GeoPackage table name, on the same rules as sanitizeFieldName plus a "fl_" prefix ...
Definition featuretypes.cpp:138
QString sanitizeFieldName(const QString &raw)
Make raw safe as an OGR/GeoPackage column name: ASCII letters, digits and underscore,...
Definition featuretypes.cpp:129
qint64 FeatureId
Definition featuretypes.h:33
constexpr FeatureId kInvalidFeatureId
Definition featuretypes.h:34
QVector< int > v
pool vertex indices
Definition pslgminsize.cpp:159
QString name
Definition sectionmodelbuilders.cpp:474
One editable feature: identity, geometry, attributes.
Definition featuretypes.h:150
QVariantMap attributes
Definition featuretypes.h:153
FeatureGeometry geometry
Definition featuretypes.h:152
bool isStored() const
Definition featuretypes.h:156
bool isValid() const
Definition featuretypes.h:155
One user-defined attribute column.
Definition featuretypes.h:67
bool operator!=(const FieldDef &o) const
Definition featuretypes.h:78
QString description
Tooltip in the schema editor and property panel.
Definition featuretypes.h:71
bool operator==(const FieldDef &o) const
Definition featuretypes.cpp:173
FieldType type
Definition featuretypes.h:69
bool isValid() const
Definition featuretypes.h:73
static FieldDef fromJson(const QJsonObject &o)
Definition featuretypes.cpp:162
QVariant defaultValue
Applied to new features; may be invalid.
Definition featuretypes.h:70
QJsonObject toJson() const
Definition featuretypes.cpp:150
QString name
OGR field name; see sanitizeFieldName.
Definition featuretypes.h:68