1 /*=============================================================================
2 
3   Library: XNAT/Core
4 
5   Copyright (c) German Cancer Research Center,
6     Division of Medical and Biological Informatics
7 
8   Licensed under the Apache License, Version 2.0 (the "License");
9   you may not use this file except in compliance with the License.
10   You may obtain a copy of the License at
11 
12     http://www.apache.org/licenses/LICENSE-2.0
13 
14   Unless required by applicable law or agreed to in writing, software
15   distributed under the License is distributed on an "AS IS" BASIS,
16   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17   See the License for the specific language governing permissions and
18   limitations under the License.
19 
20 =============================================================================*/
21 
22 #ifndef CTKXNATRESOURCECATALOGXMLPARSER_H
23 #define CTKXNATRESOURCECATALOGXMLPARSER_H
24 
25 #include "ctkXNATCoreExport.h"
26 
27 #include <QList>
28 #include <QVariantMap>
29 
30 class ctkXnatResourceCatalogXmlParserPrivate;
31 
32 /**
33  * @brief Parses the xml response when requesting the catalog xml of a resource
34  *
35  * When sending the following request to XNAT:
36  * <xnat-url>/projects/myProject/resources/<resource-id>
37  * you get the catalog xml of the resource folder as response
38  *
39  * This class parses this response and returns the MD5 hashes of all the resource files,
40  * which are contained by the resource folder.
41  *
42  * @ingroup XNAT_Core
43  */
44 class CTK_XNAT_CORE_EXPORT ctkXnatResourceCatalogXmlParser
45 {
46 
47 public:
48   ctkXnatResourceCatalogXmlParser();
49   ~ctkXnatResourceCatalogXmlParser();
50 
51   /**
52    * @brief Set the xml input for the parser
53    * @param xmlInput as QByteArray
54    */
55   void setData(const QByteArray& xmlInput);
56 
57   /**
58    * @brief Parses the xml input and extracts the md5 hashes of the resource catalog
59    * @param result the QList in which the md5 hashes will be stored
60    */
61   void parseXml(QList<QVariantMap> &result);
62 private:
63 
64   ctkXnatResourceCatalogXmlParser(const ctkXnatResourceCatalogXmlParser& );
65   ctkXnatResourceCatalogXmlParser& operator=(const ctkXnatResourceCatalogXmlParser& );
66 
67   /// The private implementation part of the object.
68   ctkXnatResourceCatalogXmlParserPrivate* d_ptr;
69 
70   Q_DECLARE_PRIVATE(ctkXnatResourceCatalogXmlParser)
71 };
72 
73 #endif //CTKXNATRESOURCECATALOGXMLPARSER_H
74