Merge "Fix critical sonar for ONAP-PAP-REST"
[policy/engine.git] / ONAP-PAP-REST / src / main / java / org / onap / policy / pap / xacml / rest / controller / BRMSDictionaryController.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pap.xacml.rest.controller;
22
23 import java.io.IOException;
24 import java.io.PrintWriter;
25 import java.io.StringWriter;
26 import java.io.UnsupportedEncodingException;
27 import java.nio.charset.StandardCharsets;
28 import java.util.Date;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32
33 import javax.servlet.http.HttpServletRequest;
34 import javax.servlet.http.HttpServletResponse;
35
36 import org.apache.commons.io.IOUtils;
37 import org.json.JSONObject;
38 import org.onap.policy.api.PEDependency;
39 import org.onap.policy.common.logging.flexlogger.FlexLogger;
40 import org.onap.policy.common.logging.flexlogger.Logger;
41 import org.onap.policy.pap.xacml.rest.util.JsonMessage;
42 import org.onap.policy.rest.dao.CommonClassDao;
43 import org.onap.policy.rest.jpa.BRMSController;
44 import org.onap.policy.rest.jpa.BRMSDependency;
45 import org.onap.policy.rest.jpa.BRMSParamTemplate;
46 import org.onap.policy.rest.jpa.UserInfo;
47 import org.onap.policy.utils.PolicyUtils;
48 import org.onap.policy.xacml.api.XACMLErrorConstants;
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.http.MediaType;
51 import org.springframework.stereotype.Controller;
52 import org.springframework.web.bind.annotation.RequestMapping;
53 import org.springframework.web.servlet.ModelAndView;
54
55 import com.fasterxml.jackson.databind.DeserializationFeature;
56 import com.fasterxml.jackson.databind.JsonNode;
57 import com.fasterxml.jackson.databind.ObjectMapper;
58
59
60 @Controller
61 public class BRMSDictionaryController{
62         
63         private static final Logger LOGGER  = FlexLogger.getLogger(BRMSDictionaryController.class);
64
65         
66         private static CommonClassDao commonClassDao;
67         
68         @Autowired
69         public BRMSDictionaryController(CommonClassDao commonClassDao){
70                 BRMSDictionaryController.commonClassDao = commonClassDao;
71         }
72         
73         public BRMSDictionaryController() {}
74
75         private String rule;
76         
77         public UserInfo getUserInfo(String loginId){
78                 UserInfo name = (UserInfo) commonClassDao.getEntityItem(UserInfo.class, "userLoginId", loginId);
79                 return name;    
80         }
81
82         @RequestMapping(value={"/get_BRMSParamDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
83         public void getBRMSParamDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){
84                 try{
85                         Map<String, Object> model = new HashMap<>();
86                         ObjectMapper mapper = new ObjectMapper();
87                         model.put("brmsParamDictionaryDatas", mapper.writeValueAsString(commonClassDao.getDataByColumn(BRMSParamTemplate.class, "ruleName")));
88                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
89                         JSONObject j = new JSONObject(msg);
90                         response.getWriter().write(j.toString());
91                 }
92                 catch (Exception e){
93                          LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
94                 }
95         }
96         
97         @RequestMapping(value={"/get_BRMSParamData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
98         public void getBRMSParamDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
99                 try{
100                         Map<String, Object> model = new HashMap<>();
101                         ObjectMapper mapper = new ObjectMapper();
102                         model.put("brmsParamDictionaryDatas", mapper.writeValueAsString(commonClassDao.getData(BRMSParamTemplate.class)));
103                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
104                         JSONObject j = new JSONObject(msg);
105             response.addHeader("successMapKey", "success"); 
106             response.addHeader("operation", "getDictionary");
107                         response.getWriter().write(j.toString());
108                 }
109                 catch (Exception e){
110                         LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
111                         response.setStatus(HttpServletResponse.SC_BAD_REQUEST);                             
112                         response.addHeader("error", "dictionaryDBQuery");
113                 }
114         }
115         
116         @RequestMapping(value={"/brms_dictionary/set_BRMSParamData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
117         public void SetRuleData(HttpServletRequest request, HttpServletResponse response) throws IOException{
118                 StringWriter writer = new StringWriter();
119                 IOUtils.copy(request.getInputStream() , writer, StandardCharsets.UTF_8);
120                 String cleanStreamBoundary =  writer.toString().replaceFirst("------(.*)(?s).*octet-stream", "");
121                 rule = cleanStreamBoundary.substring(0, cleanStreamBoundary.lastIndexOf("end")+4);
122         }
123         
124         @RequestMapping(value={"/brms_dictionary/save_BRMSParam"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
125         public ModelAndView saveBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException {
126                 try {
127                         boolean duplicateflag = false;
128             boolean fromAPI = false;
129             if (request.getParameter("apiflag")!=null && request.getParameter("apiflag").equalsIgnoreCase("api")) {
130                 fromAPI = true;
131             }
132                         ObjectMapper mapper = new ObjectMapper();
133                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
134                         JsonNode root = mapper.readTree(request.getReader());
135                         
136             BRMSParamTemplate bRMSParamTemplateData;
137             String userId = null;
138             if(fromAPI) {
139                 bRMSParamTemplateData = (BRMSParamTemplate)mapper.readValue(root.get("dictionaryFields").toString(), BRMSParamTemplate.class);
140                 userId = "API";
141                 
142                 //check if update operation or create, get id for data to be updated and update attributeData
143                 if (request.getParameter("operation").equals("update")) {
144                         List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(bRMSParamTemplateData.getRuleName(), "ruleName", BRMSParamTemplate.class);
145                         int id = 0;
146                         BRMSParamTemplate data = (BRMSParamTemplate) duplicateData.get(0);
147                         id = data.getId();
148                         bRMSParamTemplateData.setId(id);
149                         bRMSParamTemplateData.setUserCreatedBy(this.getUserInfo(userId));
150                 }
151             } else {
152                 bRMSParamTemplateData = (BRMSParamTemplate)mapper.readValue(root.get("brmsParamDictionaryData").toString(), BRMSParamTemplate.class);
153                 userId = root.get("userid").textValue();
154             }
155             
156                         bRMSParamTemplateData.setRule(rule);
157                         if(bRMSParamTemplateData.getId() == 0){
158                                 List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(bRMSParamTemplateData.getRuleName(), "ruleName", BRMSParamTemplate.class);
159                                 if(!duplicateData.isEmpty()){
160                                         duplicateflag = true;
161                                 }else{
162                                         bRMSParamTemplateData.setUserCreatedBy(this.getUserInfo(userId));
163                                         commonClassDao.save(bRMSParamTemplateData);
164                                 }       
165                         }else{
166                                 commonClassDao.update(bRMSParamTemplateData); 
167                         } 
168                         response.setCharacterEncoding("UTF-8");
169                         response.setContentType("application / json");
170                         request.setCharacterEncoding("UTF-8");
171
172                         String responseString = "";
173                         if(duplicateflag){
174                                 responseString = "Duplicate";
175                         }else{
176                                 responseString = mapper.writeValueAsString(BRMSDictionaryController.commonClassDao.getData(BRMSParamTemplate.class));
177                         }
178             if(fromAPI) {
179                 if (responseString!=null && !responseString.equals("Duplicate")) {
180                     responseString = "Success";
181                 }
182                 ModelAndView result = new ModelAndView();
183                 result.setViewName(responseString);
184                 return result;
185             } else {
186                 response.setCharacterEncoding("UTF-8");
187                 response.setContentType("application / json");
188                 request.setCharacterEncoding("UTF-8");
189
190                 PrintWriter out = response.getWriter();
191                 JSONObject j = new JSONObject("{brmsParamDictionaryDatas: " + responseString + "}");
192                 out.write(j.toString());
193                 return null;
194             }
195                 }
196                 catch (Exception e){
197                         LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW , e);
198                         response.setCharacterEncoding("UTF-8");
199                         request.setCharacterEncoding("UTF-8");
200                         PrintWriter out = response.getWriter();
201                         out.write(e.getMessage());
202                 }
203                 return null;
204         }
205
206         @RequestMapping(value={"/brms_dictionary/remove_brmsParam"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
207         public ModelAndView removeBRMSParamDictionary(HttpServletRequest request, HttpServletResponse response)throws UnsupportedEncodingException, IOException {
208                 try{
209                         ObjectMapper mapper = new ObjectMapper();
210                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
211                         JsonNode root = mapper.readTree(request.getReader());
212                         BRMSParamTemplate bRMSParamTemplateData = (BRMSParamTemplate)mapper.readValue(root.get("data").toString(), BRMSParamTemplate.class);
213                         commonClassDao.delete(bRMSParamTemplateData);
214                         response.setCharacterEncoding("UTF-8");
215                         response.setContentType("application / json");
216                         request.setCharacterEncoding("UTF-8");
217
218                         PrintWriter out = response.getWriter();
219
220                         String responseString = mapper.writeValueAsString(BRMSDictionaryController.commonClassDao.getData(BRMSParamTemplate.class));
221                         JSONObject j = new JSONObject("{brmsParamDictionaryDatas: " + responseString + "}");
222                         out.write(j.toString());
223
224                         return null;
225                 }
226                 catch (Exception e){
227                          LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
228                         response.setCharacterEncoding("UTF-8");
229                         request.setCharacterEncoding("UTF-8");
230                         PrintWriter out = response.getWriter();
231                         out.write(e.getMessage());
232                 }
233                 return null;
234         }
235         
236     @RequestMapping(value={"/get_BRMSDependencyDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
237     public void getBRMSDependencyDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){
238         try{
239             Map<String, Object> model = new HashMap<>();
240             ObjectMapper mapper = new ObjectMapper();
241             model.put("brmsDependencyDictionaryDatas", mapper.writeValueAsString(commonClassDao.getDataByColumn(BRMSDependency.class, "dependencyName")));
242             JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
243             JSONObject j = new JSONObject(msg);
244             response.getWriter().write(j.toString());
245         }
246         catch (Exception e){
247             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
248         }
249     }
250     
251     @RequestMapping(value={"/get_BRMSDependencyData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
252     public void getBRMSDependencyDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
253         try{
254             Map<String, Object> model = new HashMap<>();
255             ObjectMapper mapper = new ObjectMapper();
256             model.put("brmsDependencyDictionaryDatas", mapper.writeValueAsString(commonClassDao.getData(BRMSDependency.class)));
257             JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
258             JSONObject j = new JSONObject(msg);
259             response.addHeader("successMapKey", "success"); 
260             response.addHeader("operation", "getDictionary");
261             response.getWriter().write(j.toString());
262         }
263         catch (Exception e){
264             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
265             response.setStatus(HttpServletResponse.SC_BAD_REQUEST);                             
266             response.addHeader("error", "dictionaryDBQuery");
267         }
268     }
269     
270     @RequestMapping(value={"/brms_dictionary/save_BRMSDependencyData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
271     public ModelAndView saveBRMSDependencyDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException {
272         try {
273             boolean duplicateflag = false;
274             LOGGER.debug("DictionaryController:  saveBRMSDependencyDictionary() is called");
275             
276             boolean fromAPI = false;
277             if (request.getParameter("apiflag")!=null && request.getParameter("apiflag").equalsIgnoreCase("api")) {
278                 fromAPI = true;
279             }
280             
281             ObjectMapper mapper = new ObjectMapper();
282             mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
283             JsonNode root = mapper.readTree(request.getReader());
284             
285             BRMSDependency brmsDependency;
286             String userId = null;
287             if (fromAPI) {
288                 brmsDependency = (BRMSDependency)mapper.readValue(root.get("dictionaryFields").toString(), BRMSDependency.class);
289                 userId = "API";
290                 
291                 //check if update operation or create, get id for data to be updated
292                 if (request.getParameter("operation").equals("update")) {
293                         List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(brmsDependency.getDependencyName(), "dependencyName", BRMSDependency.class);
294                         int id = 0;
295                         BRMSDependency data = (BRMSDependency) duplicateData.get(0);
296                         id = data.getId();
297                         brmsDependency.setId(id);
298                         brmsDependency.setUserCreatedBy(this.getUserInfo(userId));
299                 }
300             } else {
301                 brmsDependency = (BRMSDependency)mapper.readValue(root.get("brmsDependencyDictionaryData").toString(), BRMSDependency.class);
302                 userId = root.get("userid").textValue();
303             }
304             
305             LOGGER.audit("the userId from the onap portal is: " + userId);
306             String responseString = null;
307             
308             if(brmsDependency.getDependency()!=null && !brmsDependency.getDependency().trim().equals("")){
309                 PEDependency dependency = null;
310                 try{
311                     dependency = PolicyUtils.jsonStringToObject(brmsDependency.getDependency(), PEDependency.class);
312                 }catch(Exception e){
313                     LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS PEDependency Dictionary : " + brmsDependency.getDependency(),e);
314                 }
315                 if(dependency==null){
316                     responseString = "Error";
317                 }else{
318                     if(brmsDependency.getId() == 0){
319                         List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(brmsDependency.getDependencyName(), "dependencyName", BRMSDependency.class);
320                         if(!duplicateData.isEmpty()){
321                             duplicateflag = true;
322                         }else{
323                             brmsDependency.setUserCreatedBy(getUserInfo(userId));
324                             brmsDependency.setUserModifiedBy(getUserInfo(userId));
325                             LOGGER.audit("DictionaryController:  got the user info now about to call Save() method on brmsDependencydao");
326                             commonClassDao.save(brmsDependency);
327                         }
328                     }else{
329                         brmsDependency.setUserModifiedBy(this.getUserInfo(userId));
330                         brmsDependency.setModifiedDate(new Date());
331                         commonClassDao.update(brmsDependency); 
332                     }
333                     if(duplicateflag) {
334                         responseString = "Duplicate";
335                     } else {
336                         responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSDependency.class));
337                     }
338                 }
339             }
340             if (fromAPI) {
341                 if (responseString!=null && !responseString.equals("Duplicate") && !responseString.equals("Error")) {
342                     responseString = "Success";
343                 }
344                 ModelAndView result = new ModelAndView();
345                 result.setViewName(responseString);
346                 return result;
347             } else {
348                 response.setCharacterEncoding("UTF-8");
349                 response.setContentType("application / json");
350                 request.setCharacterEncoding("UTF-8");
351                 PrintWriter out = response.getWriter();
352                 JSONObject j = new JSONObject("{brmsDependencyDictionaryDatas: " + responseString + "}");
353                 out.write(j.toString());
354  
355                 return null;
356             }
357         } catch (Exception e){
358             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
359             response.setCharacterEncoding("UTF-8");
360             request.setCharacterEncoding("UTF-8");
361             PrintWriter out = response.getWriter();
362             out.write(e.getMessage());
363         }
364         return null;
365     }
366  
367     @RequestMapping(value={"/brms_dictionary/remove_brmsDependency"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
368     public ModelAndView removeBRMSDependencyDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException {
369         try{
370             ObjectMapper mapper = new ObjectMapper();
371             mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
372             JsonNode root = mapper.readTree(request.getReader());
373             BRMSDependency brmsDependency = (BRMSDependency)mapper.readValue(root.get("data").toString(), BRMSDependency.class);
374             commonClassDao.delete(brmsDependency);
375             response.setCharacterEncoding("UTF-8");
376             response.setContentType("application / json");
377             request.setCharacterEncoding("UTF-8");
378             PrintWriter out = response.getWriter();
379             String responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSDependency.class));
380             JSONObject j = new JSONObject("{brmsDependencyDictionaryDatas: " + responseString + "}");
381             out.write(j.toString());
382             return null;
383         }
384         catch (Exception e){
385             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
386             response.setCharacterEncoding("UTF-8");
387             request.setCharacterEncoding("UTF-8");
388             PrintWriter out = response.getWriter();
389             out.write(e.getMessage());
390         }
391         return null;
392     }
393     
394     
395     @RequestMapping(value={"/get_BRMSControllerDataByName"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
396     public void getBRMSControllerDictionaryByNameEntityData(HttpServletRequest request, HttpServletResponse response){
397         try{
398             Map<String, Object> model = new HashMap<>();
399             ObjectMapper mapper = new ObjectMapper();
400             model.put("brmsControllerDictionaryDatas", mapper.writeValueAsString(commonClassDao.getDataByColumn(BRMSController.class, "controllerName")));
401             JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
402             JSONObject j = new JSONObject(msg);
403             response.getWriter().write(j.toString());
404         }
405         catch (Exception e){
406             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
407         }
408     }
409     
410     @RequestMapping(value={"/get_BRMSControllerData"}, method={org.springframework.web.bind.annotation.RequestMethod.GET} , produces=MediaType.APPLICATION_JSON_VALUE)
411     public void getBRMSControllerDictionaryEntityData(HttpServletRequest request, HttpServletResponse response){
412         try{
413             Map<String, Object> model = new HashMap<>();
414             ObjectMapper mapper = new ObjectMapper();
415             model.put("brmsControllerDictionaryDatas", mapper.writeValueAsString(commonClassDao.getData(BRMSController.class)));
416             JsonMessage msg = new JsonMessage(mapper.writeValueAsString(model));
417             JSONObject j = new JSONObject(msg);
418             response.addHeader("successMapKey", "success"); 
419             response.addHeader("operation", "getDictionary");
420             response.getWriter().write(j.toString());
421         }
422         catch (Exception e){
423             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
424             response.setStatus(HttpServletResponse.SC_BAD_REQUEST);                             
425             response.addHeader("error", "dictionaryDBQuery");
426         }
427     }
428     
429     @RequestMapping(value={"/brms_dictionary/save_BRMSControllerData"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
430     public ModelAndView saveBRMSControllerDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException{
431         try {
432             boolean duplicateflag = false;
433             LOGGER.debug("DictionaryController:  saveBRMSControllerDictionary() is called");
434             boolean fromAPI = false;
435             if (request.getParameter("apiflag")!=null && request.getParameter("apiflag").equalsIgnoreCase("api")) {
436                 fromAPI = true;
437             }
438             ObjectMapper mapper = new ObjectMapper();
439             mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
440             JsonNode root = mapper.readTree(request.getReader());
441             BRMSController brmsController;
442             String userId = null;
443             if (fromAPI) {
444                 brmsController = (BRMSController)mapper.readValue(root.get("dictionaryFields").toString(), BRMSController.class);
445                 userId = "API";
446                 //check if update operation or create, get id for data to be updated
447                 if (request.getParameter("operation").equals("update")) {
448                         List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(brmsController.getControllerName(), "controllerName", BRMSController.class);
449                         int id = 0;
450                         BRMSController data = (BRMSController) duplicateData.get(0);
451                         id = data.getId();
452                         brmsController.setId(id);
453                         brmsController.setUserCreatedBy(this.getUserInfo(userId));
454                 }
455             } else {
456                 brmsController = (BRMSController)mapper.readValue(root.get("brmsControllerDictionaryData").toString(), BRMSController.class);
457                 userId = root.get("userid").textValue();
458             }
459             LOGGER.audit("the userId from the onap portal is: " + userId);
460             String responseString = null;
461             if(brmsController.getController()!=null && !brmsController.getController().trim().equals("")){
462                 PEDependency dependency = null;
463                 try{
464                     dependency = PolicyUtils.jsonStringToObject(brmsController.getController(), PEDependency.class);
465                 }catch(Exception e){
466                     LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + "wrong data given for BRMS Controller Dictionary : " + brmsController.getController(),e);
467                 }
468                 if(dependency==null){
469                     responseString = "Error";
470                 }else{
471                     if(brmsController.getId() == 0){
472                         List<Object> duplicateData =  commonClassDao.checkDuplicateEntry(brmsController.getControllerName(), "controllerName", BRMSController.class);
473                         if(!duplicateData.isEmpty()){
474                             duplicateflag = true;
475                         }else{
476                             brmsController.setUserCreatedBy(getUserInfo(userId));
477                             brmsController.setUserModifiedBy(getUserInfo(userId));
478                             LOGGER.audit("DictionaryController:  got the user info now about to call Save() method on brmsControllerdao");
479                             commonClassDao.save(brmsController);
480                         }
481                     }else{
482                         brmsController.setUserModifiedBy(this.getUserInfo(userId));
483                         brmsController.setModifiedDate(new Date());
484                         commonClassDao.update(brmsController); 
485                     }
486                     if(duplicateflag) {
487                         responseString = "Duplicate";
488                     } else {
489                         responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSController.class));
490                     }
491                 }
492             }
493             if (fromAPI) {
494                 if (responseString!=null && !responseString.equals("Duplicate") && !responseString.equals("Error")) {
495                     responseString = "Success";
496                 }
497                 ModelAndView result = new ModelAndView();
498                 result.setViewName(responseString);
499                 return result;
500             } else {
501                 response.setCharacterEncoding("UTF-8");
502                 response.setContentType("application / json");
503                 request.setCharacterEncoding("UTF-8");
504                 PrintWriter out = response.getWriter();
505                 JSONObject j = new JSONObject("{brmsControllerDictionaryDatas: " + responseString + "}");
506                 out.write(j.toString());
507                 return null;
508             }
509         } catch (Exception e){
510             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
511             response.setCharacterEncoding("UTF-8");
512             request.setCharacterEncoding("UTF-8");
513             PrintWriter out = response.getWriter();
514             out.write(e.getMessage());
515         }
516         return null;
517     }
518  
519     @RequestMapping(value={"/brms_dictionary/remove_brmsController"}, method={org.springframework.web.bind.annotation.RequestMethod.POST})
520     public ModelAndView removeBRMSControllerDictionary(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException, IOException{
521         try{
522             ObjectMapper mapper = new ObjectMapper();
523             mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
524             JsonNode root = mapper.readTree(request.getReader());
525             BRMSController brmsController = (BRMSController)mapper.readValue(root.get("data").toString(), BRMSController.class);
526             commonClassDao.delete(brmsController);
527             response.setCharacterEncoding("UTF-8");
528             response.setContentType("application / json");
529             request.setCharacterEncoding("UTF-8");
530             PrintWriter out = response.getWriter();
531             String responseString = mapper.writeValueAsString(commonClassDao.getData(BRMSController.class));
532             JSONObject j = new JSONObject("{brmsControllerDictionaryDatas: " + responseString + "}");
533             out.write(j.toString());
534             return null;
535         }
536         catch (Exception e){
537             LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e);
538             response.setCharacterEncoding("UTF-8");
539             request.setCharacterEncoding("UTF-8");
540             PrintWriter out = response.getWriter();
541             out.write(e.getMessage());
542         }
543         return null;
544     }
545     
546     public BRMSDependency getDependencyDataByID(String dependencyName){
547         return (BRMSDependency) commonClassDao.getEntityItem(BRMSDependency.class, "dependencyName", dependencyName);
548     }
549     
550     public BRMSController getControllerDataByID(String controllerName){
551         return (BRMSController) commonClassDao.getEntityItem(BRMSController.class, "controllerName", controllerName);
552     }
553         
554 }