Blob Blame History Raw


#ifndef VERSION_CONTROL_XML_READER_H
#define VERSION_CONTROL_XML_READER_H

#include <QXmlStreamReader>
#include <QList>

//-----------------------------------------------------------------------------

struct SVNPartialLockInfo {
	QString m_fileName;
	QString m_userName;
	QString m_hostName;
	unsigned int m_from;
	unsigned int m_to;
};

//-----------------------------------------------------------------------------

struct SVNPartialLock {
	QString m_fileName;
	QList<SVNPartialLockInfo> m_partialLockList;
};

//-----------------------------------------------------------------------------

class SVNPartialLockReader : public QXmlStreamReader
{
	QList<SVNPartialLock> m_partialLock;
	QString m_data;

	SVNPartialLock m_currentPartialLock;

public:
	SVNPartialLockReader(const QString &xmlSVNResponse);

	QList<SVNPartialLock> getPartialLock() { return m_partialLock; }

protected:
	void readTarget();
	void readProperty();
	void readUnknownElement();

	void readPartialLock(const QString &text);
};

//-----------------------------------------------------------------------------

struct SVNRepository {
	QString m_name;
	QString m_localPath;
	QString m_repoPath;
	QString m_username;
	QString m_password;
};

//-----------------------------------------------------------------------------

class SVNConfigReader : public QXmlStreamReader
{
	QList<SVNRepository> m_repositories;

	QString m_data;
	QString m_path;

public:
	SVNConfigReader(const QString &xml);
	QList<SVNRepository> getRepositories() { return m_repositories; }
	QString getSVNPath() { return m_path; }

protected:
	void readRepository();
	void readSVNPath();
	void readUnknownElement();
};

//-----------------------------------------------------------------------------

struct SVNStatus {
	QString m_item;
	QString m_workingRevision;
	QString m_commitRevision;
	QString m_author;
	QString m_path;
	QString m_commitDate;
	QString m_repoStatus;
	// Lock management
	bool m_isLocked;
	QString m_lockOwner;
	QString m_lockHostName;
	QString m_lockComment;
	QString m_lockDate;
	// Partial Lock Management
	bool m_isPartialLocked;
	bool m_isPartialEdited;
	unsigned int m_editFrom;
	unsigned int m_editTo;
};

//-----------------------------------------------------------------------------

class SVNStatusReader : public QXmlStreamReader
{
	QList<SVNStatus> m_status;

	QString m_data;
	QString m_currentPath;

	QString m_currentCommitRevision;
	QString m_currentAuthor;
	QString m_currentDate;

	bool m_currentIsLocked;
	QString m_currentLockComment;
	QString m_currentLockOwner;
	QString m_currentLockDate;

public:
	SVNStatusReader(const QString &xmlSVNResponse);
	~SVNStatusReader();

	QList<SVNStatus> getStatus() { return m_status; }

protected:
	void resetCurrentValues();

	void readEntry();
	void readWCStatus();
	void readRepoStatus();
	void readLock(bool statusAlreadyAdded);
	void readCommit();
	void readUnknownElement();
};

//-----------------------------------------------------------------------------

struct SVNLog {
	QString m_revision;
	QString m_author;
	QString m_date;
	QString m_msg;
};

//-----------------------------------------------------------------------------

class SVNLogReader : public QXmlStreamReader
{
	QList<SVNLog> m_log;

	QString m_data;

	QString m_currentRevision;
	QString m_currentAuthor;
	QString m_currentDate;
	QString m_currentMsg;

public:
	SVNLogReader(const QString &xmlSVNResponse);

	QList<SVNLog> getLog() { return m_log; }

protected:
	void readEntry();
	void readUnknownElement();
};

//-----------------------------------------------------------------------------

class SVNInfoReader : public QXmlStreamReader
{
	QString m_data;

	QString m_revision;
	QString m_url;

public:
	SVNInfoReader(const QString &xmlSVNResponse);

	QString getRevision() const { return m_revision; }
	QString getURL() const { return m_url; }

protected:
	void readEntry();
	void readUnknownElement();
};

//-----------------------------------------------------------------------------

struct SVNListInfo {
	QString m_kind;
	QString m_name;
};

//-----------------------------------------------------------------------------

class SVNListReader : public QXmlStreamReader
{
	QString m_data;
	QList<SVNListInfo> m_listInfo;

public:
	SVNListReader(const QString &xmlSVNResponse);

	QList<SVNListInfo> getList() { return m_listInfo; }

	QStringList getDirs();

protected:
	void readEntry();
	void readUnknownElement();
};

#endif // VERSION_CONTROL_XML_READER_H