bootstrap: refactoring ClickCommand
authorWonki Kim <wonki_.kim@samsung.com>
Thu, 26 Mar 2020 10:30:04 +0000 (19:30 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Fri, 3 Apr 2020 00:33:21 +0000 (09:33 +0900)
this patch modifies ClickCommand to use polypolphic call

Change-Id: I3583a30110153d5a75db767a4d9cff732778edd6

bootstrap/server/inc/Commands/ClickCommand.h
bootstrap/server/src/AurumServiceImpl.cc
bootstrap/server/src/Commands/ClickCommand.cc

index d731dd6..cf03a01 100644 (file)
@@ -7,15 +7,32 @@
 #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;
 };
 
index 05faf98..4ac6763 100644 (file)
@@ -46,11 +46,12 @@ aurumServiceImpl::~aurumServiceImpl() {}
     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,
index 374eb9f..8ccc6ad 100644 (file)
@@ -13,26 +13,46 @@ ClickCommand::ClickCommand(const ::aurum::ReqClick* request,
 
 ::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;
+}