#include "ObjectMapper.h"
#include "aurum.grpc.pb.h"
#include "config.h"
-
class ClickCommand : public Command {
-private:
+protected:
const ::aurum::ReqClick* mRequest;
::aurum::RspClick* mResponse;
public:
ClickCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
- ;
+ ::grpc::Status execute() override;
+ static std::unique_ptr<ClickCommand> createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response);
+};
+
+class ClickElementCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class ClickCoordCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
+ ::grpc::Status execute() override;
+};
+
+class ClickAtspiCommand : public ClickCommand {
+ using ClickCommand::ClickCommand;
+public:
::grpc::Status execute() override;
};
std::unique_ptr<FindElementCommand> cmd = std::make_unique<FindElementCommand>(request, response);
return execute(cmd.get());
}
+
::grpc::Status aurumServiceImpl::aurumServiceImpl::click(
::grpc::ServerContext* context, const ::aurum::ReqClick* request,
::aurum::RspClick* response)
{
- std::unique_ptr<ClickCommand> cmd = std::make_unique<ClickCommand>(request, response);
+ std::unique_ptr<ClickCommand> cmd = ClickCommand::createCommand(request, response);
return execute(cmd.get());
}
::grpc::Status aurumServiceImpl::getValue(::grpc::ServerContext* context,
::grpc::Status ClickCommand::execute()
{
- LOG_SCOPE_F(INFO, "Click --------------- ");
-
- ObjectMapper* mObjMap = ObjectMapper::getInstance();
- ::aurum::ReqClick_RequestType type = mRequest->type();
-
- if (type == ::aurum::ReqClick_RequestType_ELEMENTID) {
- UiObject* obj = mObjMap->getElement(mRequest->elementid());
- if (obj) {
- obj->click();
- mResponse->set_status(::aurum::RspStatus::OK);
- } else
- mResponse->set_status(::aurum::RspStatus::ERROR);
- } else if (type == ::aurum::ReqClick_RequestType_COORD) {
- UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
- const ::aurum::Point& point = mRequest->coordination();
- obj->click(point.x(), point.y());
+ return grpc::Status::CANCELLED;
+}
+
+std::unique_ptr<ClickCommand> ClickCommand::createCommand(const ::aurum::ReqClick* request, ::aurum::RspClick* response)
+{
+ ::aurum::ReqClick_RequestType type = request->type();
+
+ if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ELEMENTID)
+ return std::make_unique<ClickElementCommand>(request, response);
+ else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_COORD)
+ return std::make_unique<ClickCoordCommand>(request, response);
+ else if (type == ::aurum::ReqClick_RequestType::ReqClick_RequestType_ATSPI)
+ return std::make_unique<ClickAtspiCommand>(request, response);
+ else
+ return std::make_unique<ClickCommand>(request, response);
+}
+
+::grpc::Status ClickElementCommand::execute()
+{
+ ObjectMapper* mObjMap = ObjectMapper::getInstance();
+ UiObject* obj = mObjMap->getElement(mRequest->elementid());
+
+ if (obj) {
+ obj->click();
mResponse->set_status(::aurum::RspStatus::OK);
- } else if (type == ::aurum::ReqClick_RequestType_ATSPI) {
+ } else
mResponse->set_status(::aurum::RspStatus::ERROR);
- }
return grpc::Status::OK;
}
+
+::grpc::Status ClickCoordCommand::execute()
+{
+ UiDevice* obj = UiDevice::getInstance(DeviceType::DEFAULT);
+ const ::aurum::Point& point = mRequest->coordination();
+ obj->click(point.x(), point.y());
+ mResponse->set_status(::aurum::RspStatus::OK);
+}
+
+::grpc::Status ClickAtspiCommand::execute()
+{
+ return grpc::Status::CANCELLED;
+}