Merge pull request #41 from RS7-SECIOTSRK/develop
[platform/core/security/suspicious-activity-monitor.git] / servers / mq / src / main / java / com / samsung / servermq / iotivity / extractor / impl / PolicyPostDataExtractor.java
1 /*
2  * In Samsung Ukraine R&D Center (SRK under a contract between)
3  * LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea)
4  * Copyright (C) 2017 Samsung Electronics Co., Ltd. All rights reserved.
5  */
6 package com.samsung.servermq.iotivity.extractor.impl;
7
8 import org.apache.log4j.Logger;
9 import org.springframework.beans.factory.annotation.Autowired;
10
11 import com.samsung.commons.domain.Policy;
12 import com.samsung.commons.service.PolicyService;
13 import com.samsung.servermq.iotivity.extractor.PostDataExtractor;
14 import com.samsung.servermq.utils.MessageQueueKeys;
15 import com.samsung.servermq.utils.MessageQueueUtils;
16 import com.samsung.servermq.utils.rest.DsmApi;
17
18 /**
19  * The type Policy post data extractor.
20  *
21  * @author <A HREF="mailto:y.zozulia@samsung.com">Yevhen Zozulia</A>
22  * @version 1.0
23  * @see <a href="https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol"></a>
24  * @file PolicyPostDataExtractor.java
25  * @brief The type Policy post data extractor.
26  * @date Created : 7/6/2017
27  * @date Modified : 11/2/2017
28  * @par Copyright : (c) Samsung Electronics Co, Ltd 2017. All rights reserved
29  */
30 public class PolicyPostDataExtractor implements PostDataExtractor {
31
32     private static final Logger LOG = Logger.getLogger(PolicyPostDataExtractor.class);
33
34     @Autowired
35     private PolicyService policyService;
36
37     @Autowired
38     private DsmApi serverSender;
39
40     @Override
41     public void extract(byte[] data) {
42         try {
43             String policyData = MessageQueueUtils.extractDataFromPayload(data, MessageQueueKeys.POLICY.getKey());
44             String did = MessageQueueUtils.extractDataFromPayload(data, MessageQueueKeys.DUID.getKey());
45             String agent = MessageQueueUtils.extractDataFromPayload(data, MessageQueueKeys.AGENT.getKey());
46             LOG.debug("Get policy with parameters: did = " + did + "");
47             LOG.debug("Get policy data:" + policyData);
48             Policy policy = null;
49             if (agent == null || agent.isEmpty()) {
50                 policy = policyService.setDevicePolicy(did, policyData);
51                 serverSender.requestPolicy(policy.getId(), did);
52                 return;
53             }
54             policy = policyService.setAgentPolicy(agent, policyData);
55             serverSender.requestPolicyForAgent(policy.getId(), agent);
56         } catch (Exception e) {
57             LOG.error(e.getMessage(), e);
58         }
59     }
60
61     /**
62      * Sets policy service.
63      *
64      * @param policyService the policy service
65      */
66     public void setPolicyService(PolicyService policyService) {
67         this.policyService = policyService;
68     }
69
70     /**
71      * Sets server sender.
72      *
73      * @param serverSender the server sender
74      */
75     public void setServerSender(DsmApi serverSender) {
76         this.serverSender = serverSender;
77     }
78
79 }