Subversion Repositories public iLand

Rev

Rev 105 | Rev 129 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1
 
105 Werner 2
/** ModelController is a helper class used to
3
  control the flow of operations during a model run.
4
  Really useful???? or a dispatcher???
5
  */
128 Werner 6
 
105 Werner 7
#include "global.h"
8
#include "modelcontroller.h"
128 Werner 9
#include <QObject>
105 Werner 10
 
11
#include "model.h"
128 Werner 12
#include "helper.h"
105 Werner 13
 
14
ModelController::ModelController()
15
{
128 Werner 16
    mModel = NULL;
17
    mRunYears = 0;
105 Werner 18
}
128 Werner 19
 
20
ModelController::~ModelController()
21
{
22
    destroy();
23
}
24
 
25
 
26
const bool ModelController::canCreate()
27
{
28
    if (mModel || mInitFile.isEmpty())
29
        return false;
30
    return true;
31
}
32
 
33
const bool ModelController::canDestroy()
34
{
35
    return mModel != NULL;
36
}
37
 
38
const bool ModelController::canRun()
39
{
40
    if (mModel && mModel->isSetup())
41
        return true;
42
    return false;
43
}
44
 
45
const bool ModelController::isRunning()
46
{
47
 return mRunYears>0;
48
}
49
 
50
 
51
void ModelController::setFileName(QString initFileName)
52
{
53
    mInitFile = initFileName;
54
    try {
55
        GlobalSettings::instance()->loadProjectFile(mInitFile);
56
    } catch(const IException &e) {
57
        QString error_msg = e.toString();
58
        Helper::msg(error_msg);
59
        qDebug() << error_msg;
60
    }
61
}
62
 
63
void ModelController::create()
64
{
65
    if (!canCreate())
66
        return;
67
    try {
68
    mModel = new Model();
69
    mModel->loadProject();
70
    mRunYears = 0;
71
    } catch(const IException &e) {
72
        QString error_msg = e.toString();
73
        Helper::msg(error_msg);
74
        qDebug() << error_msg;
75
    }
76
}
77
 
78
void ModelController::destroy()
79
{
80
    if (canDestroy()) {
81
        delete mModel;
82
        mModel = 0;
83
        mRunYears = 0;
84
        qDebug() << "ModelController: Model destroyed.";
85
    }
86
}
87
void ModelController::run()
88
{
89
    if (!canRun()) return;
90
    try {
91
        mModel->runYear();
92
        mRunYears ++;
93
    } catch(const IException &e) {
94
        QString error_msg = e.toString();
95
        Helper::msg(error_msg);
96
        qDebug() << error_msg;
97
    }
98
}
99
 
100
void ModelController::runYear()
101
{
102
    if (!canRun()) return;
103
    try {
104
        mModel->runYear();
105
        mRunYears ++;
106
    } catch(const IException &e) {
107
        QString error_msg = e.toString();
108
        Helper::msg(error_msg);
109
        qDebug() << error_msg;
110
    }
111
}
112
 
113