domainmodel.h

Post on 27-Apr-2015

12 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related