00001
00002
00003 #include "ACEXML/common/SAXExceptions.h"
00004 #include "ACEXML/parser/debug_validator/Debug_Attributes_Builder.h"
00005
00006 ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder ()
00007 : type_ (ERROR_TYPE),
00008 default_decl_ (INVALID)
00009 {
00010 }
00011
00012 ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder (const ACEXML_Debug_Attribute_Builder &rhs)
00013 : name_ (rhs.name_),
00014 type_ (rhs.type_),
00015 default_decl_ (rhs.default_decl_),
00016 default_value_ (rhs.default_value_),
00017 att_value_queue_ (rhs.att_value_queue_)
00018 {
00019 }
00020
00021 ACEXML_Debug_Attribute_Builder::~ACEXML_Debug_Attribute_Builder ()
00022 {
00023 }
00024
00025 int
00026 ACEXML_Debug_Attribute_Builder::setName (const ACEXML_Char *n)
00027 {
00028 this->name_.set (n, 0);
00029 return 0;
00030 }
00031
00032 const ACEXML_Char *
00033 ACEXML_Debug_Attribute_Builder::getName (void)
00034 {
00035 return this->name_.fast_rep ();
00036 }
00037
00038 int
00039 ACEXML_Debug_Attribute_Builder::setAttType (const ATT_TYPE type
00040 ACEXML_ENV_ARG_DECL)
00041 {
00042 if (this->type_ == ERROR_TYPE)
00043 {
00044 this->type_ = type;
00045 return 0;
00046 }
00047 ACEXML_THROW_RETURN (ACEXML_SAXParseException (ACE_TEXT("Attribute type redefinition in Debug Validator")), -1);
00048
00049 }
00050
00051 int
00052 ACEXML_Debug_Attribute_Builder::insertList (const ACEXML_Char *n
00053 ACEXML_ENV_ARG_DECL_NOT_USED)
00054 {
00055 ACEXML_String str (n, 0, 0);
00056
00057 this->att_value_queue_.enqueue_tail (str);
00058 return 0;
00059 }
00060
00061 int
00062 ACEXML_Debug_Attribute_Builder::setDefault (const DEFAULT_DECL def,
00063 const ACEXML_Char *value
00064 ACEXML_ENV_ARG_DECL_NOT_USED)
00065 {
00066 this->default_decl_ = def;
00067 this->default_value_.set (value, 0);
00068 return 0;
00069 }
00070
00071 int
00072 ACEXML_Debug_Attribute_Builder::validAttr (void)
00073 {
00074
00075 return 1;
00076 }
00077
00078 void
00079 ACEXML_Debug_Attribute_Builder::dump (void)
00080 {
00081 cout << this->name_ << " ";
00082
00083 switch (this->type_)
00084 {
00085 case CDATA:
00086 cout << "CDATA ";
00087 break;
00088 case ID:
00089 cout << "ID ";
00090 break;
00091 case IDREF:
00092 cout << "IDREF ";
00093 break;
00094 case IDREFS:
00095 cout << "IDREFS ";
00096 break;
00097 case ENTITY:
00098 cout << "ENTITY ";
00099 break;
00100 case ENTITIES:
00101 cout << "ENTITIES ";
00102 break;
00103 case NMTOKEN:
00104 cout << "NMTOKEN ";
00105 break;
00106 case NMTOKENS:
00107 cout << "NMTOKENS ";
00108 break;
00109 case NOTATION:
00110 cout << "NOTATION ";
00111
00112 case ENUMERATION:
00113 {
00114 cout << "(";
00115 ACEXML_STRING_QUEUE_ITERATOR iter (this->att_value_queue_);
00116 ACEXML_String *n = 0;
00117
00118 while (iter.advance () != 0)
00119 {
00120 if (n == 0)
00121 cout << " | ";
00122 iter.next (n);
00123 cout << *n;
00124 }
00125 cout << ") ";
00126 }
00127 break;
00128 default:
00129 cout << "*** UNKNOWN TYPE ***";
00130 break;
00131 }
00132
00133 switch (this->default_decl_)
00134 {
00135 case REQUIRED:
00136 cout << "#REQUIRED";
00137 break;
00138 case IMPLIED:
00139 cout << "#IMPLIED";
00140 break;
00141 case FIXED:
00142 cout << "#FIXED " << this->default_value_;
00143 break;
00144 default:
00145 cout << "**** UNDEFINED DEFAULT DECL ****";
00146 break;
00147 }
00148 }
00149
00150
00151 ACEXML_Debug_Attributes_Builder::ACEXML_Debug_Attributes_Builder ()
00152 {
00153 }
00154
00155 ACEXML_Debug_Attributes_Builder::~ACEXML_Debug_Attributes_Builder ()
00156 {
00157 }
00158
00159 int
00160 ACEXML_Debug_Attributes_Builder::setElement (const ACEXML_Char *,
00161 const ACEXML_Char *,
00162 const ACEXML_Char *qName ACEXML_ENV_ARG_DECL_NOT_USED)
00163 {
00164 this->element_name_.set (qName, 0);
00165 return 0;
00166 }
00167
00168 ACEXML_Attribute_Def_Builder *
00169 ACEXML_Debug_Attributes_Builder::getAttribute_Def_Builder ()
00170 {
00171 ACEXML_Attribute_Def_Builder *tmp;
00172
00173 ACE_NEW_RETURN (tmp,
00174 ACEXML_Debug_Attribute_Builder (),
00175 0);
00176 return tmp;
00177 }
00178
00179 int
00180 ACEXML_Debug_Attributes_Builder::insertAttribute (ACEXML_Attribute_Def_Builder *def ACEXML_ENV_ARG_DECL)
00181 {
00182 ACEXML_Attribute_Def_Builder::VAR ptr (def);
00183
00184 if (def != 0)
00185 {
00186 ACEXML_String attname (def->getName (), 0, 0);
00187 ACEXML_Debug_Attribute_Builder *ptr =
00188 dynamic_cast<ACEXML_Debug_Attribute_Builder *> (def);
00189 this->attributes_.bind (attname, *ptr);
00190 return 0;
00191 }
00192 ACEXML_THROW_RETURN (ACEXML_SAXParseException (ACE_TEXT("ACEXML_Debug_Attributes_Builder internal error")), -1);
00193 }
00194
00195 void
00196 ACEXML_Debug_Attributes_Builder::dump (void)
00197 {
00198
00199 cout << "<!ATTLIST " << this->element_name_ << endl;
00200
00201 ACEXML_ATT_MAP_ITER iter (this->attributes_);
00202 ACEXML_ATT_MAP_ENTRY *item;
00203
00204 while (iter.advance () != 0)
00205 {
00206 iter.next (item);
00207 cout << "\n\t";
00208 item->int_id_.dump ();
00209 }
00210 cout << ">" << endl;
00211 }