domainmodel.h

4
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);

Upload: rakaangga

Post on 27-Apr-2015

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DomainModel.h

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);

Page 2: DomainModel.h

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; };

Page 3: DomainModel.h

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;

Page 4: DomainModel.h

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