00001
00002 #include "Event/messageManager.h"
00003 #include "Event/optionManager.h"
00004
00005 messageManager* messageManager::m_instance = 0;
00006
00007
00008 messageManager::messageManager()
00009
00010 {
00011 if (m_instance !=0 ) return;
00012
00013 m_server = new serverVI<messageVI>();
00014
00015 m_definedFile = false;
00016 m_fileName = "EMPTY";
00017 m_level = "RELEASE";
00018 m_instance = this;
00019
00021 setName("messageManager");
00023 addToServer("optionManager",optionManager::instance());
00024 }
00025
00026 void messageManager::open(std::string fileName)
00027
00028 {
00029 if (m_definedFile) m_file.close();
00030 m_definedFile = true;
00031 m_file.open(fileName.c_str());
00032 }
00033
00034 void messageManager::close()
00035
00036 {
00037 m_definedFile = false;
00038 m_file.close();
00039 }
00040
00041 void messageManager::setOption(std::string varname, std::string content)
00042
00043 {
00044 optionVI::setOption(varname,content);
00045 if (varname == "outFile") open(content);
00046 if (varname == "level") setLevel(content);
00047 }
00048
00049 messageManager::~messageManager()
00050
00051 {
00052 if (m_definedFile) close();
00053 }
00054
00055 void messageManager::addToServer(std::string name, messageVI* mp)
00056
00057 {
00058 if (!m_server->search(name)) m_server->add(name,mp);
00059 else message(" object already in server "+name);
00060 }
00061
00062 std::ostream& messageManager::out() const
00063
00064 {
00065 if (m_instance == 0) return std::cout;
00066 if (m_instance->m_definedFile) return m_instance->m_file;
00067 else return std::cout;
00068 }
00069
00070 void messageManager::message(std::string comment, std::string ilevel) const
00071
00072 {
00073 if (acceptLevel(ilevel)) out() << "* " << comment << " * \n";
00074 }
00075
00076 void messageManager::message(std::string comment, double val, std::string ilevel) const
00077
00078 {
00079 if (acceptLevel(ilevel)) out() << "* " << comment << " " << val <<" * \n";
00080 }
00081
00082
00083 bool messageManager::acceptLevel(std::string slevel) const
00084
00085 {
00086 return (messageBase::getLevel(slevel) <= getLevel());
00087 }
00088
00089
00090 void messageManager::defineOption()
00091
00092 {
00094 optionVI::defineOption("outFile",&m_fileName);
00095 optionVI::defineOption("level",&m_level);
00096 }
00097
00098 messageVI* messageManager::getMessage(std::string name) const
00099
00100 {
00101 if (!m_server->search(name)) {
00102 message( " no seach class in Server : "+name);
00103 return 0;
00104 }
00105 return m_server->get(name);
00106 }
00107
00108 void messageManager::writeOutServer() const
00109
00110 {
00111 for (int i=0; i < m_server->size(); i++) m_server->get(i)->writeOut();
00112 }
00113
00114 void messageManager::writeOut(std::string name) const
00115
00116 {
00117 messageVI* mes = getMessage(name);
00118 if (mes->acceptLevel()) mes->writeOut();
00119 }
00120
00121 void messageManager::writeOut() const
00122
00123 {
00124 std::ostream& out = messageManager::instance()->out();
00125 if (m_server->size() == 0) return;
00126 messageVI::writeOut();
00127 out << " -- objects defined in the message Server -- " <<"\n";
00128 out << m_server->nameList();
00129 }