20#include <boost/lexical_cast.hpp>
22#include <QtCore/QTextStream>
34namespace DocumentsReader {
38 const QString& elementName,
unsigned int firstBytePos )
39: m_elementName(elementName), m_offset(firstBytePos)
46 for( deque<ContentElementPart*>::iterator cIt = begin() ; cIt != end() ; cIt++ ) {
62 const unsigned int offset )
66 LDEBUG <<
"AbstractStructuredDocumentElement::addPart:" << text.left(50) <<
"(...)" << offset;
75 LDEBUG <<
"AbstractStructuredDocumentElement::addToCurrentOffset:" << value.left(50) <<
"(...)";
84 back()->addText(value);
87 LDEBUG <<
"AbstractStructuredDocumentElement::addToCurrentOffset end offset = " <<
m_offset;
88 LDEBUG <<
"AbstractStructuredDocumentElement::addToCurrentOffset "<<
this<<
" text:" << back()->getText();
95 LDEBUG <<
"AbstractStructuredDocumentElement::addSpaces(" << nbSpaces <<
")";
97 back()->addText(QString(nbSpaces,
' ') );
99 LDEBUG <<
"AbstractStructuredDocumentElement::addSpaces text:" << back()->getText();
109 properties.
print(out);
115 properties.
print(out);
121 properties.
print(out);
128 for(
auto iter=begin(); iter!=end(); iter++) {
129 out << iter->first.getId() <<
"," <<
storageTypeTag[iter->first.getStorageType()].toStdString()
130 <<
"," <<
cardinalityTypeTag[iter->first.getValueCardinality()].toStdString() <<
": ";
131 for(
auto str : iter->second) {
140 for(
auto iter=begin(); iter!=end(); iter++) {
141 out << QString::fromStdString(iter->first.getId()) <<
"," <<
storageTypeTag[iter->first.getStorageType()]
143 for(
auto str : iter->second) {
144 out << QString::fromStdString(str) <<
", ";
152 for(
auto iter=begin(); iter!=end(); iter++) {
153 out << QString::fromStdString(iter->first.getId()) <<
"," <<
storageTypeTag[iter->first.getStorageType()]
155 for(
auto str : iter->second) {
156 out << QString::fromStdString(str) <<
", ";
170 LDEBUG <<
"DiscardableDocumentElement::DiscardableDocumentElement(" << elementName <<
")";
175 const QString& elementName,
176 unsigned int firstBytePos,
182 LDEBUG <<
"PresentationDocumentElement::PresentationDocumentElement(" << elementName <<
")";
188 const QString& elementName,
189 unsigned int firstBytePos,
196 LDEBUG <<
"IgnoredDocumentElement::IgnoredDocumentElement(" << elementName <<
")";
202 const QString& elementName,
203 unsigned int firstBytePos,
216 const QString& elementName,
217 unsigned int firstBytePos,
228 const QString& elementName,
229 unsigned int firstBytePos,
235 LDEBUG <<
"HierarchyDocumentElement::HierarchyDocumentElement(" << elementName <<
")";
241 const QString& elementName,
unsigned int firstBytePos,
249 LDEBUG <<
"IndexingDocumentElement::IndexingDocumentElement(" << elementName <<
")";
270 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue" <<
getElementName() <<
this <<
"," << toBePropagated.size() <<
"properties";
273 if(toBePropagated.size()) {
275 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue properties:" << toBePropagated;
279 for(
auto it = toBePropagated.begin() ; it != toBePropagated.end() ; it++ )
282 std::vector<std::string> v_data = (*it).second;
286 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue do not try to propagate empty value for" <<
property.
getId();
292 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue add propagated value for later use, for" <<
property.getId() << v_data;
298 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue append propagated value for later use, for" <<
property.getId() << v_data;
300 for(std::string data : v_data) {
303 if(std::find(ite_Beg,ite_End,data) == ite_End) {
310 LTRACE <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue propagating" <<
property.getId() << v_data;
312 for(std::string data : v_data) {
316 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue do not try to propagate empty value for" <<
property.getId();
321 LTRACE <<
"AbstractStructuredDocumentElementWithProperties::setPropagatedValue propagating" <<
property.getId() << data;
323 switch (property.getStorageType()) {
352 LDEBUG <<
"AbstractStructuredDocumentElementWithProperties::addProperty" <<
getElementName() << propType.
getId() << value;
357 auto result =
m_toBePropagated.insert(std::make_pair(propType, std::vector<std::string>(1,value) ));
361 LERROR <<
"AbstractStructuredDocumentElementWithProperties::addProperty FAILED to add" <<
getElementName() << propType.
getId() << value;
void setStringValue(const std::string &propName, const std::string &val)
void addStringValue(const std::string &propName, const std::string &str)
void setDateValue(const std::string &propName, const QDate &val)
void setIntValue(const std::string &propName, const uint64_t &val)
virtual bool isDiscarding()
void addProperty(const DocumentPropertyType &propType, const std::string &value)
virtual ~AbstractStructuredDocumentElementWithProperties()
AbstractStructuredDocumentElementWithProperties(const QString &elementName, unsigned int firstBytePos, const PropagatedProperties &toBePropagated)
PropagatedProperties m_toBePropagated
void setPropagatedValue(const PropagatedProperties &toBePropagated)
const PropagatedProperties & getPropertyList() const
Element avec contenu texte.
void addPart(const Lima::LimaString &text, const unsigned int offset)
unsigned long int getOffset()
unsigned long int m_offset
current position during parsing
virtual const QString & getElementName() const
AbstractStructuredDocumentElement(const QString &elementName, unsigned int firstBytePos)
virtual void addToCurrentOffset(const Lima::LimaString &value)
DocumentPropertyType m_propType
virtual ~AbstractStructuredDocumentElement()
Lima::LimaString m_propertyValue
void addSpaces(int nbSpaces)
void setOffset(unsigned long int offset)
Partie de texte (contenu dans un element) partageant le meme offset caractere.
static void parseDate(const std::string &dateStr, QDate &dateBegin, QDate &dateEnd)
DiscardableDocumentElement(const QString &elementName, unsigned int firstBytePos)
bool hasPropType() override
void addToCurrentOffset(const Lima::LimaString &value) override
DocumentPropertyElement(const QString &elementName, unsigned int firstBytePos, const DocumentPropertyType &propType)
const CardinalityType & getValueCardinality() const
HierarchyDocumentElement(const QString &elementName, unsigned int firstBytePos, const PropagatedProperties &toBePropagated)
IgnoredDocumentElement(const QString &elementName, unsigned int firstBytePos, const DocumentPropertyType &propType, const PropagatedProperties &toBePropagated)
~IndexingDocumentElement()
IndexingDocumentElement(const QString &elementName, unsigned int firstBytePos, const DocumentPropertyType &propType, const PropagatedProperties &toBePropagated)
PresentationDocumentElement(const QString &elementName, unsigned int firstBytePos, const PropagatedProperties &toBePropagated)
virtual void print(std::ostream &) const
const std::string & getId() const
get the object id
std::ostream & operator<<(std::ostream &out, const PropagatedProperties &properties)
static const QString cardinalityTypeTag[MAX_STORAGE_TYPE]
static const QString storageTypeTag[MAX_STORAGE_TYPE]