14#include "arcane/core/CaseOptionBase.h"
16#include "arcane/utils/FatalErrorException.h"
17#include "arcane/utils/StringBuilder.h"
19#include "arcane/core/CaseOptionBuildInfo.h"
20#include "arcane/core/StringDictionary.h"
21#include "arcane/core/CaseOptions.h"
22#include "arcane/core/ICaseMng.h"
23#include "arcane/core/ICaseDocument.h"
24#include "arcane/core/CaseOptionException.h"
25#include "arcane/core/internal/ICaseOptionListInternal.h"
39class CaseOptionBasePrivate
69CaseOptionBasePrivate::
71: m_case_mng(cob.caseMng())
72, m_parent_option_list(cob.caseOptionList())
73, m_case_document_fragment(m_parent_option_list->caseDocumentFragment())
75, m_true_name(cob.name())
77, m_axl_default_value(cob.defaultValue())
78, m_default_value(m_axl_default_value)
79, m_min_occurs(cob.minOccurs())
80, m_max_occurs(cob.maxOccurs())
81, m_is_optional(cob.isOptional())
82, m_is_initialized(false)
83, m_is_override_default(false)
94CaseOptionBase(
const CaseOptionBuildInfo& cob)
95: m_p(new CaseOptionBasePrivate(cob))
97 cob.caseOptionList()->_internalApi()->addConfig(
this,cob.element());
115 return m_p->m_case_mng;
124 return m_p->m_parent_option_list;
133 return m_p->m_case_mng->traceMng();
142 return m_p->m_case_mng->subDomain();
160 return m_p->m_case_document_fragment;
169 return m_p->m_default_value;
176_setDefaultValue(
const String& def_value)
188 _setCategoryDefaultValue();
189 _setTranslatedName();
199 return m_p->m_true_name;
217 return m_p->m_min_occurs;
226 return m_p->m_max_occurs;
235 return m_p->m_is_optional;
260_setCategoryDefaultValue()
263 if (m_p->m_is_override_default)
267 m_p->m_default_value = m_p->m_axl_default_value;
269 String v = m_p->m_default_values.find(category);
271 m_p->m_default_value = v;
283 String tr = m_p->m_name_translations.find(lang);
296 m_p->m_root_element = root_element;
305 return m_p->m_root_element;
314 m_p->m_name_translations.add(lang,
name);
323 m_p->m_default_values.add(category,value);
339_isInitialized()
const
348_checkIsInitialized()
const
350 if (!_isInitialized()){
359_checkMinMaxOccurs(
Integer nb_occur)
361 Integer min_occurs = m_p->m_min_occurs;
362 Integer max_occurs = m_p->m_max_occurs;
363 bool is_optional = m_p->m_is_optional;
365 if (nb_occur == 0 && is_optional) {
369 if (nb_occur<min_occurs){
370 StringBuilder msg =
"Bad number of occurences (less than min)";
373 msg +=
" min_occur=";
376 msg += m_p->m_root_element.xpathFullName();
379 throw CaseOptionException(A_FUNCINFO,msg.toString(),
true);
382 if (nb_occur>max_occurs){
383 StringBuilder msg =
"Bad number of occurences (greater than max)";
386 msg +=
" max_occur=";
389 msg += m_p->m_root_element.xpathFullName();
392 throw CaseOptionException(A_FUNCINFO,msg.toString(),
true);
400_xpathFullName()
const
402 return m_p->m_root_element.xpathFullName();
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
bool m_is_override_default
const String m_axl_default_value
Valeur par défaut initiale.
Integer m_min_occurs
Nombre minimum d'occurences.
String m_name
Nom traduit de l'option.
ICaseMng * m_case_mng
Gestionnaire du sous-domaine.
XmlNode m_root_element
Elément du DOM de l'option.
Integer m_max_occurs
Nombre maximum d'occurences (-1 == unbounded)
StringDictionary m_default_values
Liste des valeurs par défaut par catégorie.
bool m_is_initialized
true si initialisé
ICaseDocumentFragment * m_case_document_fragment
Document associé
String m_default_value
Valeur par défaut.
StringDictionary m_name_translations
Liste des noms d'options par langue.
ICaseOptionList * m_parent_option_list
Parent.
String m_true_name
Nom de l'option.
String name() const
Retourne le nom de l'option correspondant au langage du jeu de données.
String translatedName(const String &lang) const
Nom dans la langue lang de l'option. Retourne name() si pas de traduction.
void addDefaultValue(const String &category, const String &value)
Ajoute la valeur par défaut value à la catégorie category.
String _defaultValue() const
Retourne la valeur par défaut de l'option ou 0 s'il n'y en a pas.
ICaseDocument * caseDocument() const
Retourne le gestionnaire de document.
void search(bool is_phase1)
Récupère la valeur du fichier de configuration pour la variable.
ICaseMng * caseMng() const
Gestionnaire de cas.
ICaseDocumentFragment * caseDocumentFragment() const
Retourne le document associé à cette option.
void addAlternativeNodeName(const String &lang, const String &name)
Ajoute une traduction pour le nom de l'option.
void setRootElement(const XmlNode &root_element)
Positionne l'élément racine à root_element.
bool isOptional() const
Permet de savoir si une option est optionnelle.
Integer maxOccurs() const
Nombre maximum d'occurences (pour une option multiple) (-1 == unbounded)
XmlNode rootElement() const
Retourne l'élément racine du DOM.
ITraceMng * traceMng() const
Gestionnaire de traces.
ISubDomain * subDomain() const
Gestionnaire de sous-domaine.
String trueName() const
Retourne le vrai nom (non traduit) de l'option.
ICaseOptionList * parentOptionList() const
OptionList parent.
Integer minOccurs() const
Nombre minimum d'occurences (pour une option multiple)
virtual String defaultCategory() const =0
Catégorie utilisée pour les valeurs par défaut.
virtual String language() const =0
Langage utilisé dans le jeu de données.
Interface du gestionnaire de cas.
virtual ICaseDocument * caseDocument()=0
Document XML du jeu de données (peut être nul si pas de jeu de donneés)
Interface du gestionnaire d'un sous-domaine.
Interface du gestionnaire de traces.
String find(const String &key, bool throw_exception=false) const
Retourne la valeur associée à key.
Chaîne de caractères unicode.
bool null() const
Retourne true si la chaîne est nulle.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.