29namespace LinguisticProcessing
64LinguisticResources::LinguisticResources() :
88 LDEBUG <<
"LinguisticResources::getResource" <<
this << lang <<
id.c_str();
95 "LinguisticResources::getResource: language " << (
int)lang <<
" is not initialized !",
98 return it->second->getObject(
id);
104 bool registerMainKeysInStringPool)
109 LDEBUG <<
"LinguisticResources::initLanguage" <<
this << confModule.
getName();
113 LINFO <<
"LinguisticResources::initLanguage resources already initialized for" << lang;
118 m_d->
m_resourcesManagers[lang] = std::make_shared<AbstractResource::Manager>(confModule, params);
119 auto&
module= m_d->m_resourcesManagers[lang]->getModuleConfigurationStructure();
122 if (registerMainKeysInStringPool)
128 LINFO <<
"load mainKeys " << mainkeys <<
" into StringPool";
130 auto access = std::dynamic_pointer_cast<AnalysisDict::AbstractAccessResource>(res);
131 access->setMainKeys(
true);
136 LERROR <<
"No group 'FsaStringsPool' defined in Resource module. Can't register any main keys";
141 LERROR <<
"No param 'mainKeys' defined in FsaStringsPool group. Can't register any main keys";
153 LDEBUG <<
"LinguisticResourcesPrivate::includeResources" <<
this << &
module << module.getName()
154 << &includeModule << includeModule.getName();
159 for (
const auto& include: includeList)
161 auto i = include.find(
"/");
164 LERROR <<
"Cannot include resources " << include <<
": must specify file and module name";
168 std::string moduleName;
175 auto configPaths = QString::fromUtf8(
177 for(
const auto& confPath: configPaths)
179 if (QFileInfo::exists(confPath +
"/" +
string(include, 0, i).c_str()))
182 fileName = (confPath +
"/" + string(include, 0, i).c_str());
186 if (fileName.isEmpty())
188 LERROR <<
"No resources" << include <<
"found in"
192 moduleName = std::string(include, i+1);
193 LINFO <<
"LinguisticResourcesPrivate::includeResources filename="<< fileName <<
"moduleName="<< moduleName;
196 module.addModule(newMod);
199 for (
const auto& group: module)
201 oss << group.first <<
";";
203 LDEBUG <<
"LinguisticResourcesPrivate::includeResources added module with the following groups: " << oss.str();
211 LERROR <<
"Cannot find module " << moduleName <<
" in file " << fileName;
216 LERROR <<
"Error trying to find module " << moduleName <<
" in file " << fileName <<
":" << e.what();
229 LDEBUG <<
"LinguisticResources::getModuleConfiguration" <<
this << lang;
235 LERROR <<
"no Resources module configuration for language "<< (uint64_t)lang;
238 return (*it).second->getModuleConfigurationStructure();
#define LIMA_PATH_SEPARATOR
#define LIMA_EXCEPTION_SELECT_LOGINIT(X, Y, Z)
This macro writes the message Y to the error stream configured by its first parameter X,...
std::string & getParamValueAtKeyOfGroupNamed(const std::string &key, const std::string &name)
std::deque< std::string > & getListValuesAtKeyOfGroupNamed(const std::string &key, const std::string &name)
const std::string & getName() const
return a message when a 'group' was not found
return a message when a 'list' was not found
return a message when a 'module' is not found
return a message when a 'param' was not found
Parser class for the lima's xml configuration files.
ModuleConfigurationStructure & getModuleConfiguration(const std::string &moduleName)
void registerMainKeys(std::shared_ptr< Common::AbstractAccessByString > mainKeys)
Use this exception to signal an error in one of the configuration files.
std::map< MediaId, std::shared_ptr< AbstractResource::Manager > > m_resourcesManagers
void includeResources(Common::XMLConfigurationFiles::ModuleConfigurationStructure &module, Common::XMLConfigurationFiles::ModuleConfigurationStructure &includeModule)
LinguisticResourcesPrivate()
virtual ~LinguisticResourcesPrivate()
singleton that holds all languages resources
std::shared_ptr< AbstractResource > getResource(MediaId lang, const std::string &id) const
Common::XMLConfigurationFiles::ModuleConfigurationStructure & getModuleConfiguration(MediaId lang)
virtual ~LinguisticResources()
void initLanguage(MediaId lang, Common::XMLConfigurationFiles::ModuleConfigurationStructure &confModule, bool registerMainKeysInStringPool)
Defines access method for the singleton pattern.
static const MediaticData & single()
const singleton accessor
static MediaticData & changeable()
singleton accessor
originally detectModuleConfigurationStructure.h in detectlibraries
launch exception related to the configuration file parsing