Add --set-bucket and --delete-bucket to Cyad
[platform/core/security/cynara.git] / src / cyad / CommandlineParser / CyadCommand.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file        src/cyad/CommandlineParser/CyadCommand.h
18  * @author      Aleksander Zdyb <a.zdyb@samsung.com>
19  * @version     1.0
20  * @brief       A representation of Cyad command
21  */
22
23 #ifndef SRC_CYAD_COMMANDLINEPARSER_CYADCOMMAND_H_
24 #define SRC_CYAD_COMMANDLINEPARSER_CYADCOMMAND_H_
25
26 #include <string>
27
28 #include <types/PolicyBucketId.h>
29 #include <types/PolicyResult.h>
30
31 namespace Cynara {
32
33 class CommandsDispatcher;
34
35 class CyadCommand {
36 public:
37     CyadCommand() = default;
38     virtual ~CyadCommand() {}
39
40     virtual int run(CommandsDispatcher &dispatcher);
41
42     virtual bool isError(void) const {
43         return false;
44     }
45 };
46
47 class ErrorCyadCommand : public CyadCommand {
48 public:
49     ErrorCyadCommand(const std::string &message) : m_message(message) {}
50     virtual ~ErrorCyadCommand() {}
51
52     virtual int run(CommandsDispatcher &dispatcher);
53
54     virtual bool isError(void) const {
55         return true;
56     }
57
58     virtual const std::string &message(void) const {
59         return m_message;
60     }
61
62 private:
63     std::string m_message;
64 };
65
66 class HelpCyadCommand : public CyadCommand {
67 public:
68     using CyadCommand::CyadCommand;
69
70     virtual int run(CommandsDispatcher &dispatcher);
71 };
72
73 class SetBucketCyadCommand : public CyadCommand {
74 public:
75     SetBucketCyadCommand(const PolicyBucketId &bucketId, const PolicyResult &policyResult)
76         : m_bucketId(bucketId), m_policyResult(policyResult) {}
77
78     virtual ~SetBucketCyadCommand() {}
79
80     virtual int run(CommandsDispatcher &dispatcher);
81
82     const PolicyBucketId &bucketId(void) const {
83         return m_bucketId;
84     }
85
86     const PolicyResult &policyResult(void) const {
87         return m_policyResult;
88     }
89
90 private:
91     PolicyBucketId m_bucketId;
92     PolicyResult m_policyResult;
93 };
94
95 class DeleteBucketCyadCommand : public CyadCommand {
96 public:
97     explicit DeleteBucketCyadCommand(const PolicyBucketId &bucketId) : m_bucketId(bucketId) {}
98
99     virtual ~DeleteBucketCyadCommand() {}
100
101     virtual int run(CommandsDispatcher &dispatcher);
102
103     const PolicyBucketId &bucketId(void) const {
104         return m_bucketId;
105     }
106
107 private:
108     PolicyBucketId m_bucketId;
109 };
110
111 } /* namespace Cynara */
112
113 #endif /* SRC_CYAD_COMMANDLINEPARSER_CYADCOMMAND_H_ */