41b783cf1306d8b6ab5800de711d811b4d607ef2
[portal/sdk.git] /
1 /*
2  * ============LICENSE_START==========================================
3  * ONAP Portal SDK
4  * ===================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * ===================================================================
7  *
8  * Unless otherwise specified, all software contained herein is licensed
9  * under the Apache License, Version 2.0 (the "License");
10  * you may not use this software except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *             http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Unless otherwise specified, all documentation contained herein is licensed
22  * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
23  * you may not use this documentation except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *             https://creativecommons.org/licenses/by/4.0/
27  *
28  * Unless required by applicable law or agreed to in writing, documentation
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  *
34  * ============LICENSE_END============================================
35  *
36  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
37  */
38 package org.onap.portalapp.controller.sample;
39
40 import java.io.PrintWriter;
41 import java.util.List;
42
43 import javax.servlet.http.HttpServletRequest;
44 import javax.servlet.http.HttpServletResponse;
45
46 import org.json.JSONObject;
47 import org.onap.portalsdk.core.command.PostDroolsBean;
48 import org.onap.portalsdk.core.controller.RestrictedBaseController;
49 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
50 import org.onap.portalsdk.core.service.PostDroolsService;
51 import org.onap.portalsdk.core.web.support.JsonMessage;
52 import org.springframework.beans.factory.annotation.Autowired;
53 import org.springframework.stereotype.Controller;
54 import org.springframework.web.bind.annotation.RequestMapping;
55 import org.springframework.web.bind.annotation.RequestMethod;
56 import org.springframework.web.servlet.ModelAndView;
57
58 import com.fasterxml.jackson.databind.DeserializationFeature;
59 import com.fasterxml.jackson.databind.JsonNode;
60 import com.fasterxml.jackson.databind.ObjectMapper;
61
62 @Controller
63 @RequestMapping("/")
64 public class PostDroolsController extends RestrictedBaseController {
65
66         private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PostDroolsController.class);
67
68         @Autowired
69         private PostDroolsService postDroolsService;
70
71         @RequestMapping(value = { "/drools" }, method = RequestMethod.GET)
72         public ModelAndView drools(HttpServletRequest request) {
73                 return new ModelAndView(getViewName());
74         }
75
76         @RequestMapping(value = { "/getDrools" }, method = RequestMethod.GET)
77         public void getDrools(HttpServletRequest request, HttpServletResponse response) {
78                 // Map<String, Object> model = new HashMap<String, Object>();
79
80                 ObjectMapper mapper = new ObjectMapper();
81                 try {
82                         List<PostDroolsBean> beanList = postDroolsService.fetchDroolBeans();
83                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(beanList));
84                         JSONObject j = new JSONObject(msg);
85                         response.getWriter().write(j.toString());
86                 } catch (Exception e) {
87                         logger.error(EELFLoggerDelegate.errorLogger, "getDrools failed", e);
88                 }
89         }
90
91         @RequestMapping(value = { "/getDroolDetails" }, method = RequestMethod.GET)
92         public void getDroolDetails(HttpServletRequest request, HttpServletResponse response) {
93
94                 ObjectMapper mapper = new ObjectMapper();
95                 try {
96
97                         PostDroolsBean postDroolsBean = new PostDroolsBean();
98                         String selectedFile = request.getParameter("selectedFile");
99                         postDroolsBean.setDroolsFile(selectedFile);// sample populated
100                         // postDroolsBean.setSelectedRules("[\"NJ\",\"NY\",\"KY\"]");
101                         postDroolsBean.setClassName(postDroolsService.retrieveClass(selectedFile));
102
103                         JsonMessage msg = new JsonMessage(mapper.writeValueAsString(postDroolsBean));
104                         JSONObject j = new JSONObject(msg);
105                         response.getWriter().write(j.toString());
106
107                 } catch (Exception e) {
108                         logger.error(EELFLoggerDelegate.errorLogger, "getDroolDetails failed", e);
109                 }
110         }
111
112         @RequestMapping(value = { "/post_drools/execute" }, method = RequestMethod.POST)
113         public ModelAndView search(HttpServletRequest request, HttpServletResponse response) throws Exception {
114                 try {
115                         ObjectMapper mapper = new ObjectMapper();
116                         mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
117                         JsonNode root = mapper.readTree(request.getReader());
118                         PostDroolsBean postDroolsBean = mapper.readValue(root.get("postDroolsBean").toString(),
119                                         PostDroolsBean.class);
120
121                         String resultsString = postDroolsService.execute(postDroolsBean.getDroolsFile(),
122                                         postDroolsBean.getClassName(), postDroolsBean.getSelectedRules());
123
124                         response.setCharacterEncoding("UTF-8");
125                         response.setContentType("application / json");
126                         request.setCharacterEncoding("UTF-8");
127
128                         PrintWriter out = response.getWriter();
129                         // String responseString = mapper.writeValueAsString(resultsString);
130                         JSONObject j = new JSONObject("{resultsString: " + resultsString + "}");
131
132                         out.write(j.toString());
133                 } catch (Exception e) {
134                         logger.error(EELFLoggerDelegate.errorLogger, "search failed", e);
135                 }
136
137                 return null;
138         }
139
140 }