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