mirror of
https://github.com/fralx/LimeReport.git
synced 2025-09-23 08:29:07 +03:00
Database connections have been refactored
keepDbCredentials property has been added to Connection setPassPharse(QString& passPharse) method has been added to ReportEngine IDbCredentialsProvider interface has been added registerDbCredentialsProvider(IDbCredentialsProvider *provider) has been added to IDataSourceManager
This commit is contained in:
@@ -35,10 +35,16 @@ namespace LimeReport {
|
||||
class SerializatorIntf
|
||||
{
|
||||
public:
|
||||
virtual QVariant loadValue()=0;
|
||||
virtual void save(const QVariant& value,QString name)=0;
|
||||
virtual QVariant loadValue() = 0;
|
||||
virtual void save(const QVariant& value,QString name) = 0;
|
||||
virtual ~SerializatorIntf(){}
|
||||
};
|
||||
|
||||
class CryptedSerializator : public virtual SerializatorIntf
|
||||
{
|
||||
public:
|
||||
virtual void setPassPhrase(const QString& passPhrase) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
#endif // LRSERIALIZATORINTF_H
|
||||
|
@@ -39,18 +39,19 @@ namespace LimeReport{
|
||||
|
||||
class ObjectLoadingStateIntf{
|
||||
public:
|
||||
virtual bool isLoading()=0;
|
||||
virtual void objectLoadStarted()=0;
|
||||
virtual void objectLoadFinished()=0;
|
||||
virtual bool isLoading() = 0;
|
||||
virtual void objectLoadStarted() = 0;
|
||||
virtual void objectLoadFinished() = 0;
|
||||
};
|
||||
|
||||
class ItemsWriterIntf
|
||||
{
|
||||
public:
|
||||
virtual void putItem(QObject* item)=0;
|
||||
virtual void putItem(QObject* item) = 0;
|
||||
virtual bool saveToFile(QString fileName) = 0;
|
||||
virtual QString saveToString() = 0;
|
||||
virtual QByteArray saveToByteArray() = 0;
|
||||
virtual void setPassPhrase(const QString& passPhrase) = 0;
|
||||
virtual ~ItemsWriterIntf(){}
|
||||
};
|
||||
|
||||
@@ -58,14 +59,15 @@ class ItemsReaderIntf
|
||||
{
|
||||
public:
|
||||
typedef QSharedPointer<ItemsReaderIntf> Ptr;
|
||||
virtual bool first()=0;
|
||||
virtual bool next()=0;
|
||||
virtual bool prior()=0;
|
||||
virtual QString itemType()=0;
|
||||
virtual QString itemClassName()=0;
|
||||
virtual bool readItem(QObject *item)=0;
|
||||
virtual int firstLevelItemsCount()=0;
|
||||
virtual QString lastError()=0;
|
||||
virtual bool first() = 0;
|
||||
virtual bool next() = 0;
|
||||
virtual bool prior() = 0;
|
||||
virtual QString itemType() = 0;
|
||||
virtual QString itemClassName() = 0;
|
||||
virtual bool readItem(QObject *item) = 0;
|
||||
virtual int firstLevelItemsCount() = 0;
|
||||
virtual QString lastError() = 0;
|
||||
virtual void setPassPhrase(const QString& passPhrase) = 0;
|
||||
virtual ~ItemsReaderIntf(){}
|
||||
};
|
||||
|
||||
|
@@ -109,7 +109,7 @@ void XmlQStringSerializator::save(const QVariant &value, QString name)
|
||||
QDomElement _node = doc()->createElement(name);
|
||||
_node.setAttribute("Type","QString");
|
||||
if (name.compare("password")==0){
|
||||
Chipper chipper;
|
||||
Chipper chipper(passPhrase());
|
||||
QByteArray ba = chipper.cryptString(value.toString());
|
||||
//ba.append();
|
||||
_node.setAttribute("Value",QString(ba.toBase64()));
|
||||
@@ -123,7 +123,7 @@ QVariant XmlQStringSerializator::loadValue()
|
||||
{
|
||||
if (node()->tagName().compare("password")==0){
|
||||
QByteArray ba;
|
||||
Chipper chipper;
|
||||
Chipper chipper(passPhrase());
|
||||
ba.append(node()->attribute("Value").toLatin1());
|
||||
return chipper.decryptByteArray(QByteArray::fromBase64(ba));
|
||||
} else
|
||||
|
@@ -36,7 +36,7 @@
|
||||
|
||||
namespace LimeReport{
|
||||
|
||||
class XmlBaseSerializator : public SerializatorIntf{
|
||||
class XmlBaseSerializator : public virtual SerializatorIntf{
|
||||
public:
|
||||
XmlBaseSerializator(QDomDocument *doc, QDomElement *node):m_doc(doc),m_node(node){}
|
||||
protected:
|
||||
@@ -48,10 +48,21 @@ private:
|
||||
QDomElement *m_node;
|
||||
};
|
||||
|
||||
class XmlQStringSerializator : public XmlBaseSerializator
|
||||
class XmlCryptedSerializator : public XmlBaseSerializator, public virtual CryptedSerializator{
|
||||
public:
|
||||
XmlCryptedSerializator(QDomDocument *doc, QDomElement *node)
|
||||
:XmlBaseSerializator(doc, node){}
|
||||
virtual void setPassPhrase(const QString& passPhrase) {m_passPhrase = passPhrase;}
|
||||
protected:
|
||||
QString passPhrase(){ return m_passPhrase;}
|
||||
private:
|
||||
QString m_passPhrase;
|
||||
};
|
||||
|
||||
class XmlQStringSerializator : public XmlCryptedSerializator
|
||||
{
|
||||
public:
|
||||
XmlQStringSerializator(QDomDocument *doc, QDomElement *node):XmlBaseSerializator(doc,node){}
|
||||
XmlQStringSerializator(QDomDocument *doc, QDomElement *node):XmlCryptedSerializator(doc,node){}
|
||||
private:
|
||||
virtual void save(const QVariant &value,QString name);
|
||||
virtual QVariant loadValue();
|
||||
|
@@ -135,6 +135,11 @@ QString XMLReader::lastError()
|
||||
return m_error;
|
||||
}
|
||||
|
||||
void XMLReader::setPassPhrase(const QString &passPhrase)
|
||||
{
|
||||
m_passPhrase = passPhrase;
|
||||
}
|
||||
|
||||
bool XMLReader::extractFirstNode()
|
||||
{
|
||||
if (m_firstNode.isNull()){
|
||||
@@ -166,6 +171,10 @@ QVariant XMLReader::getValue(QDomElement *node)
|
||||
|
||||
if (creator) {
|
||||
QScopedPointer<SerializatorIntf>serializator(creator(m_doc.data(),node));
|
||||
CryptedSerializator* cs = dynamic_cast<CryptedSerializator*>(serializator.data());
|
||||
if (cs){
|
||||
cs->setPassPhrase(m_passPhrase);
|
||||
}
|
||||
return serializator->loadValue();
|
||||
}
|
||||
return QVariant();
|
||||
|
@@ -44,14 +44,17 @@ public:
|
||||
XMLReader();
|
||||
XMLReader(QSharedPointer<QDomDocument> doc);
|
||||
protected:
|
||||
//ItemsReaderIntf interface
|
||||
bool first();
|
||||
bool next();
|
||||
bool prior();
|
||||
QString itemType();
|
||||
QString itemClassName();
|
||||
bool readItem(QObject *item);
|
||||
int firstLevelItemsCount();
|
||||
QString lastError();
|
||||
void setPassPhrase(const QString &passPhrase);
|
||||
|
||||
virtual bool first();
|
||||
virtual bool next();
|
||||
virtual bool prior();
|
||||
virtual QString itemType();
|
||||
virtual QString itemClassName();
|
||||
virtual bool readItem(QObject *item);
|
||||
virtual int firstLevelItemsCount();
|
||||
virtual bool prepareReader(QDomDocument *doc);
|
||||
|
||||
void readItemFromNode(QObject *item, QDomElement *node);
|
||||
@@ -60,7 +63,7 @@ protected:
|
||||
void readCollection(QObject *item, QDomElement *node);
|
||||
QVariant getValue(QDomElement *node);
|
||||
|
||||
virtual QString lastError();
|
||||
|
||||
protected:
|
||||
bool extractFirstNode();
|
||||
QString m_error;
|
||||
@@ -68,6 +71,11 @@ private:
|
||||
QSharedPointer<QDomDocument> m_doc;
|
||||
QDomElement m_curNode;
|
||||
QDomElement m_firstNode;
|
||||
QString m_passPhrase;
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
class FileXMLReader : public XMLReader{
|
||||
|
@@ -113,6 +113,11 @@ QByteArray XMLWriter::saveToByteArray()
|
||||
return res;
|
||||
}
|
||||
|
||||
void XMLWriter::setPassPhrase(const QString &passPhrase)
|
||||
{
|
||||
m_passPhrase = passPhrase;
|
||||
}
|
||||
|
||||
QDomElement XMLWriter::putQObjectItem(QString name, QObject *item)
|
||||
{
|
||||
Q_UNUSED(name)
|
||||
@@ -158,6 +163,10 @@ void XMLWriter::saveProperty(QString name, QObject* item, QDomElement *node)
|
||||
|
||||
if (creator) {
|
||||
QScopedPointer<SerializatorIntf> serializator(creator(m_doc.data(),node));
|
||||
CryptedSerializator* cs = dynamic_cast<CryptedSerializator*>(serializator.data());
|
||||
if (cs){
|
||||
cs->setPassPhrase(m_passPhrase);
|
||||
}
|
||||
serializator->save(
|
||||
item->property(name.toLatin1()),
|
||||
name
|
||||
|
@@ -44,10 +44,13 @@ public:
|
||||
XMLWriter(QSharedPointer<QDomDocument> doc);
|
||||
~XMLWriter() {}
|
||||
private:
|
||||
// ItemsWriterIntf interface
|
||||
void putItem(QObject* item);
|
||||
bool saveToFile(QString fileName);
|
||||
QString saveToString();
|
||||
QByteArray saveToByteArray();
|
||||
void setPassPhrase(const QString &passPhrase);
|
||||
|
||||
void init();
|
||||
QDomElement putQObjectItem(QString name, QObject* item);
|
||||
void putChildQObjectItem(QString name, QObject* item, QDomElement* parentNode);
|
||||
@@ -66,6 +69,7 @@ private:
|
||||
QSharedPointer<QDomDocument> m_doc;
|
||||
QString m_fileName;
|
||||
QDomElement m_rootElement;
|
||||
QString m_passPhrase;
|
||||
};
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user