Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "DetectorDescription/Parser/src/StrX.h"
00015 #include "DetectorDescription/Parser/interface/DDLSAX2ConfigHandler.h"
00016
00017 #include "DetectorDescription/Base/interface/DDdebug.h"
00018 #include "DetectorDescription/Core/interface/DDRoot.h"
00019 #include "DetectorDescription/Core/interface/DDLogicalPart.h"
00020
00021 #include <iostream>
00022
00023 DDLSAX2ConfigHandler::DDLSAX2ConfigHandler( DDCompactView& cpv)
00024 : doValidation_(false),
00025 files_(),
00026 urls_(),
00027 schemaLocation_(),
00028 cpv_(cpv)
00029 {}
00030
00031 DDLSAX2ConfigHandler::~DDLSAX2ConfigHandler( void )
00032 {}
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 void
00047 DDLSAX2ConfigHandler::startElement( const XMLCh* const uri,
00048 const XMLCh* const localname,
00049 const XMLCh* const qname,
00050 const Attributes& attrs )
00051 {
00052
00053 ++elementCount_;
00054 attrCount_ += attrs.getLength();
00055
00056 std::string myelemname(StrX(qname).localForm());
00057 DCOUT_V('P', "DetectorDescription/Parser/interface/DDLSAX2ConfigHandler::startElement" << myelemname << " started...");
00058
00059 unsigned int numAtts = attrs.getLength();
00060 unsigned int i = 0;
00061 if (myelemname == "File")
00062 {
00063 std::string name="", url="";
00064 while ( i < numAtts )
00065 {
00066 std::string myattname(StrX(attrs.getLocalName(i)).localForm());
00067 std::string myvalue(StrX(attrs.getValue(i)).localForm());
00068
00069 if (myattname == "name")
00070 name=myvalue;
00071 if (myattname == "url")
00072 url=myvalue;
00073 ++i;
00074 }
00075 DCOUT('P', "file name = " << name << " and url = " << url);
00076 files_.push_back(name);
00077 urls_.push_back(url);
00078 }
00079 else if (myelemname == "Root")
00080 {
00081 std::string fileName="", logicalPartName="";
00082 while ( i < numAtts )
00083 {
00084 std::string myattname(StrX(attrs.getLocalName(i)).localForm());
00085 std::string myvalue(StrX(attrs.getValue(i)).localForm());
00086
00087 if (myattname == "fileName")
00088 fileName = myvalue;
00089 if (myattname == "logicalPartName")
00090 logicalPartName = myvalue;
00091 ++i;
00092 }
00093
00094 fileName = fileName.substr(0, fileName.find("."));
00095
00096 DDLogicalPart root(DDName(logicalPartName,fileName));
00097 DDRootDef::instance().set(root);
00099
00100
00101 cpv_.setRoot(root);
00102 DCOUT_V('P', std::string("DetectorDescription/Parser/interface/DDLSAX2ConfigHandler::startElement. Setting DDRoot LogicalPart=") + logicalPartName + std::string(" in ") + fileName);
00103
00104 }
00105 else if (myelemname == "Schema")
00106 {
00107 while ( i < numAtts )
00108 {
00109 std::string myattname(StrX(attrs.getLocalName(i)).localForm());
00110 std::string myvalue(StrX(attrs.getValue(i)).localForm());
00111 if (myattname == "schemaLocation")
00112 schemaLocation_ = myvalue;
00113 else if (myattname == "validation")
00114 doValidation_ = (myvalue == "true" ? true : false);
00115 ++i;
00116 }
00117 }
00118
00119 }
00120
00121 const std::vector<std::string>&
00122 DDLSAX2ConfigHandler::getFileNames( void ) const
00123 {
00124 return files_;
00125 }
00126
00127 const std::vector<std::string>&
00128 DDLSAX2ConfigHandler::getURLs( void ) const
00129 {
00130 return urls_;
00131 }
00132
00133 const std::string
00134 DDLSAX2ConfigHandler::getSchemaLocation( void ) const
00135 {
00136 return schemaLocation_;
00137 }
00138
00139 const bool
00140 DDLSAX2ConfigHandler::doValidation( void ) const
00141 {
00142 return doValidation_;
00143 }