autosql.h 1.76 KB
Newer Older
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
1
2
3
4
5
6
7
8
#ifndef _AUTOSQL_H
#define _AUTOSQL_H

#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariant>
9
10
#include <Fonction.h>
#include <voisinage.h>
11
#include <Automate.h>
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
12

13
14
/// Cette classe adapte un objet base de données pour le rendre facile d'utilisation dans le cadre de l'application
///
15
/// Il suffit de lui donner le nom du fichier sqlite à la création et d'appeler les méthodes pour intéragir avec. Les pointeurs retournés par les méthodes getFonction, getRegleVoisinage et getReseau pointent vers des objets dynamiques dont la charge de la destruction est laissée à l'utilisateur
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
16
17
18
class Database {
	private:
		QSqlDatabase db;
Leon Do Castelo's avatar
Leon Do Castelo committed
19
20
21
22
23

		static std::unique_ptr<Database> instance;
        Database& operator=(const Database& a) = delete;
        Database(const Database& a) = delete;
        Database(std::string path);
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
24
	public:
Leon Do Castelo's avatar
Leon Do Castelo committed
25
26
27
28
29
30
31
		static Database& getInstance() {
            if(instance == nullptr) {
                instance.reset(new Database("application.db"));
            }
            return *instance;
        }
		
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
32
33
		~Database() { db.close(); }
		std::vector<QString> getAutomates() const;
34
		Fonction* getFonction(Automate& a) const;
35
		RegleVoisinage* getRegleVoisinage(const QString& name) const;
Leon Do Castelo's avatar
Leon Do Castelo committed
36
		std::vector<QString> getListeReseaux(const QString& name) const;
Leon Do Castelo's avatar
Leon Do Castelo committed
37
		Reseau& getReseau(int idReseau) const;
38
		void stockerReseau(const Reseau& reseau, const QString& nomReseau, const QString& nomAutomate) const;
39
		void initEnsEtat(Automate& a) const;
40
41
		void saveAutomaton(const Automate& a) const;
		void saveFunction(const QString& name, const Fonction& f) const;
Leon Do Castelo's avatar
Leon Do Castelo committed
42
		void saveVoisinage(const QString& name, RegleVoisinage& r) const;
43
		void saveEnsemble(Automate& a) const;
44
		void initSingletonAutomate(const QString& modele) const;
Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
45
46
47
};

#endif