domainmodel.h
TRANSCRIPT
DomainModel.h 1
#ifndef DOMAINMODEL_H#define DOMAINMODEL_H#include <QString>#include <QList>#include <QDateTime>#include <QSharedData>#include <QSharedDataPointer>
namespace DBConan{ class PrimaryKey; class ForeignKey; class Table; class Column;
class ColumnData : public QSharedData { public: ColumnData(); ColumnData(const ColumnData & other); ~ColumnData();
QString name; QString type; QString keyName; int position; QString description; };
class Column { private: QSharedDataPointer<ColumnData> d;
public: Column(); Column(QString name, QString type, QString keyName, int position, QString description); Column(const Column & other);
QString name() const; QString type() const; QString keyName() const; int position() const; QString description() const; };
class KeyElementData : public QSharedData { public: KeyElementData(); KeyElementData(const KeyElementData & other); ~KeyElementData();
int position; Column column; };
class KeyElement { private: QSharedDataPointer<KeyElementData> d;
public: KeyElement(); KeyElement(Column column, int position); KeyElement(const KeyElement & other);
DomainModel.h 2
int position() const; Column column() const; };
class TableData : public QSharedData { public: TableData(); TableData(const TableData & other); ~TableData();
QString name; bool allPossibleForeignKeysLocked; QList<Column> columns; QList<ForeignKey> foreignKeys; QList<ForeignKey> allPossibleForeignKeys; QList<PrimaryKey> primaryKey; };
class Table { private: QSharedDataPointer<TableData> d;
public: Table(); Table(QString name, QList<QString> columnNames, QList<QString> columnTypes, QList<QString> columnKeyNames, QString primaryKeyName, QList<QString> primaryKeyColumnNames); Table(const Table & other);
void addColumn(Column column);
QString name() const; QList<Column> columns() const; PrimaryKey primaryKey() const; QList<ForeignKey> foreignKeys() const; QList<ForeignKey> allPossibleForeignKeys() const; };
class PrimaryKeyData : public QSharedData { public: PrimaryKeyData(); PrimaryKeyData(const PrimaryKeyData & other); ~PrimaryKeyData();
QString name; QList<KeyElement> elements; QList<ForeignKey> foreignKeys; Table table; };
class PrimaryKey { private: QSharedDataPointer<PrimaryKeyData> d;
public: PrimaryKey(); PrimaryKey(Table table, QString name, QList<KeyElement> elements); PrimaryKey(const PrimaryKey & other);
QString name() const; QList<KeyElement> elements() const; QList<ForeignKey> foreignKeys() const; Table table() const; };
DomainModel.h 3
class ForeignKeyData : public QSharedData { public: ForeignKeyData(); ForeignKeyData(const ForeignKeyData & other); ~ForeignKeyData();
QString name; QList<KeyElement> elements; PrimaryKey primaryKey; Table table; };
class ForeignKey { private: QSharedDataPointer<ForeignKeyData> d;
public: ForeignKey(); ForeignKey(Table table, QString name, QList<KeyElement> elements, PrimaryKey primaryKey); ForeignKey(const ForeignKey & other);
QString name() const; QList<KeyElement> elements() const; PrimaryKey primaryKey() const; Table table() const; };
class SchemaData : public QSharedData { public: SchemaData(); SchemaData(const SchemaData & other); ~SchemaData();
QString host; int port; QString dbName; QString name; QString userName; QDateTime dateOfCreation; QString description; QList<Table> tables; };
//QString is implicitly shared: http://books.google.com/books?id=tSCR_4LH2KsC&pg=PA259&lpg=PA259&dq=QString+reference+counting&source=bl&ots=E6_3mX24yk&sig=_P3NXR828LKhQLJugCm8nwuSNWM&hl=es&ei=fU2sS_j4BZGVtgfvu8S2Dw&sa=X&oi=book_result&ct=result&resnum=6&ved=0CCYQ6AEwBQ#v=onepage&q=QString%20reference%20counting&f=false class Schema { private: QSharedDataPointer<SchemaData> d;
public: Schema(); Schema(QString host, int port, QString dbName, QString name, QString userName, QDateTime dateOfCreation, QString description); Schema(const Schema & other);
void addTable(Table table);
QString host() const;
DomainModel.h 4
int port() const; QString dbName() const; QString name() const; QString userName() const; QDateTime dateOfCreation() const; QString description() const; QList<Table> tables() const; };}
#endif // DOMAINMODEL_H