Subversion Repositories public iLand

Rev

Rev 129 | Rev 136 | 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
{
129 Werner 28
    if (mModel)
128 Werner 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;
129 Werner 71
    if (mModel->isSetup())
72
        mModel->beforeRun();
73
 
128 Werner 74
    } catch(const IException &e) {
75
        QString error_msg = e.toString();
76
        Helper::msg(error_msg);
77
        qDebug() << error_msg;
78
    }
79
}
80
 
81
void ModelController::destroy()
82
{
83
    if (canDestroy()) {
84
        delete mModel;
85
        mModel = 0;
86
        mRunYears = 0;
87
        qDebug() << "ModelController: Model destroyed.";
88
    }
89
}
90
void ModelController::run()
91
{
92
    if (!canRun()) return;
93
    try {
94
        mModel->runYear();
95
        mRunYears ++;
96
    } catch(const IException &e) {
97
        QString error_msg = e.toString();
98
        Helper::msg(error_msg);
99
        qDebug() << error_msg;
100
    }
101
}
102
 
103
void ModelController::runYear()
104
{
105
    if (!canRun()) return;
106
    try {
135 Werner 107
        GlobalSettings::instance()->clearDebugLists();  // clear debug data
128 Werner 108
        mModel->runYear();
109
        mRunYears ++;
110
    } catch(const IException &e) {
111
        QString error_msg = e.toString();
112
        Helper::msg(error_msg);
113
        qDebug() << error_msg;
114
    }
115
}
116
 
117