Initial OpenECOMP policy/engine commit
[policy/engine.git] / ecomp-sdk-app / src / main / java / org / openecomp / portalapp / controller / PostDroolsController.java
1 /*-
2  * ================================================================================
3  * eCOMP Portal SDK
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property
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  * ================================================================================
19  */
20 package org.openecomp.portalapp.controller;
21
22 import java.io.IOException;
23 import java.io.PrintWriter;
24 import java.util.List;
25
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.json.JSONObject;
30 import org.openecomp.portalsdk.core.command.PostDroolsBean;
31 import org.openecomp.portalsdk.core.controller.RestrictedBaseController;
32 import org.openecomp.portalsdk.core.service.PostDroolsService;
33 import org.openecomp.portalsdk.core.web.support.JsonMessage;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.stereotype.Controller;
36 import org.springframework.web.bind.annotation.RequestMapping;
37 import org.springframework.web.bind.annotation.RequestMethod;
38 import org.springframework.web.servlet.ModelAndView;
39
40 import com.fasterxml.jackson.core.JsonGenerationException;
41 import com.fasterxml.jackson.databind.DeserializationFeature;
42 import com.fasterxml.jackson.databind.JsonMappingException;
43 import com.fasterxml.jackson.databind.JsonNode;
44 import com.fasterxml.jackson.databind.ObjectMapper;
45
46 @Controller
47 @RequestMapping("/")
48 public class PostDroolsController extends RestrictedBaseController{
49
50         @Autowired
51         private PostDroolsService  postDroolsService;
52         
53         @RequestMapping(value = {"/drools" }, method = RequestMethod.GET)
54         public ModelAndView drools(HttpServletRequest request) {
55                 
56               return new ModelAndView(getViewName());           
57         }
58         
59         
60         @RequestMapping(value = {"/getDrools" }, method = RequestMethod.GET)
61         public void getDrools(HttpServletRequest request, HttpServletResponse response) {
62                  // Map<String, Object> model = new HashMap<String, Object>();
63         
64               ObjectMapper mapper = new ObjectMapper(); 
65                         try {
66                                 List<PostDroolsBean>  beanList = postDroolsService.fetchDroolBeans();
67                                 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(beanList));
68                                 JSONObject j = new JSONObject(msg);
69                                 response.getWriter().write(j.toString());
70                                 
71                         } catch (JsonGenerationException e) {
72                                 e.printStackTrace();
73                         } catch (JsonMappingException e) {
74                                 e.printStackTrace();
75                         } catch (IOException e) {
76                                 e.printStackTrace();
77                         } catch (Exception e) {
78                                 e.printStackTrace();
79                         }
80         }
81         
82         @RequestMapping(value = {"/getDroolDetails" }, method = RequestMethod.GET)
83         public void getDroolDetails(HttpServletRequest request, HttpServletResponse response) {
84                 
85               ObjectMapper mapper = new ObjectMapper(); 
86                         try {
87                                 
88                                 PostDroolsBean postDroolsBean = new PostDroolsBean();
89                                 String selectedFile = request.getParameter("selectedFile");
90                                 postDroolsBean.setDroolsFile(selectedFile);//sample populated
91                                 //postDroolsBean.setSelectedRules("[\"NJ\",\"NY\",\"KY\"]");
92                                 postDroolsBean.setClassName(postDroolsService.retrieveClass(selectedFile));
93                                 
94                                 JsonMessage msg = new JsonMessage(mapper.writeValueAsString(postDroolsBean));
95                                 JSONObject j = new JSONObject(msg);
96                                 response.getWriter().write(j.toString());
97                                 
98                         } catch (JsonGenerationException e) {
99                                 e.printStackTrace();
100                         } catch (JsonMappingException e) {
101                                 e.printStackTrace();
102                         } catch (IOException e) {
103                                 e.printStackTrace();
104                         } catch (Exception e) {
105                                 e.printStackTrace();
106                         }
107         }
108     
109         @RequestMapping(value = {"/post_drools/execute" }, method = RequestMethod.POST)
110     public ModelAndView search(HttpServletRequest request, 
111                         HttpServletResponse response) throws Exception {
112         try {
113                         ObjectMapper mapper = new ObjectMapper();
114                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
115                         JsonNode root = mapper.readTree(request.getReader());
116                         PostDroolsBean postDroolsBean = mapper.readValue(root.get("postDroolsBean").toString(), PostDroolsBean.class);
117                         
118                         String resultsString = postDroolsService.execute(postDroolsBean.getDroolsFile(), postDroolsBean.getClassName(), postDroolsBean.getSelectedRules());
119                             
120                         response.setCharacterEncoding("UTF-8");
121                         response.setContentType("application / json");
122                         request.setCharacterEncoding("UTF-8");
123
124                         PrintWriter out = response.getWriter();
125                         //String responseString = mapper.writeValueAsString(resultsString);
126                         JSONObject j = new JSONObject("{resultsString: "+resultsString+"}");
127                         
128                         out.write(j.toString());
129                 } catch (Exception e) {
130                         // TODO Auto-generated catch block
131                         e.printStackTrace();
132                 }
133                 
134                 return null;    
135     }
136         
137    
138 }