forked from AmbaPant/mantid
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ICat3Helper.h
120 lines (94 loc) · 4.67 KB
/
ICat3Helper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright © 2010 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once
#include "MantidAPI/CatalogSession.h"
#include "MantidAPI/ITableWorkspace_fwd.h"
#include "MantidAPI/TableRow.h"
#include "MantidICat/CatalogSearchParam.h"
#include "MantidICat/ICat3/GSoapGenerated/ICat3ICATPortBindingProxy.h"
namespace Mantid {
namespace ICat {
/** CatalogSearchHelper is a utility class used in Mantid ICat3 based
information catalog
class to connect ICat API services using the gsoap generated proxy class and
retrieve data from ICat services.
@author Sofia Antony, ISIS Rutherford Appleton Laboratory
@date 07/07/2010
*/
class CICatHelper {
public:
/// constructor
CICatHelper();
/// search method
int doSearch(ICat3::ICATPortBindingProxy &icat, std::shared_ptr<ICat3::ns1__searchByAdvanced> &request,
ICat3::ns1__searchByAdvancedResponse &response);
/// calls getInvestigationIncludes api's
void getDataFiles(long long invstId, ICat3::ns1__investigationInclude include,
API::ITableWorkspace_sptr &responsews_sptr);
/// this method calls Icat api getInvestigationIncludes and returns datasets
/// for the given investigation id.
void doDataSetsSearch(long long invstId, ICat3::ns1__investigationInclude include,
API::ITableWorkspace_sptr &responsews_sptr);
/// This method lists the isntruments
void listInstruments(std::vector<std::string> &instruments);
/// This method lists the investigation types
void listInvestigationTypes(std::vector<std::string> &investTypes);
/// This method disconnects last connected session from icat DB
int doLogout();
/// This method does investigations data search for logged in user
void doMyDataSearch(API::ITableWorkspace_sptr &ws_sptr);
/// do advanced search
void doAdvancedSearch(const CatalogSearchParam &inputs, API::ITableWorkspace_sptr &outputws, const int &offset,
const int &limit);
/// Obtain the number of results returned by the doAdvancedSearch method.
int64_t getNumberOfSearchResults(const CatalogSearchParam &inputs);
// do login
API::CatalogSession_sptr doLogin(const std::string &username, const std::string &password,
const std::string &endpoint, const std::string &facility);
/// get the url of the given file id
const std::string getdownloadURL(const long long &fileId);
/// get location of data file or download method
const std::string getlocationString(const long long &fileid);
private:
/// This method saves the response data of search by run number to table
/// workspace
void saveSearchRessults(const ICat3::ns1__searchByAdvancedPaginationResponse &response,
API::ITableWorkspace_sptr &outputws);
/// this method saves investigation include response to a table workspace
void saveInvestigationIncludesResponse(const ICat3::ns1__getInvestigationIncludesResponse &response,
API::ITableWorkspace_sptr &outputws);
/// This method saves Datasets to a table workspace
void saveDataSets(const ICat3::ns1__getInvestigationIncludesResponse &response, API::ITableWorkspace_sptr &outputws);
/// This method saves the myinvestigations data to a table workspace
void saveMyInvestigations(const ICat3::ns1__getMyInvestigationsIncludesResponse &response,
API::ITableWorkspace_sptr &outputws);
/// save investigations
void saveInvestigations(const std::vector<ICat3::ns1__investigation *> &investigations,
API::ITableWorkspace_sptr &outputws);
/// Builds search query based on user input and stores query in related ICAT
/// class.
ICat3::ns1__advancedSearchDetails *buildSearchQuery(const CatalogSearchParam &inputs);
// Defines the SSL authentication scheme.
void setSSLContext(ICat3::ICATPortBindingProxy &icat);
// Sets the soap-endpoint & SSL context for the given ICAT proxy.
void setICATProxySettings(ICat3::ICATPortBindingProxy &icat);
/** This is a template method to save data to table workspace
* @param input :: pointer to input value
* @param t :: table row reference
*/
template <class T> void savetoTableWorkspace(const T *input, Mantid::API::TableRow &t) {
if (input != nullptr) {
t << *input;
} else {
t << "";
}
}
// Stores the session details for a specific catalog.
API::CatalogSession_sptr m_session;
};
} // namespace ICat
} // namespace Mantid