refactoring RD server
[iotivity.git] / cloud / resourcedirectory / src / main / java / org / iotivity / cloud / rdserver / resources / directory / PayloadManager.java
1 /*
2  * //******************************************************************
3  * //
4  * // Copyright 2016 Samsung Electronics All Rights Reserved.
5  * //
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  * //
8  * // Licensed under the Apache License, Version 2.0 (the "License");
9  * // you may not use this file except in compliance with the License.
10  * // You may obtain a copy of the License at
11  * //
12  * //      http://www.apache.org/licenses/LICENSE-2.0
13  * //
14  * // Unless required by applicable law or agreed to in writing, software
15  * // distributed under the License is distributed on an "AS IS" BASIS,
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * // See the License for the specific language governing permissions and
18  * // limitations under the License.
19  * //
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 package org.iotivity.cloud.rdserver.resources.directory;
23
24 import java.util.Arrays;
25 import java.util.HashMap;
26 import java.util.List;
27
28 import org.iotivity.cloud.rdserver.Constants;
29
30 /**
31  * 
32  * This class provides a set of APIs handle a payload
33  *
34  */
35 public class PayloadManager {
36
37     /** tag values of /oic/rd resource payload */
38     public List<String> pubTagKey       = Arrays.asList("di", "n", "lt");
39
40     /** links values of /oic/rd resource payload */
41     public List<String> pubLinkKey      = Arrays.asList("href", "rel", "rt",
42             "if", "p", "title", "anchor", "ins", "ttl", "type");
43
44     /** tag values of /oic/res resource payload */
45     public List<String> discoverTagKey  = Arrays.asList("di", "n");
46
47     /** links values of /oic/res resource payload */
48     public List<String> discoverLinkKey = Arrays.asList("href", "rt", "if",
49             "p");
50
51     /**
52      * API for setting data of payload
53      * 
54      * @param payload
55      *            payload data
56      * @param keyType
57      *            key type
58      * @return data included keys of keyType
59      */
60     public HashMap<String, Object> setPayloadData(
61             HashMap<String, Object> payload, List<String> keyType) {
62
63         HashMap<String, Object> data = new HashMap<String, Object>();
64
65         for (String key : keyType) {
66             Object value = payload.get(key);
67             if (value != null) {
68                 data.put(key, value);
69             }
70         }
71         return data;
72     }
73
74     /**
75      * API for changing type of policy property to store in DB
76      * 
77      * @param payload
78      *            payload data
79      */
80     public void changePolicyTypeToStore(HashMap<String, Object> payload) {
81         Object policy = payload.get(Constants.POLICY);
82         if (policy != null) {
83             HashMap<String, Object> bm = (HashMap<String, Object>) policy;
84             payload.put(Constants.POLICY, (int) (bm.get(Constants.BITMAP)));
85         }
86     }
87
88     /**
89      * API for changing type of policy property to make a discovery response
90      * 
91      * @param payload
92      *            payload data
93      */
94     public void changePolicyTypeToDiscover(HashMap<String, Object> payload) {
95         Object policy = payload.get(Constants.POLICY);
96         if (policy != null) {
97             HashMap<Object, Object> bm = new HashMap<>();
98             bm.put(Constants.BITMAP, policy);
99             payload.put(Constants.POLICY, bm);
100         }
101     }
102
103 }