00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "realfactory.h"
00022 #include <QStringList>
00023
00024 namespace farsa {
00025
00026 RealFactory::RealFactory(ConfigurationParameters& configurationParameters) :
00027 m_configurationParameters(configurationParameters),
00028 m_observers(),
00029 m_createRecursionLevel(0),
00030 m_objectsConfiguredNotInitialized()
00031 {
00032 }
00033
00034 RealFactory::~RealFactory()
00035 {
00036
00037 }
00038
00039 void RealFactory::addObserver(FactoryObserver* observer)
00040 {
00041 m_observers.insert(observer);
00042 }
00043
00044 void RealFactory::addObservers(const QSet<FactoryObserver*>& observers)
00045 {
00046 m_observers.unite(observers);
00047 }
00048
00049 const QSet<FactoryObserver*>& RealFactory::getObservers() const
00050 {
00051 return m_observers;
00052 }
00053
00054 void RealFactory::clearObservers()
00055 {
00056 m_observers.clear();
00057 }
00058
00059 void RealFactory::objectConfigured(ParameterSettable *object)
00060 {
00061 m_objectsConfiguredNotInitialized.append(object);
00062 }
00063
00064 bool RealFactory::outsideCallsToCreate() const
00065 {
00066 return (m_createRecursionLevel == 0);
00067 }
00068
00069 void RealFactory::callPostConfigureInitializationForConfiguredObjects()
00070 {
00071 for (QList<ParameterSettable*>::iterator it = m_objectsConfiguredNotInitialized.begin(); it != m_objectsConfiguredNotInitialized.end(); it++) {
00072 (*it)->postConfigureInitialization();
00073 }
00074 }
00075
00076 bool RealFactory::orderByNumberAfterColon(const QString& s1, const QString& s2)
00077 {
00078
00079
00080 QStringList list = s1.split(':', QString::SkipEmptyParts);
00081 if (list.size() < 2) {
00082 return false;
00083 }
00084 const double ns1 = list[1].toDouble();
00085 list = s2.split(':', QString::SkipEmptyParts);
00086 if (list.size() < 2) {
00087 return true;
00088 }
00089 const double ns2 = list[1].toDouble();
00090
00091 return (ns1 < ns2);
00092 }
00093
00094 }