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)
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.
CaseOptionBasePrivate * m_p
Implémentation.
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)
Informations pour construire une option de jeu de données.
Interface d'une partie d'un jeu de données.
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 d'une classe gérant un document XML du 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 d'une liste d'options du jeu de données.
Interface du gestionnaire d'un sous-domaine.
Interface du gestionnaire de traces.
Dictionnaire de chaînes unicode.
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.